📄 jtest3d.java
字号:
/* * To change this template, choose Tools | Templates * and open the template in the editor. */package javatest3d;import com.sun.j3d.utils.behaviors.vp.OrbitBehavior;import com.sun.j3d.utils.geometry.Text2D;import com.sun.j3d.utils.universe.SimpleUniverse;import com.sun.j3d.utils.universe.ViewingPlatform;import java.applet.Applet;import java.awt.BorderLayout;import java.awt.GraphicsConfiguration;import javax.media.j3d.Appearance;import javax.media.j3d.Background;import javax.media.j3d.BoundingSphere;import javax.media.j3d.BranchGroup;import javax.media.j3d.Canvas3D;import javax.media.j3d.LineArray;import javax.media.j3d.PointArray;import javax.media.j3d.PointAttributes;import javax.media.j3d.Shape3D;import javax.media.j3d.Transform3D;import javax.media.j3d.TransformGroup;import javax.vecmath.Color3f;import javax.vecmath.Point3d;import javax.vecmath.Point3f;import javax.vecmath.Vector3d;/** * * @author Administrator */public class JTest3D extends Applet{ public JTest3D() { //new ein neu Layout setLayout(new BorderLayout()); GraphicsConfiguration config= SimpleUniverse.getPreferredConfiguration(); Canvas3D canvas3D=new Canvas3D(config); add("Center",canvas3D); BranchGroup scene=createSceneGraph(); //SimpleUniverse ist ein Conveniece Utility Class. SimpleUniverse simpleU=new SimpleUniverse(canvas3D); //Die kann die ViewPlatform in die Scene zeigen . simpleU.getViewingPlatform().setNominalViewingTransform(); //Mausnavigation (rotate und translate) OrbitBehavior orbit= new OrbitBehavior(canvas3D,OrbitBehavior.REVERSE_ALL| OrbitBehavior.STOP_ZOOM); //Grenzen festlegen BoundingSphere bounds= new BoundingSphere(new Point3d(0.0,0.0,0.0),100.0); //Dem Behaviordie Ganzen Uebergeben orbit.setSchedulingBounds(bounds); //Den Kleinsten Rotationsradius festlegen orbit.setMinRadius(1.5); //Neu text und Punkte erstellen BranchGroup textbranchgroup = erzeugeText(); BranchGroup createpoint= createPoint(); //ViewingPlatform erzeugen ViewingPlatform viewingPlatform=simpleU.getViewingPlatform(); //OrbitBehavior zuweisen viewingPlatform.setViewPlatformBehavior(orbit); //In Scene einfuegen ,einfuegen ,einfuegen. simpleU.addBranchGraph(scene); simpleU.addBranchGraph(textbranchgroup); simpleU.addBranchGraph(createpoint); }public BranchGroup createSceneGraph(){// Background einstellen BranchGroup objRoot=new BranchGroup(); objRoot.addChild(createGeometry()); Background backg=new Background(0.9f,0.9f,0.4f); backg.setApplicationBounds(new BoundingSphere()); objRoot.addChild(backg); return objRoot;}//贴图片。。。很有用//fuer Bild einfuegen...// public BranchGroup createGeometry()// {// BranchGroup notebookBG=new BranchGroup(); // } public BranchGroup createGeometry(){ //create ein Root von dem BranchGraphic BranchGroup axisBG=new BranchGroup(); Color3f red=new Color3f(1.0f,0.0f,0.0f); Color3f blue=new Color3f(0.0f,0.0f,1.0f); Color3f yellow=new Color3f(1.0f,1.0f,0.0f); LineArray a=new LineArray(8,LineArray.COORDINATES); //axisBG.addChild(new Shape3D(a)); //erste Linie a.setCoordinate(0, new Point3f(0.0f,0.0f,0.0f));//-0.5f,-0.35f,0.0f a.setCoordinate(1, new Point3f(0.7f,0.0f,0.0f)); //zweite Linie a.setCoordinate(2, new Point3f(0.0f,0.0f,0.0f)); a.setCoordinate(3, new Point3f(0.0f, 0.7f,0.0f)); //3.Line a.setCoordinate(4, new Point3f(0.0f,0.0f,0.0f)); a.setCoordinate(5, new Point3f(0.0f,0.f,0.7f)); // a.setColor(0, yellow);// a.setColor(1, yellow);// a.setColor(2, yellow);// a.setColor(3, yellow);// a.setColor(4, yellow);// a.setColor(5, yellow); //转换角度 视角 Transform3D rotation_x=new Transform3D(); Transform3D rotation_y=new Transform3D(); rotation_x.rotX(Math.PI/4.0d); rotation_y.rotY(Math.PI/5.0d); rotation_x.mul(rotation_y); //Transform Gruppenknoten erzeugt TransformGroup objRotation=new TransformGroup(rotation_x); axisBG.addChild(objRotation); axisBG.addChild(new Shape3D(a)); axisBG.compile(); return axisBG;} public BranchGroup erzeugeText() { //erzeugt den obersten Gruppenknoten des Objekts BranchGroup objRoot=new BranchGroup(); Transform3D translation=new Transform3D(); translation.setTranslation(new Vector3d(0.6,0.05,0.05));//(-0.6,0.1,0.42)); TransformGroup objTranslation=new TransformGroup(translation); objRoot.addChild(objTranslation); objTranslation.addChild(new Text2D("X(nm)", new Color3f(0f,1f,1f), "Helvetica", 18, 0)); //fuer 0 punkte zeigen Transform3D translation1=new Transform3D(); translation1.setTranslation(new Vector3d(0.0,0.0,0.0)); TransformGroup objTranslation1=new TransformGroup(translation1); objRoot.addChild(objTranslation1); objTranslation1.addChild(new Text2D("0", new Color3f(0f,1f,1f), "Helvetica", 16, 0)); //fuer Y zeigen Transform3D translation2=new Transform3D(); translation2.setTranslation(new Vector3d(0.05,0.6,0.05)); TransformGroup objTranslation2=new TransformGroup(translation2); objRoot.addChild(objTranslation2); objTranslation2.addChild(new Text2D("Y(nm)", new Color3f(0f,1f,1f), "Helvetica", 18, 0));//fuer Z Transform3D translation3=new Transform3D(); translation3.setTranslation(new Vector3d(0.05,0.05,0.6)); TransformGroup objTranslation3=new TransformGroup(translation3); objRoot.addChild(objTranslation3); objTranslation3.addChild(new Text2D("Z(nm)", new Color3f(0f,1f,1f), "Helvetica", 18, 0)); objRoot.compile(); return objRoot; } public float vert[]={0.3f,0.4f,0.1f, 0.5f,0.5f,0.2f, 0.3f,0.1f,0.2f, 0.3f,0.2f,0.3f, 0.5f,0.3f,0.3f, 0.5f,0.1f,0.2f,}; public BranchGroup createPoint(){ BranchGroup objRoot=new BranchGroup(); BoundingSphere bounds=new BoundingSphere( new Point3d(0.0,0.0,0.0),100.0); Color3f bgColor=new Color3f(1.0f,1.0f,1.0f); Background bg=new Background(bgColor); bg.setApplicationBounds(bounds); objRoot.addChild(bg); //定点坐标数组 float color[]={ 0.0f,0.5f,0.0f, 0.0f,0.5f,0.0f, 0.0f,0.3f,2.0f, 0.0f,0.0f,0.3f, 0.1f,0.2f,0.3f, 0.9f,0.9f,0.9f,}; Shape3D shape=new Shape3D(); PointArray point= new PointArray(6,PointArray.COORDINATES|PointArray.COLOR_3); point.setCoordinates(0, vert); point.setColor(0, color); PointAttributes pa=new PointAttributes(); pa.setPointSize(4.0f); pa.setPointAntialiasingEnable(true); Appearance app=new Appearance(); app.setPointAttributes(pa); shape.setGeometry(point); shape.setAppearance(app); objRoot.addChild(shape); objRoot.compile(); return objRoot; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -