魔方java源代码

2026/1/27 12:52:23

//存为MoFang.java

import 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.behaviors.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.*;

class mySimpleUniverse extends Applet {

BranchGroup createSceneGraph(Canvas3D canvas)

{

//System.out.print(\

//创建变换组,无用的t3D

Transform3D t3d=new Transform3D();

TransformGroup trans=new TransformGroup(t3d);

trans.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE); trans.setCapability(TransformGroup.ALLOW_TRANSFORM_READ); //创建分枝组

BranchGroup objRoot=new BranchGroup();

//测试

//SomeShape3D.book3D( this, trans); SomeShape3D.addText3DDonghua(trans,\魔方\Point3f(-7.0f,6.0f,6.0f),0.1f,new Color3f(1.0f,0.0f,0.0f),1);

//初始化数据结构

System.out.println(\载入方块,并向变换组中加入每个方块的坐标系和方

块...\

for(int i=0;i<=2;i++) for(int j=0;j<=2;j++) for(int k=0;k<=2;k++) {

int[] p;

p=Position.getPxyzFromPositionAy(i,j,k,MoFang.positionArray); MoFang.blockArray[i][j][k]=new

Block(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);

//创建边界对象

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,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(bounds);

//创建鼠标平移行为

//MouseTranslate myMouseRotate=new MouseTranslate(); //myMouseRotate.setTransformGroup(trans); //myMouseRotate.setSchedulingBounds(bounds);

//创建鼠标缩放行为

MouseZoom myMouseZoom=new MouseZoom(); myMouseZoom.setTransformGroup(trans); myMouseZoom.setSchedulingBounds(bounds);

//创建键盘默认行为

KeyNavigatorBehavior 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(\ //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(myMouseZoom);

//objRoot.addChild(bg);//背景 加到 分枝组 //编译

objRoot.compile();

//回送创建好的带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(\ }

//测试码

//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 fangKuaiBanJing=0.18f;//每个方块的半径 public static void zuoBiaoZhuBigXShape3D(TransformGroup trans) {

//创建大坐标轴对象

int i ;

float x1,x2,y1,y2,z1,z2 ;

SomeShape3D.addText3DDonghua(trans,\

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 {


魔方java源代码.doc 将本文的Word文档下载到电脑
搜索更多关于: 魔方java源代码 的文档
相关推荐
相关阅读
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 10

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219