пытаюсь начуится двигать крфические обекты. В ниже преведенном примере я пытюсь создать конус и заставит его вокруг оси Y вращяться, но почему-то ничего не получается, может кто поможет, подскажет где ошибка? а вот и код | Код | package de.unkis;
import javax.media.j3d.*; import javax.swing.JButton; import javax.swing.JFrame; import javax.vecmath.*;
import sun.awt.windows.ThemeReader;
import java.awt.*; import java.awt.event.*; import com.sun.j3d.utils.geometry.*; import com.sun.j3d.utils.universe.*;
import com.sun.j3d.utils.behaviors.vp.*; import com.sun.org.apache.xalan.internal.xsltc.dom.Axis;
public class SnowMan extends JFrame implements ActionListener{ public Canvas3D myCanvas3D; //The canvas to be drawn on. public JButton myButton; //The exit button. SimpleUniverse simpUniv;
public SnowMan() throws HeadlessException { this.setDefaultCloseOperation(EXIT_ON_CLOSE); myButton = new JButton("Exit"); myCanvas3D = new Canvas3D(SimpleUniverse.getPreferredConfiguration()); //The objects to be shown on the canvas are created in this method. BranchGroup theScene = createSceneGraph(); //Put everything together in a simple universe: //The canvas to be drawn on simpUniv = new SimpleUniverse(myCanvas3D);
//Move the viewer to a point so that the origin can be seen. simpUniv.getViewingPlatform().setNominalViewingTransform(); //Add the objects in the scene. simpUniv.addBranchGraph(theScene); Mouse(); } private void Mouse() { //This allows us to use the mouse to move the viewing platform. //Note that we have to import com.sun.j3d.utils.behaviors.vp.*; OrbitBehavior ob = new OrbitBehavior(myCanvas3D); ob.setSchedulingBounds(new BoundingSphere(new Point3d(0.0,0.0,0.0),100.0)); simpUniv.getViewingPlatform().setViewPlatformBehavior(ob); } private BranchGroup createSceneGraph() { Appearance blueApp = new Appearance(); setToMyDefaultAppearance(blueApp,new Color3f(0.517f,0.69f,1f)); Appearance redApp = new Appearance(); setToMyDefaultAppearance(redApp,new Color3f(1,0,0f)); float r=0.05f; Cone k1 = new Cone(0.02f,2*r,redApp); Transform3D tfPlatform = new Transform3D(); tfPlatform.rotX(Math.PI/2); TransformGroup tgPlatform = new TransformGroup(tfPlatform); tgPlatform.addChild(k1);
BranchGroup theScene = new BranchGroup(); TransformGroup tg4 = Tranlation(0,0,radius1,tgPlatform); /////////////////////////////////////////////////////////////// Transform3D HeadRotationAxis = new Transform3D(); //HeadRotationAxis.rotZ(0.4*Math.PI); int timeStart = 2000; int noStartRotations = 2; int timeSlowRotation = 1500; Alpha HeadRotationAlpha = new Alpha(-1,Alpha.INCREASING_ENABLE,timeStart,0,timeSlowRotation,0,0,0,0,0); RotationInterpolator HeadRotationStart = new RotationInterpolator(HeadRotationAlpha,tg4, HeadRotationAxis,0,(float)Math.PI*2); BoundingSphere bounds = new BoundingSphere(new Point3d(0.0,0.0,0.0),100.0); HeadRotationStart.setSchedulingBounds(bounds); ///////////////////////////////////////////////////////////// theScene.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE); theScene.addChild(HeadRotationStart); theScene.compile(); return theScene; } private TransformGroup Tranlation(float x, float y, float z,Node figure){ Transform3D myTr = new Transform3D(); myTr.setTranslation(new Vector3f(x,y,z)); TransformGroup myTRG = new TransformGroup(myTr); myTRG.addChild(figure); return myTRG; } public static void setToMyDefaultAppearance(Appearance app, Color3f col) { app.setMaterial(new Material(col,col,col,col,150.0f)); }
public void actionPerformed(ActionEvent arg0) { dispose(); System.exit(0); }
}
|
и MainApp.java | Код | package de.unkis;
import java.awt.BorderLayout;
public class MainApp {
public static void main(String[] args) { SnowMan mySnowMan = new SnowMan(); mySnowMan.setTitle("Aufgabe 5"); mySnowMan.setSize(700,700); mySnowMan.setLayout(new BorderLayout()); mySnowMan.add("Center", mySnowMan.myCanvas3D); mySnowMan.add("South",mySnowMan.myButton); mySnowMan.myButton.addActionListener(mySnowMan); mySnowMan.setVisible(true); } }
|
Помогите найти ошибку, зарания благодарен.
--------------------
www.unkis.com
|