package Experiment1; import com.sun.j3d.utils.universe.*; import com.sun.j3d.utils.applet.MainFrame; import com.sun.j3d.utils.geometry.*; import java.applet.Applet; import java.awt.BorderLayout; import java.awt.Frame; import java.awt.event.*; import java.awt.GraphicsConfiguration; import javax.media.j3d.*; import javax.vecmath.*; //import javax.swing.JApplet; public class X2 extends Applet{ public X2 (){ setLayout(new BorderLayout()); GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration(); Canvas3D canvas = new Canvas3D(config); add("Center", canvas); BranchGroup scene = createSceneGraph(); scene.compile(); SimpleUniverse su = new SimpleUniverse(canvas); su.getViewingPlatform().setNominalViewingTransform(); su.addBranchGraph(scene); } public BranchGroup createSceneGraph() { BranchGroup objRoot = new BranchGroup(); TransformGroup objSpin = new TransformGroup(); objSpin.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE); objRoot.addChild(objSpin); objSpin.addChild(new Shape3D(yoyoGeometry())); Alpha rotationAlpha = new Alpha(-1, 4000); RotationInterpolator rotator = new RotationInterpolator(rotationAlpha, objSpin); BoundingSphere bounds = new BoundingSphere(); rotator.setSchedulingBounds(bounds); objSpin.addChild(rotator); return objRoot; } private Geometry yoyoGeometry(){ TriangleFanArray tfa; int N = 21; int totalN = 4*(N+1); Point3f coords [] = new Point3f[totalN]; Color3f colors [] = new Color3f[totalN]; Color3f red = new Color3f(1.0f, 0.0f, 0.0f); Color3f yellow = new Color3f(0.7f, 0.5f, 0.0f); int stripCounts[] = {N+1,N+1,N+1,N+1}; float r = 0.6f; float w = 0.4f; int n; double a; float x, y; coords[0*(N+1)] = new Point3f (0.0f, 0.0f, w); coords[1*(N+1)] = new Point3f (0.0f, 0.0f, 0.0f); coords[2*(N+1)] = new Point3f (0.0f, 0.0f, 0.0f); coords[3*(N+1)] = new Point3f (0.0f, 0.0f, -w); colors[0*(N+1)] = red; colors[1*(N+1)] = yellow; colors[2*(N+1)] = yellow; colors[3*(N+1)] = red; for(a=0, n=0;n