3847N/A * Copyright (c) 1995, 2011, Oracle and/or its affiliates. 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. 2362N/A * - Neither the name of Oracle 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. 4378N/A * This source code is provided to illustrate the usage of a given feature 4378N/A * or technique and has been deliberately simplified. Additional steps 4378N/A * required for a production-quality application, such as security checks, 4378N/A * input validation and proper error handling, might not be present in 3847N/A/* A set of classes to parse, represent and display 3D wireframe models 3847N/Arepresented in Wavefront .obj format. */ 0N/A/** The representation of a 3D model */ 0N/A /** Create a 3D model by parsing an input stream */ 3847N/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 */ 3847N/A /* Quick Sort implementation 3847N/A /* Arbitrarily establishing partition element as the midpoint of 3847N/A // loop through the array until indices cross 3847N/A /* find the first element that is greater than or equal to 3847N/A * the partionElement starting from the leftIndex. 3847N/A /* find an element that is smaller than or equal to 3847N/A * the partionElement starting from the rightIndex. 3847N/A // if the indexes have not crossed, swap 3847N/A /* If the right index has not reached the left side of array 3847N/A * must now sort the left partition. 3847N/A /* If the left index has not reached the right side of array 3847N/A * must now sort the right partition. 0N/A /** eliminate duplicate lines */ 0N/A /** Paint this model to a graphics context. It uses the matrix associated 3847N/A with this model to map from model space to screen space. 3847N/A The next version of the browser should have double buffering, 3847N/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 */ 3847N/A // fall back to default scalefudge = 1 3847N/A return "Title: ThreeD \nAuthor: James Gosling? \n" 3847N/A +
"An applet to put a 3D model into a page.";
3847N/A {
"model",
"path string",
"The path to the model to be displayed." },
3847N/A {
"scale",
"float",
"The scale of the model. Default is 1." }