魔方java源代码.docx
- 文档编号:10451636
- 上传时间:2023-02-11
- 格式:DOCX
- 页数:78
- 大小:32.02KB
魔方java源代码.docx
《魔方java源代码.docx》由会员分享,可在线阅读,更多相关《魔方java源代码.docx(78页珍藏版)》请在冰豆网上搜索。
魔方java源代码
//´æΪMoFang.java
importjava.applet.Applet;
importjava.awt.*;
importcom.sun.j3d.utils.applet.MainFrame;
importjava.awt.BorderLayout;
importcom.sun.j3d.utils.universe.SimpleUniverse;
importjavax.media.j3d.*;
importjavax.vecmath.*;
importcom.sun.j3d.utils.behaviors.mouse.*;
importcom.sun.j3d.utils.behaviors.keyboard.*;
importcom.sun.j3d.utils.picking.behaviors.*;
importcom.sun.j3d.utils.geometry.*;
importcom.sun.j3d.utils.image.TextureLoader;
importjavax.swing.*;
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.JFrame.*;
importjavax.swing.*;
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<=2;j++)
for(intk=0;k<=2;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);
}
System.out.println("¼ÓÈëÿ¸ö·½¿éµÄ×ø±êϵºÍ·½¿é,Íê³É.\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);//3DÎïÌå¼Óµ½±ä»»×é
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;
SomeShape3D.addText3DDonghua(trans,"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;i<27;i++)
{
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);
colors[i]=Block.mianColor[0];
}
}
for(i=0;i<14;i++)
{
if(i==0)
{
vert[27+i]=newPoint3f(zuoBiaoZhouBigDingDian,0.0f,0.0f);
colors[27+i]=Block.mianColor[0];
}
else
{
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)
{
//´´½¨´ó×ø±êÖá¶ÔÏó
inti;
floatx1,x2,y1,y2,z1,z2;
SomeShape3D.addText3DDonghua(trans,"Y",newPoint3f(-1.0f,zuoBiaoZhouBigDingDian*10,0.0f),0.1f,Block.mianColor[2],0);
Point3f[]vert=newPoint3f[41];
Color3f[]colors=newColor3f[41];
for(i=0;i<27;i++)
{
if(i==0)
{
vert[i]=newPoint3f(0.0f,zuoBiaoZhouBigDingDian,0.0f);
colors[i]=Block.mianColor[2];
}
else
{
x1=(float)(zuoBiaoZhouBigDingXi*Math.cos(i*2*Math.PI/25));
y1=zuoBiaoZhouBigDingChang;
z1=(float)(zuoBiaoZhouBigDingXi*Math.sin(i*2*Math.PI/25));
vert[i]=newPoint3f(x1,y1,z1);
colors[i]=Block.mianColor[2];
}
}
for(i=0;i<14;i++)
{
if(i==0)
{
vert[27+i]=newPoint3f(0.0f,zuoBiaoZhouBigDingDian,0.0f);
colors[27+i]=Block.mianColor[2];
}
else
{
x1=(float)(0.01f*Math.cos(i*2*Math.PI/12));
y1=zuoBiaoZhouBigWeiDian;
z1=(float)(0.01f*Math.sin(i*2*Math.PI/12));
vert[27+i]=newPoint3f(x1,y1,z1);
colors[27+i]=Block.mianColor[3];
}
}
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("zuoBiaoZhuBigY´´½¨Íê³É\n");
trans.addChild(shape);
//µ½ÕâÀ´ó×ø±êÖá¶ÔÏó´´½¨Íê³É
}
publicstaticvoidzuoBiaoZhuBigZShape3D(TransformGrouptrans)
{
//´´½¨´ó×ø±êÖá¶ÔÏó
inti;
floatx1,x2,y1,y2,z1,z2;
SomeShape3D.addText3DDonghua(trans,"Z",newPoint3f(-1.0f,0.0f,zuoBiaoZhouBigDingDian*10),0.1f,Block.mianColor[4],0);
Point3f[]vert=newPoint3f[41];
Color3f[]colors=newColor3f[41];
for(i=0;i<27;i++)
{
if(i==0)
{
vert[i]=newPoint3f(0.0f,0.0f,zuoBiaoZhouBigDingDian);
colors[i]=Block.mianColor[4];
}
else
{
y1=(float)(zuoBiaoZhouBigDingXi*Math.cos(i*2*Math.PI/25));
z1=zuoBiaoZhouBigDingChang;
x1=(float)(zuoBiaoZhouBigDingXi*Math.sin(i*2*Math.PI/25));
vert[i]=newPoint3f(x1,y1,z1);
colors[i]=Block.mianColor[4];
}
}
for(i=0;i<14;i++)
{
if(i==0)
{
vert[27+i]=newPoint3f(0.0f,0.0f,zuoBiaoZhouBigDingDian);
colors[27+i]=Block.mianColor[4];
}
else
{
y1=(float)(0.01f*Math.cos(i*2*Math.PI/12));
z1=zuoBiaoZhouBigWeiDian;
x1=(float)(0.01f*Math.sin(i*2*Math.PI/12));
vert[27+i]=newPoint3f(x1,y1,z1);
colors[27+i]=Block.mianColor[5];
}
}
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("zuoBiaoZhuBigZ´´½¨Íê³É\n");
trans.addChild(shape);
//µ½ÕâÀ´ó×ø±êÖá¶ÔÏó´´½¨Íê³É
}
publicstaticvoidzuoBiaoZhuSmallXShape3D(TransformGrouptrans)
{
//´´½¨Ð¡×ø±êÖá¶ÔÏó
i
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 魔方 java 源代码