贵州大学实验报告
学院:计算机科学与信息学院专业:软件工程班级: 102班Java3D的编程思想显示如下:
panel.setBackground(Color.WHITE);
panel.setSize(600, 600);
panel.setVisible(true);
g = panel.getGraphics();
}
class KeyMonitor extends KeyAdapter {
public void keyPressed(KeyEvent e) {
switch (e.getKeyCode()) {
case KeyEvent.VK_3:
BasicConstruct bc = new BasicConstruct();
bc.addMyBox(x, y, z, bc);
break;
default:
;
}
}
}
}
三维图形的实现类:
package wangqian.draw.transform;
import javax.swing.JFrame;
import java.awt.*;
import javax.media.j3d.Canvas3D;
import com.sun.j3d.utils.universe.SimpleUniverse;
import javax.media.j3d.BranchGroup;
import com.sun.j3d.utils.geometry.Box;
import javax.vecmath.*;
import javax.media.j3d.DirectionalLight;
import javax.media.j3d.BoundingSphere;
import javax.media.j3d.Appearance;
import javax.media.j3d.Material;
import javax.media.j3d.TransformGroup;
import com.sun.j3d.utils.behaviors.mouse.*;
public class BasicConstruct extends JFrame {
protected SimpleUniverse simpleU;
protected BranchGroup rootBranchGroup;
public BasicConstruct() {
initial_setup();
}
protected void initial_setup() {
getContentPane().setLayout(new BorderLayout());// 得到框架和设置布局GraphicsConfiguration config = SimpleUniverse
.getPreferredConfiguration();// 得到配置函数
Canvas3D canvas3D = new Canvas3D(config);// 创建3d图形的面板
getContentPane().add("Center", canvas3D);// 把3d图形面板添加到框架上simpleU = new SimpleUniverse(canvas3D);// 设置3d图形的画布形式
rootBranchGroup = new BranchGroup();
}
public void addDirectionalLight(Vector3f direction, Color3f color) { BoundingSphere bounds = new BoundingSphere();
bounds.setRadius(1000d);
DirectionalLight lightD = new DirectionalLight(color, direction);
lightD.setInfluencingBounds(bounds);
rootBranchGroup.addChild(lightD);
}
public void finalise() {
simpleU.addBranchGraph(rootBranchGroup);
simpleU.getViewingPlatform().setNominalViewingTransform();
}
public void addMyBox(float x, float y, float z, BasicConstruct bc) { bc.setSize(600,600);
bc.addBox(x, y, z, new Color3f(1, 0, 0), new Color3f(1, 0, 0));
bc.addDirectionalLight(new Vector3f(0f, 0f, -1),
new Color3f(1f, 1f, 0f));
bc.finalise();
bc.show();
return;
}
public void addBox(float x, float y, float z, Color3f diffuse, Color3f spec) { Appearance app = new Appearance();
Material mat = new Material();
mat.setDiffuseColor(diffuse);
mat.setSpecularColor(spec);
mat.setShininess(5.0f);
app.setMaterial(mat);。