ThreeD.java revision 0
0N/A * Copyright 1995-2006 Sun Microsystems, Inc. All Rights Reserved. 0N/A * Redistribution and use in source and binary forms, with or without 0N/A * modification, are permitted provided that the following conditions 0N/A * - Redistributions of source code must retain the above copyright 0N/A * notice, this list of conditions and the following disclaimer. 0N/A * - Redistributions in binary form must reproduce the above copyright 0N/A * notice, this list of conditions and the following disclaimer in the 0N/A * documentation and/or other materials provided with the distribution. 0N/A * - Neither the name of Sun Microsystems nor the names of its 0N/A * contributors may be used to endorse or promote products derived 0N/A * from this software without specific prior written permission. 0N/A * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS 0N/A * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 0N/A * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 0N/A * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 0N/A * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 0N/A * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 0N/A * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 0N/A * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 0N/A * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 0N/A * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 0N/A * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 0N/A/* A set of classes to parse, represent and display 3D wireframe models 0N/A represented in Wavefront .obj format. */ 0N/A/** The representation of a 3D model */ 0N/A /** Create a 3D model by parsing an input stream */ 0N/A double x =
0, y =
0, z =
0;
0N/A /** Add a vertex to this model */ 0N/A /** Add a line from vertex p1 to vertex p2 */ 0N/A /** Transform all the points in this model */ 0N/A /* Quick Sort implementation 0N/A /* Arbitrarily establishing partition element as the midpoint of 0N/A // loop through the array until indices cross 0N/A /* find the first element that is greater than or equal to 0N/A * the partionElement starting from the leftIndex. 0N/A /* find an element that is smaller than or equal to 0N/A * the partionElement starting from the rightIndex. 0N/A // if the indexes have not crossed, swap 0N/A /* If the right index has not reached the left side of array 0N/A * must now sort the left partition. 0N/A /* If the left index has not reached the right side of array 0N/A * must now sort the right partition. 0N/A private void swap(
int a[],
int i,
int j)
0N/A /** eliminate duplicate lines */ 0N/A /** Paint this model to a graphics context. It uses the matrix associated 0N/A with this model to map from model space to screen space. 0N/A The next version of the browser should have double buffering, 0N/A which will make this *much* nicer */ 0N/A for (
int i =
0; i <
16; i++) {
0N/A for (
int i =
0; i <
lim; i++) {
0N/A int p1 = ((T >>
16) &
0xFFFF) *
3;
0N/A int p2 = (T &
0xFFFF) *
3;
0N/A /** Find the bounding box of this model */ 0N/A for (
int i =
nvert *
3; (i -=
3) >
0;) {
0N/A/** An applet to put a 3D model into a page */ 0N/A// private synchronized void waitPainted() { 0N/A return "Title: ThreeD \nAuthor: James Gosling? \nAn applet to put a 3D model into a page.";
0N/A {
"model",
"path string",
"The path to the model to be displayed."},
0N/A {
"scale",
"float",
"The scale of the model. Default is 1."}