⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 transformorder.java

📁 Java 多媒体技术(附源码) Java 3D API JavaSound API 各种格式的多媒体数据文件 JBuilder开发环境
💻 JAVA
字号:
package transformorder;import java.applet.Applet;import java.awt.BorderLayout;import java.awt.event.*;import java.awt.*;import java.awt.GraphicsConfiguration;import com.sun.j3d.utils.applet.MainFrame;import com.sun.j3d.utils.geometry.*;import com.sun.j3d.utils.universe.*;import javax.media.j3d.*;import javax.vecmath.*;import com.sun.j3d.utils.behaviors.vp.*;/** * <p>Title: 操纵三维形体行为演示</p> * <p>Description: 通过鼠标操作显示三维形体</p> * <p>Copyright: Copyright (c) 2004</p> * <p>Company: 中国农业大学计算机系</p> * @author 彭波 * @version 1.0 */public class TransformOrder extends Applet {    boolean isStandalone = false;    public static final int X =1;    public static final int Y =2;    public static final int Z =3;    public static final int ROTATE_TOP    =4;    public static final int TRANSLATE_TOP =5;    public static final int NO_TRANSFORM  =6;    private SimpleUniverse universe ;    private BranchGroup scene;    private Canvas3D canvas;    private BoundingSphere bounds =            new BoundingSphere(new Point3d(0.0, 0.0, 0.0), 1000.0);    private Appearance red = new Appearance();    private Appearance yellow = new Appearance();    private Appearance purple = new Appearance();    Transform3D rotate = new Transform3D();    Transform3D translate = new Transform3D();    public void setupView() {        OrbitBehavior orbit = new OrbitBehavior(canvas,                OrbitBehavior.REVERSE_ALL|OrbitBehavior.STOP_ZOOM);        orbit.setSchedulingBounds(bounds);	ViewingPlatform viewingPlatform = universe.getViewingPlatform();        viewingPlatform.setNominalViewingTransform();        viewingPlatform.setViewPlatformBehavior(orbit);	}    Group rotateOnTop(){          Group root=new Group();          TransformGroup objRotate = new TransformGroup(rotate);          TransformGroup objTranslate = new TransformGroup(translate);          Cone redCone=              new Cone(.3f, 0.7f, Primitive.GENERATE_NORMALS, red);          root.addChild(objRotate);          objRotate.addChild(objTranslate);          objTranslate.addChild(redCone);          return root;    }    Group translateOnTop(){          Group root=new Group();          TransformGroup objRotate = new TransformGroup(rotate);          TransformGroup objTranslate = new TransformGroup(translate);          Cone yellowCone=              new Cone(.3f, 0.7f, Primitive.GENERATE_NORMALS, yellow);          root.addChild(objTranslate);          objTranslate.addChild(objRotate);          objRotate.addChild(yellowCone); //tack on yellow cone          return root;    }    Group noTransform(){          Cone purpleCone=              new Cone(.3f, 0.7f, Primitive.GENERATE_NORMALS, purple);          return purpleCone;    }    public TransformGroup createAxis(int type) {	Appearance appearance = new Appearance();	Material lightingProps = new Material();        Transform3D t = new Transform3D();	switch (type) {	   case Z:              t.rotX(Math.toRadians(90.0));	      lightingProps.setAmbientColor(1.0f,0.0f,0.0f);	   break;	   case Y:	      lightingProps.setAmbientColor(0.0f,1.0f,0.0f);	   break;	   case X:              t.rotZ(Math.toRadians(90.0));	      lightingProps.setAmbientColor(0.0f,0.0f,1.0f);	   break;	   default:	   break;	}	appearance.setMaterial(lightingProps);        TransformGroup objTrans = new TransformGroup(t);	objTrans.addChild( new Cylinder(.03f,2.5f,Primitive.GENERATE_NORMALS,appearance));	return objTrans;    }    public BranchGroup createSceneGraph() {	BranchGroup objRoot = new BranchGroup();        rotate.rotX(Math.toRadians(45.0));	translate.setTranslation(new Vector3f(0.0f,2.0f,1.0f));        Material redProps = new Material();        redProps.setAmbientColor(1.0f,0.0f,0.0f);	red.setMaterial(redProps);        Material yellowProps = new Material();        yellowProps.setAmbientColor(1.0f,1.0f,0.0f);	yellow.setMaterial(yellowProps);        Material purpleProps = new Material();        purpleProps.setAmbientColor(0.8f,0.0f,0.8f);	purple.setMaterial(purpleProps);	objRoot.addChild(createAxis(X));	objRoot.addChild(createAxis(Y));	objRoot.addChild(createAxis(Z));	objRoot.addChild(noTransform());	objRoot.addChild(rotateOnTop());	objRoot.addChild(translateOnTop());	Color3f lightColor = new Color3f(.3f,.3f,.3f);        AmbientLight ambientLight= new AmbientLight(lightColor);        ambientLight.setInfluencingBounds(bounds);        objRoot.addChild(ambientLight);        DirectionalLight directionalLight = new DirectionalLight();        directionalLight.setColor(lightColor);        directionalLight.setInfluencingBounds(bounds);        objRoot.addChild(directionalLight);	return objRoot;    }    public TransformOrder() {    }    public void init() {	BranchGroup scene = createSceneGraph();	setLayout(new BorderLayout());        GraphicsConfiguration config =           SimpleUniverse.getPreferredConfiguration();	canvas = new Canvas3D(config);	add("Center", canvas);	universe = new SimpleUniverse(canvas);	setupView();	universe.addBranchGraph(scene);    }    public void destroy() {	universe.removeAllLocales();    }  //Main method  public static void main(String[] args) {    TransformOrder applet = new TransformOrder();    applet.isStandalone = true;    Frame frame;    frame = new Frame() {      protected void processWindowEvent(WindowEvent e) {        super.processWindowEvent(e);        if (e.getID() == WindowEvent.WINDOW_CLOSING) {          System.exit(0);        }      }      public synchronized void setTitle(String title) {        super.setTitle(title);        enableEvents(AWTEvent.WINDOW_EVENT_MASK);      }    };    frame.setTitle("操纵三维形体行为演示");    frame.add(applet, BorderLayout.CENTER);    applet.init();    applet.start();    frame.setSize(400,400);    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();    frame.setLocation((d.width - frame.getSize().width) / 2, (d.height - frame.getSize().height) / 2);    frame.setVisible(true);  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -