アットウィキロゴ

java0318

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