魔方java源代码.doc

上传人:豆**** 文档编号:24129578 上传时间:2022-07-03 格式:DOC 页数:38 大小:418KB
返回 下载 相关 举报
魔方java源代码.doc_第1页
第1页 / 共38页
魔方java源代码.doc_第2页
第2页 / 共38页
点击查看更多>>
资源描述

《魔方java源代码.doc》由会员分享,可在线阅读,更多相关《魔方java源代码.doc(38页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流魔方java源代码.精品文档./存为MoFang.javaimport java.applet.Applet ;import java.awt.*;import com.sun.j3d.utils.applet.MainFrame ;import java.awt.BorderLayout ;import com.sun.j3d.utils.universe.SimpleUniverse ;import javax.media.j3d.*;import javax.vecmath.*;import com.sun.j3d.utils.beha

2、viors.mouse.*;import com.sun.j3d.utils.behaviors.keyboard.*;import com.sun.j3d.utils.picking.behaviors.*;import com.sun.j3d.utils.geometry.*;import com.sun.j3d.utils.image.TextureLoader ;import javax.swing.*;import java.awt.*;import java.awt.event.*;import javax.swing.JFrame.*;import javax.swing.*;c

3、lass mySimpleUniverse extends Applet BranchGroup createSceneGraph(Canvas3D canvas) /System.out.print(*1*); /创建变换组,无用的t3D Transform3D t3d=new Transform3D(); TransformGroup trans=new TransformGroup(t3d); trans.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE); trans.setCapability(TransformGroup.ALLO

4、W_TRANSFORM_READ); /创建分枝组 BranchGroup objRoot=new BranchGroup(); /测试 /SomeShape3D.book3D( this, trans); SomeShape3D.addText3DDonghua(trans,魔方,new Point3f(-7.0f,6.0f,6.0f),0.1f,new Color3f(1.0f,0.0f,0.0f),1); /初始化数据结构 System.out.println(nn载入方块,并向变换组中加入每个方块的坐标系和方块.); for(int i=0;i=2;i+) for(int j=0;j=

5、2;j+) for(int k=0;k=2;k+) int p; p=Position.getPxyzFromPositionAy(i,j,k,MoFang.positionArray); MoFang.blockArrayijk=new Block(i,j,k,p0,p1,p2,trans,t3d,objRoot,this); System.out.println(加入每个方块的坐标系和方块,完成.n); /创建大坐标轴,自动加到主坐标系 SomeShape3D.zuoBiaoZhuBigXShape3D(trans); SomeShape3D.zuoBiaoZhuBigYShape3D(t

6、rans); SomeShape3D.zuoBiaoZhuBigZShape3D(trans); /创建边界对象 BoundingSphere bounds=new BoundingSphere(new Point3d(0.0,0.0,0.0),100); /创建鼠标pick行为,加到分支组objRoot PickRotateBehavior pickRotate=new PickRotateBehavior(objRoot,canvas,bounds); PickTranslateBehavior pickTranslate=new PickTranslateBehavior(objRoot

7、,canvas,bounds); PickZoomBehavior pickZoom=new PickZoomBehavior(objRoot,canvas,bounds); /objRoot.addChild(pickRotate); objRoot.addChild(pickTranslate); /objRoot.addChild(pickZoom); /创建鼠标旋转行为 MouseRotate behavior=new MouseRotate(); behavior.setTransformGroup(trans); behavior.setSchedulingBounds(bound

8、s); /创建鼠标平移行为 /MouseTranslate myMouseRotate=new MouseTranslate(); /myMouseRotate.setTransformGroup(trans); /myMouseRotate.setSchedulingBounds(bounds); /创建鼠标缩放行为 MouseZoom myMouseZoom=new MouseZoom(); myMouseZoom.setTransformGroup(trans); myMouseZoom.setSchedulingBounds(bounds); /创建键盘默认行为 KeyNavigato

9、rBehavior keyNavBeh=new KeyNavigatorBehavior(trans); keyNavBeh.setSchedulingBounds(bounds); objRoot.addChild(keyNavBeh); /白色背景 Background bg=new Background(new Color3f(0.0f,0.0f,0.0f); bg.setApplicationBounds(bounds); objRoot.addChild(bg); /创建带材质的背景 /TextureLoader bgTexture=new TextureLoader(bg3.jpg

10、,this); /Background bg=new Background(bgTexture.getImage(); /bg.setApplicationBounds(bounds); /trans.addChild(shape1);/3D物体 加到 变换组 /trans.addChild(shape2);/3D物体 加到 变换组 objRoot.addChild(trans); /变换组 加到 分枝组 objRoot.addChild(behavior); /鼠标行为 加到 分枝组 /objRoot.addChild(myMouseRotate); /objRoot.addChild(my

11、MouseZoom); /objRoot.addChild(bg);/背景 加到 分枝组 /编译 objRpile(); /回送创建好的带3D物体的分枝组 return objRoot ; mySimpleUniverse() /创建带控制的画布 GraphicsConfiguration config=SimpleUniverse.getPreferredConfiguration(); Canvas3D c=new Canvas3D(config); /创建以画布为依托的简单场景图对象,没有多个Locale SimpleUniverse u=new SimpleUniverse(c); u

12、.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);/

13、加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 zuoB

14、iaoZhouBigDingDian=1.0f;/大坐标顶点位置 public static float zuoBiaoZhouBigDingXi=0.04f;/大坐标顶点伞的半径 public static float zuoBiaoZhouBigDingChang=0.8f;/大坐标顶点伞的长度 public static float zuoBiaoZhouBigWeiDian=-1.0f;/大坐标尾巴的位置 public static float fangKuaiBanJing=0.18f;/每个方块的半径 public static void zuoBiaoZhuBigXShape3D

15、(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.mianColor0,0); Point3fvert=new Point3f41; Color3fcolors=new Color3f41; for(i=0;i27;i+) if(i=0) verti=new Point3f(zuoBiaoZhouBigDingDian,

16、0.0f,0.0f); colorsi=Block.mianColor0; else z1=(float)(zuoBiaoZhouBigDingXi*Math.cos(i*2*Math.PI/25); x1=zuoBiaoZhouBigDingChang; y1=(float)(zuoBiaoZhouBigDingXi*Math.sin(i*2*Math.PI/25); verti=new Point3f(x1,y1,z1); colorsi=Block.mianColor0; for(i=0;i14;i+) if(i=0) vert27+i=new Point3f(zuoBiaoZhouBi

17、gDingDian,0.0f,0.0f); colors27+i=Block.mianColor0; 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); vert27+i=new Point3f(x1,y1,z1); colors27+i=Block.mianColor1; int count=new int2; count0=27 ; count1=14 ; TriangleFanArray tri=new T

18、riangleFanArray( vert.length, TriangleFanArray.COORDINATES|TriangleStripArray.COLOR_3, count tri.setCoordinates(0,vert); tri.setColors(0,colors); Appearance app=new Appearance(); PolygonAttributes polyAttrib=new PolygonAttributes(); polyAttrib.setCullFace(PolygonAttributes.CULL_NONE); /polyAttrib.se

19、tPolygonMode(PolygonAttributes.POLYGON_LINE); app.setPolygonAttributes(polyAttrib); Shape3D shape=new Shape3D(tri,app); System.out.print(zuoBiaoZhuBigX 创建 完成n); trans.addChild(shape); /到这里,大坐标轴对象创建完成 public static void zuoBiaoZhuBigYShape3D(TransformGroup trans) /创建大坐标轴对象 int i ; float x1,x2,y1,y2,z

20、1,z2 ; SomeShape3D.addText3DDonghua(trans,Y,new Point3f(-1.0f,zuoBiaoZhouBigDingDian*10,0.0f),0.1f,Block.mianColor2,0); Point3fvert=new Point3f41; Color3fcolors=new Color3f41; for(i=0;i27;i+) if(i=0) verti=new Point3f(0.0f,zuoBiaoZhouBigDingDian,0.0f); colorsi=Block.mianColor2; else x1=(float)(zuoBi

21、aoZhouBigDingXi*Math.cos(i*2*Math.PI/25); y1=zuoBiaoZhouBigDingChang; z1=(float)(zuoBiaoZhouBigDingXi*Math.sin(i*2*Math.PI/25); verti=new Point3f(x1,y1,z1); colorsi=Block.mianColor2; for(i=0;i14;i+) if(i=0) vert27+i=new Point3f(0.0f,zuoBiaoZhouBigDingDian,0.0f); colors27+i=Block.mianColor2; else x1=

22、(float)(0.01f*Math.cos(i*2*Math.PI/12); y1=zuoBiaoZhouBigWeiDian ; z1=(float)(0.01f*Math.sin(i*2*Math.PI/12); vert27+i=new Point3f(x1,y1,z1); colors27+i=Block.mianColor3; int count=new int2; count0=27 ; count1=14 ; TriangleFanArray tri=new TriangleFanArray( vert.length, TriangleFanArray.COORDINATES|

23、TriangleStripArray.COLOR_3, count tri.setCoordinates(0,vert); tri.setColors(0,colors); Appearance app=new Appearance(); PolygonAttributes polyAttrib=new PolygonAttributes(); polyAttrib.setCullFace(PolygonAttributes.CULL_NONE); /polyAttrib.setPolygonMode(PolygonAttributes.POLYGON_LINE); app.setPolygo

24、nAttributes(polyAttrib); Shape3D shape=new Shape3D(tri,app); System.out.print(zuoBiaoZhuBigY 创建 完成n); trans.addChild(shape); /到这里,大坐标轴对象创建完成 public static void zuoBiaoZhuBigZShape3D(TransformGroup trans) /创建大坐标轴对象 int i ; float x1,x2,y1,y2,z1,z2 ; SomeShape3D.addText3DDonghua(trans,Z,new Point3f(-1.

25、0f,0.0f,zuoBiaoZhouBigDingDian*10),0.1f,Block.mianColor4,0); Point3fvert=new Point3f41; Color3fcolors=new Color3f41; for(i=0;i27;i+) if(i=0) verti=new Point3f(0.0f,0.0f,zuoBiaoZhouBigDingDian); colorsi=Block.mianColor4; else y1=(float)(zuoBiaoZhouBigDingXi*Math.cos(i*2*Math.PI/25); z1=zuoBiaoZhouBig

26、DingChang; x1=(float)(zuoBiaoZhouBigDingXi*Math.sin(i*2*Math.PI/25); verti=new Point3f(x1,y1,z1); colorsi=Block.mianColor4; for(i=0;i14;i+) if(i=0) vert27+i=new Point3f(0.0f,0.0f,zuoBiaoZhouBigDingDian); colors27+i=Block.mianColor4; else y1=(float)(0.01f*Math.cos(i*2*Math.PI/12); z1=zuoBiaoZhouBigWe

27、iDian ; x1=(float)(0.01f*Math.sin(i*2*Math.PI/12); vert27+i=new Point3f(x1,y1,z1); colors27+i=Block.mianColor5; int count=new int2; count0=27 ; count1=14 ; TriangleFanArray tri=new TriangleFanArray( vert.length, TriangleFanArray.COORDINATES|TriangleStripArray.COLOR_3, count tri.setCoordinates(0,vert

28、); tri.setColors(0,colors); Appearance app=new Appearance(); PolygonAttributes polyAttrib=new PolygonAttributes(); polyAttrib.setCullFace(PolygonAttributes.CULL_NONE); /polyAttrib.setPolygonMode(PolygonAttributes.POLYGON_LINE); app.setPolygonAttributes(polyAttrib); Shape3D shape=new Shape3D(tri,app)

29、; System.out.print(zuoBiaoZhuBigZ 创建 完成n); trans.addChild(shape); /到这里,大坐标轴对象创建完成 public static void zuoBiaoZhuSmallXShape3D(TransformGroup trans) /创建小坐标轴对象 int i ; float x1,x2,y1,y2,z1,z2 ; Point3fvert=new Point3f41; Color3fcolors=new Color3f41; for(i=0;i27;i+) if(i=0) verti=new Point3f(zuoBiaoZhou

30、SmallDingDian,0.0f,0.0f); colorsi=Block.mianColor0; else z1=(float)(zuoBiaoZhouSmallDingXi*Math.cos(i*2*Math.PI/25); x1=zuoBiaoZhouSmallDingChang ; y1=(float)(zuoBiaoZhouSmallDingXi*Math.sin(i*2*Math.PI/25); verti=new Point3f(x1,y1,z1); colorsi=Block.mianColor0; for(i=0;i14;i+) if(i=0) vert27+i=new

31、Point3f(zuoBiaoZhouSmallDingDian,0.0f,0.0f); colors27+i=Block.mianColor0; else z1=(float)(0.005f*Math.cos(i*2*Math.PI/12); x1=zuoBiaoZhouSmallWeiDian ; y1=(float)(0.005f*Math.sin(i*2*Math.PI/12); vert27+i=new Point3f(x1,y1,z1); colors27+i=Block.mianColor1; int count=new int2; count0=27 ; count1=14 ;

32、 TriangleFanArray tri=new TriangleFanArray( vert.length, TriangleFanArray.COORDINATES|TriangleStripArray.COLOR_3, count tri.setCoordinates(0,vert); tri.setColors(0,colors); Appearance app=new Appearance(); PolygonAttributes polyAttrib=new PolygonAttributes(); polyAttrib.setCullFace(PolygonAttributes

33、.CULL_NONE); /polyAttrib.setPolygonMode(PolygonAttributes.POLYGON_LINE); app.setPolygonAttributes(polyAttrib); Shape3D shape=new Shape3D(tri,app); /System.out.print(zuoBiaoZhuSmallX 创建 完成); trans.addChild(shape); /到这里,小坐标轴对象创建完成 public static void zuoBiaoZhuSmallYShape3D(TransformGroup trans) /创建小坐标

34、轴对象 int i ; float x1,x2,y1,y2,z1,z2 ; Point3fvert=new Point3f41; Color3fcolors=new Color3f41; for(i=0;i27;i+) if(i=0) verti=new Point3f(0.0f,zuoBiaoZhouSmallDingDian,0.0f); colorsi=Block.mianColor2; else x1=(float)(zuoBiaoZhouSmallDingXi*Math.cos(i*2*Math.PI/25); y1=zuoBiaoZhouSmallDingChang ; z1=(f

35、loat)(zuoBiaoZhouSmallDingXi*Math.sin(i*2*Math.PI/25); verti=new Point3f(x1,y1,z1); colorsi=Block.mianColor2; for(i=0;i14;i+) if(i=0) vert27+i=new Point3f(0.0f,zuoBiaoZhouSmallDingDian,0.0f); colors27+i=Block.mianColor2; else x1=(float)(0.005f*Math.cos(i*2*Math.PI/12); y1=zuoBiaoZhouSmallWeiDian ; z

36、1=(float)(0.005f*Math.sin(i*2*Math.PI/12); vert27+i=new Point3f(x1,y1,z1); colors27+i=Block.mianColor3; int count=new int2; count0=27 ; count1=14 ; TriangleFanArray tri=new TriangleFanArray( vert.length, TriangleFanArray.COORDINATES|TriangleStripArray.COLOR_3, count tri.setCoordinates(0,vert); tri.s

37、etColors(0,colors); Appearance app=new Appearance(); PolygonAttributes polyAttrib=new PolygonAttributes(); polyAttrib.setCullFace(PolygonAttributes.CULL_NONE); /polyAttrib.setPolygonMode(PolygonAttributes.POLYGON_LINE); app.setPolygonAttributes(polyAttrib); Shape3D shape=new Shape3D(tri,app); /System.o

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 小学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com