import javax.media.j3d.*;
import javax.vecmath.*;
import com.sun.j3d.utils.universe.*;
import com.sun.j3d.utils.geometry.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
class game0318 extends Frame implements Runnable{
SimpleUniverse universe;
BranchGroup group1;
TransformGroup transform_group1;
Transform3D transform1;
public static void main(String [] args) {
Frame f=new game0318();
f.setTitle("game0318");
f.setSize(700,700);
f.setBackground(Color.yellow);
f.setVisible(true);
}
game0318(){
space3d();
cube3d();
camera3d();
Thread th=new Thread(this);
th.start();
addWindowListener(new stopwin());
}
class stopwin extends WindowAdapter{
public void windowClosing(WindowEvent we){System.exit(0);}
}
public void run(){
int t;
float x;
t=0;
while(t<100){
x=t*0.01f;
transform1.set(new Vector3d(x, 2*x, x));
transform_group1.setTransform(transform1);
try{
Thread.sleep(100);
}catch(InterruptedException e){}
t=t+1;
}
}
void space3d(){
Panel cp = new Panel();
cp.setLayout(null);
this.add(cp);
GraphicsConfiguration g_config = SimpleUniverse.getPreferredConfiguration();
Canvas3D canvas = new Canvas3D(g_config);
canvas.setBounds(0,0,700,700);
cp.add(canvas);
universe = new SimpleUniverse(canvas);
}
void cube3d(){
group1 = new BranchGroup();
ColorCube cube = new ColorCube(0.4f);
transform_group1 = new TransformGroup();
transform_group1.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
transform_group1.addChild(cube);
transform1 = new Transform3D();
group1.addChild(transform_group1);
universe.addBranchGraph(group1);
}
void camera3d(){
ViewingPlatform vp = universe.getViewingPlatform();
TransformGroup Camera = vp.getViewPlatformTransform();
Transform3D view_pos = new Transform3D();
Vector3f pos_vec = new Vector3f(1.4f,1.4f,1.4f);
view_pos.setTranslation(pos_vec);
Transform3D view_dir = new Transform3D();
Transform3D view_dir2 = new Transform3D();
view_dir.rotY(Math.PI/4);
view_dir2.rotX(-Math.PI/4 + 0.1f);
view_dir.mul(view_dir2);
view_pos.mul(view_dir);
Camera.setTransform(view_pos);
this.setVisible(true);
}
}
最終更新:2011年02月19日 02:14