魔方java源代码Word格式文档下载.docx
- 文档编号:4053515
- 上传时间:2023-05-02
- 格式:DOCX
- 页数:78
- 大小:30.67KB
魔方java源代码Word格式文档下载.docx
《魔方java源代码Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《魔方java源代码Word格式文档下载.docx(78页珍藏版)》请在冰点文库上搜索。
importcom.sun.j3d.utils.image.TextureLoader;
importjavax.swing.*;
importjava.awt.event.*;
importjavax.swing.JFrame.*;
classmySimpleUniverseextendsApplet
{
BranchGroupcreateSceneGraph(Canvas3Dcanvas)
//System.out.print("
**1**"
);
//创建变换组,无用的t3D
Transform3Dt3d=newTransform3D();
TransformGrouptrans=newTransformGroup(t3d);
trans.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
trans.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
//创建分枝组
BranchGroupobjRoot=newBranchGroup();
//测试
//SomeShape3D.book3D(this,trans);
SomeShape3D.addText3DDonghua(trans,"
魔方"
newPoint3f(-7.0f,6.0f,6.0f),0.1f,newColor3f(1.0f,0.0f,0.0f),1);
//初始化数据结构
System.out.println("
\n\n载入方块,并向变换组中加入每个方块的坐标系和方块..."
for(inti=0;
i<
=2;
i++)
for(intj=0;
j<
j++)
for(intk=0;
k<
k++)
int[]p;
p=Position.getPxyzFromPositionAy(i,j,k,MoFang.positionArray);
MoFang.blockArray[i][j][k]=newBlock(i,j,k,p[0],p[1],p[2],trans,t3d,objRoot,this);
}
加入每个方块的坐标系和方块,完成.\n"
//创建大坐标轴,自动加到主坐标系
SomeShape3D.zuoBiaoZhuBigXShape3D(trans);
SomeShape3D.zuoBiaoZhuBigYShape3D(trans);
SomeShape3D.zuoBiaoZhuBigZShape3D(trans);
//创建边界对象
BoundingSpherebounds=newBoundingSphere(newPoint3d(0.0,0.0,0.0),100);
//创建鼠标pick行为,加到分支组objRoot
PickRotateBehaviorpickRotate=newPickRotateBehavior(objRoot,canvas,bounds);
PickTranslateBehaviorpickTranslate=newPickTranslateBehavior(objRoot,canvas,bounds);
PickZoomBehaviorpickZoom=newPickZoomBehavior(objRoot,canvas,bounds);
//objRoot.addChild(pickRotate);
objRoot.addChild(pickTranslate);
//objRoot.addChild(pickZoom);
//创建鼠标旋转行为
MouseRotatebehavior=newMouseRotate();
behavior.setTransformGroup(trans);
behavior.setSchedulingBounds(bounds);
//创建鼠标平移行为
//MouseTranslatemyMouseRotate=newMouseTranslate();
//myMouseRotate.setTransformGroup(trans);
//myMouseRotate.setSchedulingBounds(bounds);
//创建鼠标缩放行为
MouseZoommyMouseZoom=newMouseZoom();
myMouseZoom.setTransformGroup(trans);
myMouseZoom.setSchedulingBounds(bounds);
//创建键盘默认行为
KeyNavigatorBehaviorkeyNavBeh=newKeyNavigatorBehavior(trans);
keyNavBeh.setSchedulingBounds(bounds);
objRoot.addChild(keyNavBeh);
//白色背景
Backgroundbg=newBackground(newColor3f(0.0f,0.0f,0.0f));
bg.setApplicationBounds(bounds);
objRoot.addChild(bg);
//创建带材质的背景
//TextureLoaderbgTexture=newTextureLoader("
bg3.jpg"
this);
//Backgroundbg=newBackground(bgTexture.getImage());
//bg.setApplicationBounds(bounds);
//trans.addChild(shape1);
//3D物体加到变换组
//trans.addChild(shape2);
objRoot.addChild(trans);
//变换组加到分枝组
objRoot.addChild(behavior);
//鼠标行为加到分枝组
//objRoot.addChild(myMouseRotate);
//objRoot.addChild(myMouseZoom);
//objRoot.addChild(bg);
//背景加到分枝组
//编译
objRpile();
//回送创建好的带3D物体的分枝组
returnobjRoot;
mySimpleUniverse()
//创建带控制的画布
GraphicsConfigurationconfig=SimpleUniverse.getPreferredConfiguration();
Canvas3Dc=newCanvas3D(config);
//创建以画布为依托的简单场景图对象,没有多个Locale
SimpleUniverseu=newSimpleUniverse(c);
u.getViewingPlatform().setNominalViewingTransform();
//创建分支组对象
BranchGroupscene=createSceneGraph(c);
//组装,分支组对象加到场景图
u.addBranchGraph(scene);
//带场景图的画布加到本applet中
setLayout(newBorderLayout());
add("
Center"
c);
//测试码
//publicstaticvoidmain(Stringaregs[])
//{newMainFrame(newmySimpleUniverse(),200,200);
//加applet到应用程序界面
//}
classSomeShape3D
publicstaticfloatzuoBiaoZhouSmallDingDian=0.09f;
//小坐标顶点位置
publicstaticfloatzuoBiaoZhouSmallDingXi=0.02f;
//小坐标顶点伞的半径
publicstaticfloatzuoBiaoZhouSmallDingChang=0.07f;
//小坐标顶点伞的长度
publicstaticfloatzuoBiaoZhouSmallWeiDian=-0.09f;
//小坐标尾巴的位置
publicstaticfloatzuoBiaoZhouBigDingDian=1.0f;
//大坐标顶点位置
publicstaticfloatzuoBiaoZhouBigDingXi=0.04f;
//大坐标顶点伞的半径
publicstaticfloatzuoBiaoZhouBigDingChang=0.8f;
//大坐标顶点伞的长度
publicstaticfloatzuoBiaoZhouBigWeiDian=-1.0f;
//大坐标尾巴的位置
publicstaticfloatfangKuaiBanJing=0.18f;
//每个方块的半径
publicstaticvoidzuoBiaoZhuBigXShape3D(TransformGrouptrans)
//创建大坐标轴对象
inti;
floatx1,x2,y1,y2,z1,z2;
X"
newPoint3f(zuoBiaoZhouBigDingDian*10,0.0f,0.0f),0.1f,Block.mianColor[0],0);
Point3f[]vert=newPoint3f[41];
Color3f[]colors=newColor3f[41];
for(i=0;
27;
if(i==0)
vert[i]=newPoint3f(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]=newPoint3f(x1,y1,z1);
14;
vert[27+i]=newPoint3f(zuoBiaoZhouBigDingDian,0.0f,0.0f);
colors[27+i]=Block.mianColor[0];
z1=(float)(0.01f*Math.cos(i*2*Math.PI/12));
x1=zuoBiaoZhouBigWeiDian;
y1=(float)(0.01f*Math.sin(i*2*Math.PI/12));
vert[27+i]=newPoint3f(x1,y1,z1);
colors[27+i]=Block.mianColor[1];
intcount[]=newint[2];
count[0]=27;
count[1]=14;
TriangleFanArraytri=newTriangleFanArray(
vert.length,
TriangleFanArray.COORDINATES|TriangleStripArray.COLOR_3,
count
tri.setCoordinates(0,vert);
tri.setColors(0,colors);
Appearanceapp=newAppearance();
PolygonAttributespolyAttrib=newPolygonAttributes();
polyAttrib.setCullFace(PolygonAttributes.CULL_NONE);
//polyAttrib.setPolygonMode(PolygonAttributes.POLYGON_LINE);
app.setPolygonAttributes(polyAttrib);
Shape3Dshape=newShape3D(tri,app);
System.out.print("
zuoBiaoZhuBigX创建完成\n"
trans.addChild(shape);
//到这里,大坐标轴对象创建完成
publicstaticvoidzuoBiaoZhuBigYShape3D(TransformGrouptrans)
Y"
newPoint3f(-1.0f,zuoBiaoZhouBigDingDian*10,0.0f),0.1f,Block.mianColor[2],0);
vert[i]=newPoint3f(0.0f,zuoBiaoZhouBigDingDian,0.0f);
colors[i]=Block.mianColor[2];
x1=(float)(zuoBiaoZhouBigDingXi*Math.cos(i*2*Math.PI/25));
y1=zuoBiaoZhouBigDingChang;
z1=(float)(zuoBiaoZhouBigDingXi*Math.sin(i*2*Math.PI/25));
vert[27+i]=newPoint3f(0.0f,zuoBiaoZhouBigDingDian,0.0f);
colors[27+i]=Block.mianColor[2];
x1=(float)(0.01f*Math.cos(i*2*Math.PI/12));
y1=zuoBiaoZhouBigWeiDian;
z1=(float)(0.01f*Math.sin(i*2*Math.PI/12));
colors[27+i]=Block.mianColor[3];
zuoBiaoZhuBigY创建完成\n"
publicstaticvoidzuoBiaoZhuBigZShape3D(TransformGrouptrans)
Z"
newPoint3f(-1.0f,0.0f,zuoBiaoZhouBigDingDian*10),0.1f,Block.mianColor[4],0);
vert[i]=newPoint3f(0.0f,0.0f,zuoBiaoZhouBigDingDian);
colors[i]=Block.mianColor[4];
y1=(float)(zuoBiaoZhouBigDingXi*Math.cos(i*2*Math.PI/25));
z1=zuoBiaoZhouBigDingChang;
x1=(float)(zuoBiaoZhouBigDingXi*Math.sin(i*2*Math.PI/25));
vert[27+i]=newPoint3f(0.0f,0.0f,zuoBiaoZhouBigDingDian);
colors[27+i]=Block.mianColor[4];
y1=(float)(0.01f*Math.cos(i*2*Math.PI/12));
z1=zuoBiaoZhouBigWeiDian;
x1=(float)(0.01f*Math.sin(i*2*Math.PI/12));
colors[27+i]=Block.mianColor[5];
zuoBiaoZhuBigZ创建完成\n"
publicstaticvoidzuoBiaoZhuSmallXShape3D(TransformGrouptrans)
//创建小坐标轴对象
vert[i]=newPoint3f(zuoBiaoZhouSmallDingDian,0.0f,0.0f);
z1=(float)(zuoBiaoZhouSmallDingXi*Math.cos(i*2*Math.PI/25));
x1=zuoBiaoZhouSmallDingChang;
y1=(float)(zuoBiaoZhouSmallDingXi*Math.sin(i*2*Math.PI/25));
vert[27+i]=newPoint3f(zuoBiaoZhouSmallDingDian,0.0f,0.0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 魔方 java 源代码