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

📄 13000610297.txt

📁 用JAVA写的金字塔
💻 TXT
字号:
用Java3D写了一个金字塔 
用Java3D写了一个金字塔 

打开eclipose3.1,进入界面。点击File->new->class弹出对话框,写好你要建立的类文件名TestPyramid。 

然后写入代码: 

//1 引入我们要调用的包: 

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; 

//2. 现在我们正式开动了。先写一个我们要展现的金字塔。 

public class TestPyramid extends Applet { 

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

{ 

 IndexedTriangleArray pyGeom = 

   new IndexedTriangleArray(5, GeometryArray.COORDINATES 

           | GeometryArray.COLOR_3 

           , 18); 

// 这是用数组来创建一连串三角形的函数。其中5是我们创建模型所需的顶点数 

// 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); 

  

 // 让Java3D预先优化 

 objRoot.compile(); 

 return objRoot;  

}          

//4. 在初始化函数中配置Applet显示 

public TestPyramid() 

{ 

 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); 

}       

//5. 最后。 

public static void main(String[] args) 

{ 

 Frame frame = new MainFrame(new TestPyramid(),256,256); 

}                 

} 
====================================================

⌨️ 快捷键说明

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