📄 mysphere.java
字号:
package com.java3d.test;
import java.applet.Applet;
import java.awt.BorderLayout;
import com.sun.j3d.utils.applet.MainFrame;
import com.sun.j3d.utils.geometry.*;
import com.sun.j3d.utils.universe.*;
import javax.media.j3d.*;
import javax.vecmath.Point3d;
public class mySphere extends Applet {
/**
*
*/
private static final long serialVersionUID = 1L;
/**
* @param args
*/
//public mySphere() {
//}
public void init() {
Canvas3D canvas = new Canvas3D(SimpleUniverse
.getPreferredConfiguration());
setLayout(new BorderLayout());
add("Center", canvas);
SimpleUniverse u = new SimpleUniverse(canvas);
u.getViewingPlatform().setNominalViewingTransform();
u.addBranchGraph(getBranchGroup4());
}
public BranchGroup getBranchGroup(){
BranchGroup objRoot = new BranchGroup();
Transform3D rotate = new Transform3D();
rotate.rotY(Math.PI/4.0d);
TransformGroup objRotate = new TransformGroup(rotate);
objRotate.addChild(new ColorCube(0.4));
objRoot.addChild(objRotate);
return objRoot;
}
public BranchGroup getBranchGroup2(){
BranchGroup objRoot = new BranchGroup();
Transform3D rotate = new Transform3D();
Transform3D tempRotate = new Transform3D();
rotate.rotX(Math.PI/4.0d);
tempRotate.rotY(Math.PI/4.0d);
rotate.mul(tempRotate);
TransformGroup objRotate = new TransformGroup(rotate);
objRotate.addChild(new ColorCube(0.4));
objRoot.addChild(objRotate);
return objRoot;
}
public BranchGroup getBranchGroup3(){
BranchGroup objRoot = new BranchGroup();
// 创建变换组,并用单位矩阵来初始化。
// 并加其作为子图的孩子结点加到子图中。
TransformGroup objSpin = new TransformGroup();
objSpin.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
// 创建一个简单的形状叶子结点.并把加其入子图中。
// ColorCube是一个方便的工具类
objSpin.addChild(new ColorCube(0.4));
// create time varying function to drive the animation
Alpha rotationAlpha = new Alpha(-1, 4000);
//创建一个新的Behavior对象来实现预期的操作。
// 并指定其形变对象,把其作为孩子结点加入到
// 场景图中。
RotationInterpolator rotator =
new RotationInterpolator(rotationAlpha, objSpin);
// 一个范围球体是行为活跃区域。
BoundingSphere bounds = new BoundingSphere();
rotator.setSchedulingBounds(bounds);
objSpin.addChild(rotator);
objRoot.addChild(objSpin);
return objRoot;
}
public BranchGroup getBranchGroup4(){
BranchGroup objRoot = new BranchGroup();
// 创建变换组,并用单位矩阵来初始化。
// 并加其作为子图的孩子结点加到子图中。
Transform3D tf3d = new Transform3D();
Transform3D tf3d2 = new Transform3D();
tf3d.rotX(Math.PI/4.0d);
tf3d2.rotY(Math.PI/4.0d);
tf3d.mul(tf3d2);
TransformGroup objRotate = new TransformGroup(tf3d);
TransformGroup objSpin = new TransformGroup();
objSpin.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
// 创建一个简单的形状叶子结点.并把加其入子图中。
// ColorCube是一个方便的工具类
objSpin.addChild(new ColorCube(0.4));
// create time varying function to drive the animation
Alpha rotationAlpha = new Alpha(-1, Alpha.INCREASING_ENABLE | Alpha.DECREASING_ENABLE, 0, 0, 4000, 0, 0, 4000, 0, 0);
//创建一个新的Behavior对象来实现预期的操作。
// 并指定其形变对象,把其作为孩子结点加入到
// 场景图中。
RotationInterpolator rotator =
new RotationInterpolator(rotationAlpha, objSpin);
// 一个范围球体是行为活跃区域。
BoundingSphere bounds = new BoundingSphere(new Point3d(3.0, 0.0, 0.0), 1.0);
rotator.setSchedulingBounds(bounds);
objSpin.addChild(rotator);
objRotate.addChild(objSpin);
objRoot.addChild(objRotate);
return objRoot;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new MainFrame(new mySphere(), 256, 256);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -