import java.awt.*; import java.net.*; 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 Tellus extends Frame { public static void main(String[] args) { new Tellus(); } public Tellus() { Canvas3D canvas3D = new Canvas3D((new GraphicsConfigTemplate3D()).getBestConfiguration(GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices()[0].getConfigurations())); SimpleUniverse su = new SimpleUniverse(canvas3D); su.getViewingPlatform().setNominalViewingTransform(); su.addBranchGraph(makeBranchGraph()); setLayout(new BorderLayout()); add(canvas3D, BorderLayout.CENTER); setSize(256,256); show(); } private BranchGroup makeBranchGraph() { BranchGroup bg = new BranchGroup(); TransformGroup tg = new TransformGroup(); tg.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE); bg.addChild(tg); tg.addChild(makeTellus()); 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); tg.addChild(ri); return bg; } private Sphere makeTellus() { Appearance app = new Appearance(); URL url = getClass().getClassLoader().getResource("tellus.jpg"); TextureLoader tl = new TextureLoader(url, "RGB", this); app.setTexture(tl.getTexture()); Sphere tellus = new Sphere(0.75f, 50, app); return tellus; } }