diff options
author | kcr <kcr@28c7f869-5b4e-e670-f602-82bfaf57f300> | 2006-02-01 01:33:24 +0000 |
---|---|---|
committer | kcr <kcr@28c7f869-5b4e-e670-f602-82bfaf57f300> | 2006-02-01 01:33:24 +0000 |
commit | 39283191507259cb4dccba3441cdf16025179829 (patch) | |
tree | 29ad229325ab151a056d06fbe4c6f1fcd7b292d7 /src/GearTest/SpurGear.java | |
parent | 3d596b24b72677fbf264a22f3c0ff44aa9bb2baf (diff) |
Issue 206 : Example program cleanup
Item 4) Reorganized directory structure to make the examples a single project rather than a collection of independent apps.
. All example programs moved under src/classes, and all are now in a subpackage of org.jdesktop.j3d.examples.
. All resource files (geometry, images, audio) moved under src/resources
. ant script now exists only at top level
. Created netbeans project file for NetBeans IDE
Diffstat (limited to 'src/GearTest/SpurGear.java')
-rw-r--r-- | src/GearTest/SpurGear.java | 556 |
1 files changed, 0 insertions, 556 deletions
diff --git a/src/GearTest/SpurGear.java b/src/GearTest/SpurGear.java deleted file mode 100644 index 943d1e5..0000000 --- a/src/GearTest/SpurGear.java +++ /dev/null @@ -1,556 +0,0 @@ -/* - * $RCSfile$ - * - * Copyright (c) 2006 Sun Microsystems, Inc. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any - * kind. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND - * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY - * EXCLUDED. SUN MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL - * NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF - * USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS - * DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR - * ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, - * CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND - * REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR - * INABILITY TO USE THIS SOFTWARE, EVEN IF SUN HAS BEEN ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed, licensed or - * intended for use in the design, construction, operation or - * maintenance of any nuclear facility. - * - * $Revision$ - * $Date$ - * $State$ - */ - -import java.lang.Math.*; -import javax.media.j3d.*; -import javax.vecmath.*; - -public class SpurGear extends Gear { - - float toothTopAngleIncrement; - float toothDeclineAngleIncrement; - - float rootRadius; - float outsideRadius; - - //The angle subtended by the ascending or descending portion of a tooth - float circularToothEdgeAngle; - // The angle subtended by a flat (either a tooth top or a valley - // between teeth - float circularToothFlatAngle; - - /** - * internal constructor for SpurGear, used by subclasses to establish - * SpurGear's required state - * @return a new spur gear that contains sufficient information to - * continue building - * @param toothCount number of teeth - * @param pitchCircleRadius radius at center of teeth - * @param addendum distance from pitch circle to top of teeth - * @param dedendum distance from pitch circle to root of teeth - * @param toothToValleyAngleRatio the ratio of the angle subtended by the - * tooth to the angle subtended by the valley (must be <= .25) - */ - SpurGear(int toothCount, float pitchCircleRadius, - float addendum, float dedendum, float toothToValleyAngleRatio) { - - super(toothCount); - - // The angle about Z subtended by one tooth and its associated valley - circularPitchAngle = (float)(2.0 * Math.PI / (double)toothCount); - - // The angle subtended by a flat (either a tooth top or a valley - // between teeth - circularToothFlatAngle = circularPitchAngle * toothToValleyAngleRatio; - - //The angle subtended by the ascending or descending portion of a tooth - circularToothEdgeAngle = circularPitchAngle/2.0f - - circularToothFlatAngle; - - // Increment angles - toothTopAngleIncrement = circularToothEdgeAngle; - toothDeclineAngleIncrement - = toothTopAngleIncrement + circularToothFlatAngle; - toothValleyAngleIncrement - = toothDeclineAngleIncrement + circularToothEdgeAngle; - - // Differential angles for offsetting to the center of tooth's top - // and valley - toothTopCenterAngle - = toothTopAngleIncrement + circularToothFlatAngle/2.0f; - valleyCenterAngle - = toothValleyAngleIncrement + circularToothFlatAngle/2.0f; - - // Gear start differential angle. All gears are constructed with the - // center of a tooth at Z-axis angle = 0. - gearStartAngle = -1.0 * toothTopCenterAngle; - - // The radial distance to the root and top of the teeth, respectively - rootRadius = pitchCircleRadius - dedendum; - outsideRadius = pitchCircleRadius + addendum; - - // Allow this object to spin. etc. - this.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE); - } - - /** - * Construct a SpurGear; - * @return a new spur gear that conforms to the input paramters - * @param toothCount number of teeth - * @param pitchCircleRadius radius at center of teeth - * @param shaftRadius radius of hole at center - * @param addendum distance from pitch circle to top of teeth - * @param dedendum distance from pitch circle to root of teeth - * @param gearThickness thickness of the gear - */ - public SpurGear(int toothCount, float pitchCircleRadius, float shaftRadius, - float addendum, float dedendum, float gearThickness) { - this(toothCount, pitchCircleRadius, shaftRadius, addendum, dedendum, - gearThickness, gearThickness, 0.25f, null); - } - - /** - * Construct a SpurGear; - * @return a new spur gear that conforms to the input paramters - * @param toothCount number of teeth - * @param pitchCircleRadius radius at center of teeth - * @param shaftRadius radius of hole at center - * @param addendum distance from pitch circle to top of teeth - * @param dedendum distance from pitch circle to root of teeth - * @param gearThickness thickness of the gear - * @param look the gear's appearance - */ - public SpurGear(int toothCount, float pitchCircleRadius, float shaftRadius, - float addendum, float dedendum, float gearThickness, - Appearance look) { - this(toothCount, pitchCircleRadius, shaftRadius, addendum, dedendum, - gearThickness, gearThickness, 0.25f, look); - } - - /** - * Construct a SpurGear; - * @return a new spur gear that conforms to the input paramters - * @param toothCount number of teeth - * @param pitchCircleRadius radius at center of teeth - * @param shaftRadius radius of hole at center - * @param addendum distance from pitch circle to top of teeth - * @param dedendum distance from pitch circle to root of teeth - * @param gearThickness thickness of the gear - * @param toothTipThickness thickness of the tip of the tooth - * @param look the gear's appearance - */ - public SpurGear(int toothCount, float pitchCircleRadius, float shaftRadius, - float addendum, float dedendum, float gearThickness, - float toothTipThickness, Appearance look) { - this(toothCount, pitchCircleRadius, shaftRadius, addendum, dedendum, - gearThickness, toothTipThickness, 0.25f, look); - } - - /** - * Construct a SpurGear; - * @return a new spur gear that conforms to the input paramters - * @param toothCount number of teeth - * @param pitchCircleRadius radius at center of teeth - * @param shaftRadius radius of hole at center - * @param addendum distance from pitch circle to top of teeth - * @param dedendum distance from pitch circle to root of teeth - * @param gearThickness thickness of the gear - * @param toothTipThickness thickness of the tip of the tooth - * @param toothToValleyAngleRatio the ratio of the angle subtended by the - * tooth to the angle subtended by the valley (must be <= .25) - * @param look the gear's appearance object - */ - public SpurGear(int toothCount, float pitchCircleRadius, float shaftRadius, - float addendum, float dedendum, float gearThickness, - float toothTipThickness, float toothToValleyAngleRatio, - Appearance look) { - - this(toothCount, pitchCircleRadius, addendum, dedendum, - toothToValleyAngleRatio); - - // Generate the gear's body disks - addBodyDisks(shaftRadius, rootRadius, gearThickness, look); - - // Generate the gear's interior shaft - addCylinderSkins(shaftRadius, gearThickness, InwardNormals, look); - - // Generate the gear's teeth - addTeeth(pitchCircleRadius, rootRadius, - outsideRadius, gearThickness, toothTipThickness, - toothToValleyAngleRatio, look); - } - - /** - * Construct a SpurGear's teeth by adding the teeth shape nodes - * @param pitchCircleRadius radius at center of teeth - * @param rootRadius distance from pitch circle to top of teeth - * @param outsideRadius distance from pitch circle to root of teeth - * @param gearThickness thickness of the gear - * @param toothTipThickness thickness of the tip of the tooth - * @param toothToValleyAngleRatio the ratio of the angle subtended by the - * tooth to the angle subtended by the valley (must be <= .25) - * @param look the gear's appearance object - */ - void addTeeth(float pitchCircleRadius, float rootRadius, - float outsideRadius, float gearThickness, - float toothTipThickness, float toothToValleyAngleRatio, - Appearance look) { - int index; - Shape3D newShape; - - // Temporaries that store start angle for each portion of tooth facet - double toothStartAngle, toothTopStartAngle, - toothDeclineStartAngle, toothValleyStartAngle, - nextToothStartAngle; - - // The x and y coordinates at each point of a facet and at each - // point on the gear: at the shaft, the root of the teeth, and - // the outer point of the teeth - float xRoot0, yRoot0; - float xOuter1, yOuter1; - float xOuter2, yOuter2; - float xRoot3, yRoot3; - float xRoot4, yRoot4; - - // The z coordinates for the gear - final float frontZ = -0.5f * gearThickness; - final float rearZ = 0.5f * gearThickness; - - // The z coordinates for the tooth tip of the gear - final float toothTipFrontZ = -0.5f * toothTipThickness; - final float toothTipRearZ = 0.5f * toothTipThickness; - - int toothFacetVertexCount; // #(vertices) per tooth facet - int toothFacetCount; // #(facets) per tooth - int toothFaceTotalVertexCount; // #(vertices) in all teeth - int toothFaceStripCount[] = new int[toothCount]; - // per tooth vertex count - int topVertexCount; // #(vertices) for teeth tops - int topStripCount[] = new int[1]; // #(vertices) in strip/strip - - // Front and rear facing normals for the teeth faces - Vector3f frontToothNormal = new Vector3f(0.0f, 0.0f, -1.0f); - Vector3f rearToothNormal = new Vector3f(0.0f, 0.0f, 1.0f); - - // Normals for teeth tops up incline, tooth top, and down incline - Vector3f leftNormal = new Vector3f(-1.0f, 0.0f, 0.0f); - Vector3f rightNormal = new Vector3f(1.0f, 0.0f, 0.0f); - Vector3f outNormal = new Vector3f(1.0f, 0.0f, 0.0f); - Vector3f inNormal = new Vector3f(-1.0f, 0.0f, 0.0f); - - // Temporary variables for storing coordinates and vectors - Point3f coordinate = new Point3f(0.0f, 0.0f, 0.0f); - Point3f tempCoordinate1 = new Point3f(0.0f, 0.0f, 0.0f); - Point3f tempCoordinate2 = new Point3f(0.0f, 0.0f, 0.0f); - Point3f tempCoordinate3 = new Point3f(0.0f, 0.0f, 0.0f); - Vector3f tempVector1 = new Vector3f(0.0f, 0.0f, 0.0f); - Vector3f tempVector2 = new Vector3f(0.0f, 0.0f, 0.0f); - - /* Construct the gear's front facing teeth facets - * 0______2 - * / /\ - * / / \ - * / / \ - * //___________\ - * 1 3 - */ - toothFacetVertexCount = 4; - toothFaceTotalVertexCount = toothFacetVertexCount * toothCount; - for(int i = 0; i < toothCount; i++) - toothFaceStripCount[i] = toothFacetVertexCount; - - TriangleStripArray frontGearTeeth - = new TriangleStripArray(toothFaceTotalVertexCount, - GeometryArray.COORDINATES - | GeometryArray.NORMALS, - toothFaceStripCount); - - for(int count = 0; count < toothCount; count++) { - index = count * toothFacetVertexCount; - - toothStartAngle - = gearStartAngle + circularPitchAngle * (double)count; - toothTopStartAngle = toothStartAngle + toothTopAngleIncrement; - toothDeclineStartAngle - = toothStartAngle + toothDeclineAngleIncrement; - toothValleyStartAngle - = toothStartAngle + toothValleyAngleIncrement; - - xRoot0 = rootRadius * (float)Math.cos(toothStartAngle); - yRoot0 = rootRadius * (float)Math.sin(toothStartAngle); - xOuter1 = outsideRadius * (float)Math.cos(toothTopStartAngle); - yOuter1 = outsideRadius * (float)Math.sin(toothTopStartAngle); - xOuter2 = outsideRadius * (float)Math.cos(toothDeclineStartAngle); - yOuter2 = outsideRadius * (float)Math.sin(toothDeclineStartAngle); - xRoot3 = rootRadius * (float)Math.cos(toothValleyStartAngle); - yRoot3 = rootRadius * (float)Math.sin(toothValleyStartAngle); - - tempCoordinate1.set(xRoot0, yRoot0, frontZ); - tempCoordinate2.set(xRoot3, yRoot3, frontZ); - tempVector1.sub(tempCoordinate2, tempCoordinate1); - - tempCoordinate2.set(xOuter1, yOuter1, toothTipFrontZ); - tempVector2.sub(tempCoordinate2, tempCoordinate1); - - frontToothNormal.cross(tempVector1, tempVector2); - frontToothNormal.normalize(); - - coordinate.set(xOuter1, yOuter1, toothTipFrontZ); - frontGearTeeth.setCoordinate(index, coordinate); - frontGearTeeth.setNormal(index, frontToothNormal); - - coordinate.set(xRoot0, yRoot0, frontZ); - frontGearTeeth.setCoordinate(index + 1, coordinate); - frontGearTeeth.setNormal(index + 1, frontToothNormal); - - coordinate.set(xOuter2, yOuter2, toothTipFrontZ); - frontGearTeeth.setCoordinate(index + 2, coordinate); - frontGearTeeth.setNormal(index + 2, frontToothNormal); - - coordinate.set(xRoot3, yRoot3, frontZ); - frontGearTeeth.setCoordinate(index + 3, coordinate); - frontGearTeeth.setNormal(index + 3, frontToothNormal); - } - newShape = new Shape3D(frontGearTeeth, look); - this.addChild(newShape); - - /* Construct the gear's rear facing teeth facets (Using Quads) - * 1______2 - * / \ - * / \ - * / \ - * /____________\ - * 0 3 - */ - toothFacetVertexCount = 4; - toothFaceTotalVertexCount = toothFacetVertexCount * toothCount; - - QuadArray rearGearTeeth - = new QuadArray(toothCount * toothFacetVertexCount, - GeometryArray.COORDINATES - | GeometryArray.NORMALS); - - for(int count = 0; count < toothCount; count++) { - - index = count * toothFacetVertexCount; - toothStartAngle = - gearStartAngle + circularPitchAngle * (double)count; - toothTopStartAngle = toothStartAngle + toothTopAngleIncrement; - toothDeclineStartAngle - = toothStartAngle + toothDeclineAngleIncrement; - toothValleyStartAngle = toothStartAngle + toothValleyAngleIncrement; - - xRoot0 = rootRadius * (float)Math.cos(toothStartAngle); - yRoot0 = rootRadius * (float)Math.sin(toothStartAngle); - xOuter1 = outsideRadius * (float)Math.cos(toothTopStartAngle); - yOuter1 = outsideRadius * (float)Math.sin(toothTopStartAngle); - xOuter2 = outsideRadius * (float)Math.cos(toothDeclineStartAngle); - yOuter2 = outsideRadius * (float)Math.sin(toothDeclineStartAngle); - xRoot3 = rootRadius * (float)Math.cos(toothValleyStartAngle); - yRoot3 = rootRadius * (float)Math.sin(toothValleyStartAngle); - - tempCoordinate1.set(xRoot0, yRoot0, rearZ); - tempCoordinate2.set(xRoot3, yRoot3, rearZ); - tempVector1.sub(tempCoordinate2, tempCoordinate1); - tempCoordinate2.set(xOuter1, yOuter1, toothTipRearZ); - tempVector2.sub(tempCoordinate2, tempCoordinate1); - rearToothNormal.cross(tempVector2, tempVector1); - rearToothNormal.normalize(); - - coordinate.set(xRoot0, yRoot0, rearZ); - rearGearTeeth.setCoordinate(index, coordinate); - rearGearTeeth.setNormal(index, rearToothNormal); - - coordinate.set(xOuter1, yOuter1, toothTipRearZ); - rearGearTeeth.setCoordinate(index + 1, coordinate); - rearGearTeeth.setNormal(index + 1, rearToothNormal); - - coordinate.set(xOuter2, yOuter2, toothTipRearZ); - rearGearTeeth.setCoordinate(index + 2, coordinate); - rearGearTeeth.setNormal(index + 2, rearToothNormal); - - coordinate.set(xRoot3, yRoot3, rearZ); - rearGearTeeth.setCoordinate(index + 3, coordinate); - rearGearTeeth.setNormal(index + 3, rearToothNormal); - - } - newShape = new Shape3D(rearGearTeeth, look); - this.addChild(newShape); - - /* - * Construct the gear's top teeth faces (As seen from above) - * Root0 Outer1 Outer2 Root3 Root4 (RearZ) - * 0_______3 2_______5 4_______7 6_______9 - * |0 3| |4 7| |8 11| |12 15| - * | | | | | | | | - * | | | | | | | | - * |1_____2| |5_____6| |9____10| |13___14| - * 1 2 3 4 5 6 7 8 - * Root0 Outer1 Outer2 Root3 Root4 (FrontZ) - * - * Quad 0123 uses a left normal - * Quad 2345 uses an out normal - * Quad 4567 uses a right normal - * Quad 6789 uses an out normal - */ - topVertexCount = 8 * toothCount + 2; - topStripCount[0] = topVertexCount; - - toothFacetVertexCount = 4; - toothFacetCount = 4; - - QuadArray topGearTeeth - = new QuadArray(toothCount * toothFacetVertexCount - * toothFacetCount, - GeometryArray.COORDINATES - | GeometryArray.NORMALS); - - for(int count = 0; count < toothCount; count++) { - index = count * toothFacetCount * toothFacetVertexCount; - toothStartAngle = gearStartAngle + - circularPitchAngle * (double)count; - toothTopStartAngle = toothStartAngle + toothTopAngleIncrement; - toothDeclineStartAngle - = toothStartAngle + toothDeclineAngleIncrement; - toothValleyStartAngle - = toothStartAngle + toothValleyAngleIncrement; - nextToothStartAngle = toothStartAngle + circularPitchAngle; - - xRoot0 = rootRadius * (float)Math.cos(toothStartAngle); - yRoot0 = rootRadius * (float)Math.sin(toothStartAngle); - xOuter1 = outsideRadius * (float)Math.cos(toothTopStartAngle); - yOuter1 = outsideRadius * (float)Math.sin(toothTopStartAngle); - xOuter2 = outsideRadius * (float)Math.cos(toothDeclineStartAngle); - yOuter2 = outsideRadius * (float)Math.sin(toothDeclineStartAngle); - xRoot3 = rootRadius * (float)Math.cos(toothValleyStartAngle); - yRoot3 = rootRadius * (float)Math.sin(toothValleyStartAngle); - xRoot4 = rootRadius * (float)Math.cos(nextToothStartAngle); - yRoot4 = rootRadius * (float)Math.sin(nextToothStartAngle); - - // Compute normal for quad 1 - tempCoordinate1.set(xRoot0, yRoot0, frontZ); - tempCoordinate2.set(xOuter1, yOuter1, toothTipFrontZ); - tempVector1.sub(tempCoordinate2, tempCoordinate1); - leftNormal.cross(frontNormal, tempVector1); - leftNormal.normalize(); - - // Coordinate labeled 0 in the quad - coordinate.set(xRoot0, yRoot0, rearZ); - topGearTeeth.setCoordinate(index, coordinate); - topGearTeeth.setNormal(index, leftNormal); - - // Coordinate labeled 1 in the quad - coordinate.set(tempCoordinate1); - topGearTeeth.setCoordinate(index + 1, coordinate); - topGearTeeth.setNormal(index + 1, leftNormal); - - // Coordinate labeled 2 in the quad - topGearTeeth.setCoordinate(index + 2, tempCoordinate2); - topGearTeeth.setNormal(index + 2, leftNormal); - topGearTeeth.setCoordinate(index + 5, tempCoordinate2); - - // Coordinate labeled 3 in the quad - coordinate.set(xOuter1, yOuter1, toothTipRearZ); - topGearTeeth.setCoordinate(index + 3, coordinate); - topGearTeeth.setNormal(index + 3, leftNormal); - topGearTeeth.setCoordinate(index + 4, coordinate); - - // Compute normal for quad 2 - tempCoordinate1.set(xOuter1, yOuter1, toothTipFrontZ); - tempCoordinate2.set(xOuter2, yOuter2, toothTipFrontZ); - tempVector1.sub(tempCoordinate2, tempCoordinate1); - outNormal.cross(frontNormal, tempVector1); - outNormal.normalize(); - - topGearTeeth.setNormal(index + 4, outNormal); - topGearTeeth.setNormal(index + 5, outNormal); - - // Coordinate labeled 4 in the quad - topGearTeeth.setCoordinate(index + 6, tempCoordinate2); - topGearTeeth.setNormal(index + 6, outNormal); - topGearTeeth.setCoordinate(index + 9, tempCoordinate2); - - // Coordinate labeled 5 in the quad - coordinate.set(xOuter2, yOuter2, toothTipRearZ); - topGearTeeth.setCoordinate(index + 7, coordinate); - topGearTeeth.setNormal(index + 7, outNormal); - topGearTeeth.setCoordinate(index + 8, coordinate); - - // Compute normal for quad 3 - tempCoordinate1.set(xOuter2, yOuter2, toothTipFrontZ); - tempCoordinate2.set(xRoot3, yRoot3, frontZ); - tempVector1.sub(tempCoordinate2, tempCoordinate1); - rightNormal.cross(frontNormal, tempVector1); - rightNormal.normalize(); - - topGearTeeth.setNormal(index + 8, rightNormal); - topGearTeeth.setNormal(index + 9, rightNormal); - - // Coordinate labeled 7 in the quad - topGearTeeth.setCoordinate(index + 10, tempCoordinate2); - topGearTeeth.setNormal(index + 10, rightNormal); - topGearTeeth.setCoordinate(index + 13, tempCoordinate2); - - // Coordinate labeled 6 in the quad - coordinate.set(xRoot3, yRoot3, rearZ); - topGearTeeth.setCoordinate(index + 11, coordinate); - topGearTeeth.setNormal(index + 11, rightNormal); - topGearTeeth.setCoordinate(index + 12, coordinate); - - // Compute normal for quad 4 - tempCoordinate1.set(xRoot3, yRoot3, frontZ); - tempCoordinate2.set(xRoot4, yRoot4, frontZ); - tempVector1.sub(tempCoordinate2, tempCoordinate1); - outNormal.cross(frontNormal, tempVector1); - outNormal.normalize(); - - topGearTeeth.setNormal(index + 12, outNormal); - topGearTeeth.setNormal(index + 13, outNormal); - - // Coordinate labeled 9 in the quad - topGearTeeth.setCoordinate(index + 14, tempCoordinate2); - topGearTeeth.setNormal(index + 14, outNormal); - - // Coordinate labeled 8 in the quad - coordinate.set(xRoot4, yRoot4, rearZ); - topGearTeeth.setCoordinate(index + 15, coordinate); - topGearTeeth.setNormal(index + 15, outNormal); - - // Prepare for the loop by computing the new normal - toothTopStartAngle - = nextToothStartAngle + toothTopAngleIncrement; - xOuter1 = outsideRadius * (float)Math.cos(toothTopStartAngle); - yOuter1 = outsideRadius * (float)Math.sin(toothTopStartAngle); - - tempCoordinate1.set(xRoot4, yRoot4, toothTipFrontZ); - tempCoordinate2.set(xOuter1, yOuter1, toothTipFrontZ); - tempVector1.sub(tempCoordinate2, tempCoordinate1); - leftNormal.cross(frontNormal, tempVector1); - leftNormal.normalize(); - } - newShape = new Shape3D(topGearTeeth, look); - this.addChild(newShape); - } - -} |