import java.applet.*; import java.awt.*; import java.net.*; import javax.swing.*; import javax.vecmath.*; import javax.media.j3d.*; import com.sun.j3d.utils.universe.*; import com.sun.j3d.utils.geometry.*; import com.sun.j3d.utils.image.TextureLoader; public class Uppg3c extends JApplet{ private SimpleUniverse su; private Canvas3D canvas3D; private URL imURL; public void init(){ this.setSize(640, 480); this.getContentPane().setLayout(new BorderLayout()); canvas3D = new Canvas3D(null); this.getContentPane().add("Center",canvas3D); //Skapa ett universum med en BranchGraph su = new SimpleUniverse(canvas3D); su.getViewingPlatform().setNominalViewingTransform(); su.addBranchGraph(makeBranchGraph()); }//init BranchGroup makeBranchGraph(){ BranchGroup bg = new BranchGroup(); TransformGroup tg = new TransformGroup(); //Tillåt uppdateringar under runtime tg.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE); bg.addChild(tg); tg.addChild(makeCone()); //Skapa ett sfärisk påverkbart område BoundingSphere bounds = new BoundingSphere( new Point3d(0.0, 0.0, 0.0), 100.0); RotationInterpolator ri = new RotationInterpolator(new Alpha(-1, 7000), tg); ri.setSchedulingBounds(bounds); Transform3D rotor = new Transform3D(); rotor.rotX(Math.PI/4.0F); ri.setTransformAxis(rotor); tg.addChild(ri); return bg; }//makeBranchGraph //skapa konen public Cone makeCone() { Appearance app = new Appearance(); ColoringAttributes ca = new ColoringAttributes(); //anger färgen ca.setColor(new Color3f(Color.YELLOW)); //koppla ihop färgattributet med app app.setColoringAttributes(ca); Cone conan = new Cone(0.25f, 1.25f, 0, 30, 30, app); return conan; } public Sphere makeTellus(){ Appearance app = new Appearance(); try{ imURL = new URL(getCodeBase(), "2a1.jpg"); }catch(Exception murle){} //Ladda in ytmaterialet TextureLoader tl = new TextureLoader(imURL, new String("RGB"), this); app.setTexture(tl.getTexture()); //Skapa en glob Sphere tellus = new Sphere(0.75f, 50, app); return tellus; }//makeTellus }//Uppg3c