实现JAVA3D结构体系的方法
§3.1 总体设计
设计思想是:以JAVA3D为平台,使用JBuilder编译器,生成一个三维小场景,实现简单实体建模,物体运动,场景移动,各种灯光,雾等场景变换操作以及更换背景图片增加背景音乐等三维体系的基本功能。
§3.2 基本形体的生成
和VRML不同,JAVA3D没有基本形体类,因而在程序中无法直接生成大量应用的基本形体,如BOX、CONE、SPHERE等。我们可以通过复杂的编程生成这些基本形体,也可以直接调用JAVA3D为我们提供的geometry classes,利用它生成程序所需要的BOX、COLORCUBE、CONE、SPHERE、CYLINDER。下面是这些基本体的生成方法。
3.2.1平板的生成
UTILITY里BOX的构造函数有:
1.Box():成一个各边尺寸均为2的BOX,要说明的是,BOX、COLORCUBE、SPHERE的坐标原点均在其中心点,CONE、CYLINDER的则在其轴线的中点上。
2.Box(float xdim, float ydim, Appearance ap) :成一个给定尺寸、给定外观属性的BOX ,例Box(.5f, .6f, .4f, myApp)
3.Box(float xdim, float ydim, float zdim, int primflags, Appearance ap):生成一个有特定说明的BOX,例如:Box(.4f,.6f,.3f,Primitive.ENABLE_APPEARANCE_MODIFY, ap)表示程序在运行时可以改变其外观属性。
3.2.2 立方体的生成
UTILITY里COLORCUBE的构造函数有:
1.ColorCube()
生成一个边长均为2的COLORCUBE
1.ColorCube(double scale)
将边长均为2的COLORCUBE按比例放大缩小。
3.2.3 圆锥的生成
UTILITY里CONE的构造函数有:
1.public Cone()
生成一个底半径为1,高为2的CONE。
2.Cone (float radius, float height)
3.Cone (float radius, float height, int primflags, Appearance ap)
4.Cone(float radius, float height, int primflags, int xdivision, int ydivision, Appearance ap)
这里,xdivision、ydivision可用来表示圆锥的显示是高精度的显示,或是底精度的显示,缺省时的中等精度时xdivision = 15; ydivision = 1; 我们可利用这两个参数来改变显示的效果,使显示圆锥的三角片更多或更少些。
3.2.4 球体的生成
UTILITY里SPHERE的构造函数有:
1.Sphere()
生成一个半径为1的SPHERE。
2.Sphere (float radius)
3.Sphere (float radius, Appearance ap)
4.Sphere(float radius, int primflags, Appearance ap)
5.Sphere(float radius, int primflags, int divisions)
6.Sphere(float radius, int primflags, int divisions, Appearance ap)
这里,divisions的作用和圆锥的xdivision、ydivision相似。
3.2.5.圆柱体的生成
UTILITY里CYLINDER的构造函数有:
1.Cylinder()
生成一个底半径为1,高为2的CYLINDER。
2.Cylinder (float radius, float height)
3.Cylinder (float radius, float height, Appearance ap)
4. Cylinder (float radius, float height, int primflags, Appearance ap)
5. Cylinder(float radius, float height, int primflags, int xdivision, int ydivision, Appearance ap)