00000007.htm
来自「水木清华BBS」· HTM 代码 · 共 528 行 · 第 1/3 页
HTM
528 行
0.8f,-0.8f,0.0f, <BR> }; <BR> <BR> float color[] = { <BR> 0.0f,0.5f,1.0f, <BR> 0.5f,0.0f,1.0f, <BR> 0.0f,0.8f,2.0f, <BR> 1.0f,0.0f,0.3f, <BR> 0.0f,1.0f,0.3f, <BR> 0.3f,0.8f,0.0f, <BR> }; <BR> Shape3D shape = new Shape3D(); <BR> PointArray point = new PointArray(6, PointArray.COORDINATES <BR> |PointArray.COLOR_3); <BR> point.setCoordinates(0,vert); <BR> point.setColors(0,color); <BR> PointAttributes pa = new PointAttributes(); <BR> pa.setPointSize(20.0f); <BR> <BR> pa.setPointAntialiasingEnable(true); <BR> //不加这一行,点的显示效果为正方形 <BR> //加了这一行,点的显示效果为圆形 <BR> <BR> Appearance ap = new Appearance(); <BR> ap.setPointAttributes(pa); <BR> <BR> shape.setGeometry(point); <BR> shape.setAppearance(ap); <BR> objRoot.addChild(shape); <BR> objRoot.compile(); <BR> return objRoot; <BR> } <BR> <BR> public Point2() { <BR> setLayout(new BorderLayout()); <BR> Canvas3D c = new Canvas3D(null); <BR> add("Center", c); <BR> BranchGroup scene = createSceneGraph(); <BR> SimpleUniverse u = new SimpleUniverse(c); <BR> u.getViewingPlatform().setNominalViewingTransform(); <BR> u.addBranchGraph(scene); <BR> } <BR> <BR> public static void main(String[] args) { <BR> new MainFrame(new Point2(), 400,400); <BR> } <BR>} <BR> <BR>//end of Point2.java <BR> <BR>四. IndexedPointArray编写的点 <BR> 下面的程序中,我们用IndexedPointArray生成了四个点。 <BR> <BR>//Point3.java <BR> <BR>import java.applet.Applet; <BR>import java.awt.BorderLayout; <BR>import com.sun.j3d.utils.applet.MainFrame; <BR>import com.sun.j3d.utils.universe.*; <BR>import javax.media.j3d.*; <BR>import javax.vecmath.*; <BR> <BR>public class Point3 extends Applet { <BR> <BR> public BranchGroup createSceneGraph() { <BR> BranchGroup objRoot = new BranchGroup(); <BR> <BR> float vert[] = { <BR> .8f, 0.8f,0.0f, <BR> -0.8f, 0.8f,0.0f, <BR> 0.5f, 0.0f,0.0f, <BR> -0.5f, 0.0f,0.0f, <BR> -0.8f,-0.8f,0.0f, <BR> 0.8f,-0.8f,0.0f, <BR> }; <BR> <BR> float color[] = { <BR> 0.0f,0.5f,1.0f, <BR> 0.5f,0.0f,1.0f, <BR> 0.0f,0.8f,2.0f, <BR> 1.0f,0.0f,0.3f, <BR> 0.0f,1.0f,0.3f, <BR> 0.3f,0.8f,0.0f, <BR> }; <BR> Shape3D shape = new Shape3D(); <BR> <BR> int[] index={ 0 , 2 , 3 , 4 }; <BR> int VertexCount=4; <BR> IndexedPointArray point = new IndexedPointArray(6, <BR> IndexedPointArray.COORDINATES| <BR> IndexedPointArray.COLOR_3, <BR> VertexCount); <BR> point.setCoordinates(0,vert); <BR> point.setColors(0,color); <BR> point.setCoordinateIndices(0,index); <BR> point.setColorIndices(0,index); <BR> PointAttributes pa = new PointAttributes(); <BR> pa.setPointSize(20.0f); <BR> pa.setPointAntialiasingEnable(true); <BR> Appearance ap = new Appearance(); <BR> ap.setPointAttributes(pa); <BR> <BR> shape.setGeometry(point); <BR> shape.setAppearance(ap); <BR> objRoot.addChild(shape); <BR> objRoot.compile(); <BR> return objRoot; <BR> } <BR> <BR> public Point3() { <BR> setLayout(new BorderLayout()); <BR> Canvas3D c = new Canvas3D(null); <BR> add("Center", c); <BR> BranchGroup scene = createSceneGraph(); <BR> SimpleUniverse u = new SimpleUniverse(c); <BR> u.getViewingPlatform().setNominalViewingTransform(); <BR> u.addBranchGraph(scene); <BR> } <BR> <BR> public static void main(String[] args) { <BR> new MainFrame(new Point3(), 400,400); <BR> } <BR>} <BR> <BR>//end of Point3.java <BR> <BR> 通过上面的程序,我们来看一下IndexedPointArray <BR>的应用方法。 <BR> 在定义一个point实例后,我们要给出顶点坐标数组及 <BR>对应各个顶点的颜色数组,按下标给出我们的顶点及颜色 <BR>的具体选择方案。从而得以从众多的点中,选择特定的点来 <BR>显示并给定颜色。通过setPointSize、setPointAntialiasingEnable <BR>的设定,使显示的点拥有一定的大小及良好的显示效果。 <BR> <BR> ---1--- ---0--- <BR> <BR> ---3--- ---2--- <BR> <BR> ---4--- ---5--- <BR> <BR> 程序Point3.java中,我们只选用了六个点中的0、2、3、4 <BR>四个点。 <BR> <BR>五. 主程序比较简洁的程序Point4.java <BR> 前面几个程序,所有的内容均放置在一个程序中,这对于 <BR>阅读程序来说,增添了一些困难。一般来说,一个具体的例子通常 <BR>由几个JAVA3D程序来完成,一般是将形体生成部分划为单独的一个 <BR>子程序,下面我们将上面的Point3.java分成两个程序:子程序 <BR>myShape.java用来生成点,主程序Point4.java完成其它设置任务 <BR>并调用myShape.java,我们设定两个程序均位于同一个子目录下。 <BR>//pointShape.java <BR> <BR>import javax.media.j3d.*; <BR> <BR>public class pointShape extends Shape3D { <BR> <BR> private float vert[] = { <BR> .8f, 0.8f,0.0f, <BR> -0.8f, 0.8f,0.0f, <BR> 0.5f, 0.0f,0.0f, <BR> -0.5f, 0.0f,0.0f, <BR> -0.8f,-0.8f,0.0f, <BR> 0.8f,-0.8f,0.0f, <BR> }; <BR> <BR> private float color[] = { <BR> 0.0f,0.5f,1.0f, <BR> 0.5f,0.0f,1.0f, <BR> 0.0f,0.8f,2.0f, <BR> 1.0f,0.0f,0.3f, <BR> 0.0f,1.0f,0.3f, <BR> 0.3f,0.8f,0.0f, <BR> }; <BR> <BR> public pointShape() { <BR> <BR>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?