import java.applet.Applet;
import java.awt.*;
import javax.media.j3d.*;
import javax.vecmath.*;
import com.sun.j3d.utils.universe.*;
import com.sun.j3d.utils.geometry.*;
import com.sun.j3d.utils.applet.MainFrame;
import com.sun.j3d.utils.behaviors.vp.OrbitBehavior;

public class Buggy extends Applet {

        BranchGroup myBranch = null;
        Canvas3D myCanvas = null;

        public Buggy() {
                setLayout(new BorderLayout());

                myCanvas = new Canvas3D(null);
                add("Center",myCanvas);

                SimpleUniverse u = new SimpleUniverse(myCanvas);
                u.getViewingPlatform().setNominalViewingTransform();
                transformView(u.getViewingPlatform());

                myBranch = makeBranch();
                myBranch.compile();
                u.addBranchGraph(myBranch);
        }

        private BranchGroup makeBranch() {

                BranchGroup root = new BranchGroup();
                ColorCube cube = new ColorCube(0.5f);
                root.addChild(cube);
                return root;
        }

        private void transformView(ViewingPlatform view) {

                OrbitBehavior myOrbit = new OrbitBehavior(myCanvas,OrbitBehavior.REVERSE_ALL);
                BoundingSphere bounds = new BoundingSphere(new Point3d(0.0, 0.0, 0.0), 100.0);
                myOrbit.setSchedulingBounds(bounds);
                myOrbit.setRotationCenter(new Point3d(0.0,0.0,0.0));
                view.setViewPlatformBehavior(myOrbit);

                Transform3D newTransform = new Transform3D();
                newTransform.setTranslation(new Vector3d(0.5f,0.5f,7f));
                ((TransformGroup) view.getViewPlatformTransform()).setTransform(newTransform);
        }

        public static void main(String[] Args) {
                new MainFrame(new Buggy(),640,480);
        }
}

