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

📄 test_pyramid.java

📁 Java3d实现三维立体图像显示的一个实例
💻 JAVA
字号:
import java.applet.Applet; 
import java.awt.BorderLayout; 
import java.awt.Frame; 
import java.awt.GraphicsConfiguration; 
import com.sun.j3d.utils.applet.MainFrame; 
import com.sun.j3d.utils.geometry.ColorCube; 
import com.sun.j3d.utils.universe.*; 
import com.sun.j3d.utils.behaviors.mouse.*; 
import javax.media.j3d.*; import javax.vecmath.*; 
import java.awt.event.*; import java.util.Enumeration; 
public class Test_Pyramid extends Applet { 

Shape3D createPyramid() //要创建的金字塔是Shape3D类型。 

{
 IndexedTriangleArray pyGeom =
   new IndexedTriangleArray(5, GeometryArray.COORDINATES 
           | GeometryArray.COLOR_3
           , 18); 
// 用数组来创建一连串三角形的函数。

// GeometryArray.COORDINATES 是用坐标点来构建面。 

// 18 是来构建这个金字塔所用到的索引点数。 

// 定义5个顶点 

 pyGeom.setCoordinate(0,new Point3f(  0.0f,  0.7f,  0.0f));
 pyGeom.setCoordinate(1,new Point3f( -0.4f,  0.0f, -0.4f));
 pyGeom.setCoordinate(2,new Point3f( -0.4f, 0.0f,  0.4f));
 pyGeom.setCoordinate(3,new Point3f(  0.4f,  0.0f,  0.4f));
 pyGeom.setCoordinate(4,new Point3f(  0.4f,  0.0f, -0.4f));
 
// 构建第一个三角形面。 

 pyGeom.setCoordinateIndex(0,0);
 pyGeom.setCoordinateIndex(1,1);
 pyGeom.setCoordinateIndex(2,2);
 
 pyGeom.setCoordinateIndex(3,0);
 pyGeom.setCoordinateIndex(4,2);
 pyGeom.setCoordinateIndex(5,3);
 
 pyGeom.setCoordinateIndex(6,0);
 pyGeom.setCoordinateIndex(7,3);
 pyGeom.setCoordinateIndex(8,4);
 
 pyGeom.setCoordinateIndex(9,0);
 pyGeom.setCoordinateIndex(10,4);
 pyGeom.setCoordinateIndex(11,1);
 
 pyGeom.setCoordinateIndex(12,1);
 pyGeom.setCoordinateIndex(13,4);
 pyGeom.setCoordinateIndex(14,2);
 
 pyGeom.setCoordinateIndex(15,4);
 pyGeom.setCoordinateIndex(16,3);
 pyGeom.setCoordinateIndex(17,2);
 
 Color3f c = new Color3f(0.6f,0.5f,0.55f);
 pyGeom.setColor(0,c);
 pyGeom.setColor(1,c);
 pyGeom.setColor(2,c);
 pyGeom.setColor(3,c);
 pyGeom.setColor(4,c);
 
 Shape3D pyramid = new Shape3D(pyGeom);
 return pyramid;
}    
//3.创建视景根节点 

public BranchGroup createSceneGraph()
{
 //创建视景根节点
 
 BranchGroup objRoot = new BranchGroup();
 TransformGroup objRotate = new TransformGroup();
 objRotate.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
 objRotate.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
 
 objRoot.addChild(objRotate);
 objRotate.addChild(createPyramid());
 
 MouseRotate myMouseRotate = new MouseRotate();
 myMouseRotate.setTransformGroup(objRotate);
 myMouseRotate.setSchedulingBounds(new BoundingSphere());
 objRoot.addChild(myMouseRotate);
 

 objRoot.compile();
 return objRoot;  
}          
//在初始化函数中配置Applet显示 

public Test_Pyramid()
{
 setLayout(new BorderLayout());
 GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration();
 
 Canvas3D canvas3D = new Canvas3D(config);
 add("Center",canvas3D);
 
 BranchGroup scene = createSceneGraph();
 
 //SimpleUniverse是一个方便的工具类
 SimpleUniverse simpleU = new SimpleUniverse(canvas3D);
 simpleU.getViewingPlatform().setNominalViewingTransform();
 
 simpleU.addBranchGraph(scene);
}       


public static void main(String[] args)
{
 Frame frame = new MainFrame(new Test_Pyramid(),256,256);
}                 
} 

⌨️ 快捷键说明

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