ound(bgTexture.getImage());
//bg.setApplicationBounds(bounds);
//trans.addChild(shape1);//3D物体 加到 变换组
//trans.addChild(shape2);//3D物体 加到 变换组
objRoot.addChild(trans);
//变换组 加到 分枝组
objRoot.addChild(behavior);
//鼠标行为 加到 分枝组
//objRoot.addChild(myMouseRotate);
//objRoot.addChild(myMouseZoom);
//objRoot.addChild(bg);//背景 加到 分枝组
//编译
objRootpile();
//回送创建好的带3D物体的分枝组
return objRoot ;
}
mySimpleUniverse()
{
//创建带控制的画布
GraphicsConfiguration config=SimpleUniverse.getPreferredConfiguration();
Canvas3D c=new Canvas3D(config);
//创建以画布为依托的简单场景图对象,没有多个Locale
SimpleUniverse u=new SimpleUniverse(c);
u.getViewingPlatform().setNominalViewingTransform();
//创建分支组对象
BranchGroup scene=createSceneGraph(c);
//组装,分支组 对象加到 场景图
u.addBranchGraph(scene);
//带场景图的画布 加到 本applet中
setLayout(new BorderLayout());
add("Center",c);
}
//测试码
//public static void main(String aregs[])
//{new MainFrame(new mySimpleUniverse(),200,200);//加applet到应用
程序界面
//}
}
class SomeShape3D
{
public static float zuoBiaoZhouSmallDingDian=0.09f;//小坐标顶点位置
public static float zuoBiaoZhouSmallDingXi=0.02f;//小坐标顶点伞的半径
public static float zuoBiaoZhouSmallDingChang=0.07f;//小坐标顶点伞的长度
public static float zuoBiaoZhouSmallWeiDian=-0.09f;//小坐标尾巴的位置
public static float zuoBiaoZhouBigDingDian=1.0f;//大坐标顶点位置
public static float zuoBiaoZhouBigDingXi=0.04f;//大坐标顶点伞的半径
public static float zuoBiaoZhouBigDingChang=0.8f;//大坐标顶点伞的长度
public static float zuoBiaoZhouBigWeiDian=-1.0f;//大坐标尾巴的位置
public static float fan
gKuaiBanJing=0.18f;//每个方块的半径
public static void zuoBiaoZhuBigXShape3D(TransformGroup trans)
{
//创建大坐标轴对象
int i ;
float x1,x2,y1,y2,z1,z2 ;
SomeShape3D.addText3DDonghua(trans,"X",new Point3f(zuoBiaoZhouBigDingDian*10,0.0f,0.0f),0.1f,Block.mianColor[0],0);
Point3f[]vert=new Point3f[41];
Color3f[]colors=new Color3f[41];
for(i=0;i<27;i++)
{
if(i==0)
{
vert[i]=new Point3f(zuoBiaoZhouBigDingDian,0.0f,0.0f);
colors[i]=Block.mianColor[0];
}
else
{
z1=(float)(zuoBiaoZhouBigDingXi*Math.cos(i*2*Math.PI/25));
x1=zuoBiaoZhouBigDingChang;
y1=(float)(zuoBiaoZhouBigDingXi*Math.sin(i*2*Math.PI/25));
vert[i]=new Point3f(x1,y1,z1);
colors[i]=Block.mianColor[0];
}
}
for(i=0;i<14;i++)
{
if(i==0)
{
vert[27+i]=new Point3f(zuoBiaoZhouBigDingDian,0.0f,0.0f);
colors[27+i]=Block.mianColor[0];
}
else
{
z1=(float)(0.01f*Math.cos(i*2*Math.PI/12));