ポリゴンを表示するプログラム
Posted feedbacks - Java
題意を、
・ポリゴンによって任意の立体を表示する。
・立体は回転させる。
という意味と解釈しました。
Java3Dによって立方体を回転させています。回転はY軸方向とX軸方向のそれぞれで行っています(Y軸方向だけでも良かったのですが、それでは全部の面が見えないのでX軸方向の回転を追加しました)。
・ポリゴンによって任意の立体を表示する。
・立体は回転させる。
という意味と解釈しました。
Java3Dによって立方体を回転させています。回転はY軸方向とX軸方向のそれぞれで行っています(Y軸方向だけでも良かったのですが、それでは全部の面が見えないのでX軸方向の回転を追加しました)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | import javax.swing.*;
import java.awt.*;
import javax.media.j3d.*;
import javax.vecmath.*;
import com.sun.j3d.utils.universe.*;
import com.sun.j3d.utils.geometry.ColorCube;
@SuppressWarnings("serial")
public class Sample3D extends JFrame {
public BranchGroup createSceneGraph() {
BranchGroup objRoot = new BranchGroup();
TransformGroup objTrans = new TransformGroup();
objTrans.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
objRoot.addChild(objTrans);
Transform3D axis = new Transform3D();
axis.rotZ(Math.PI / 2);
BoundingSphere bounds = new BoundingSphere(new Point3d(), 100.0);
RotationInterpolator rotator = new RotationInterpolator(new Alpha(-1,
20 * 4000), objTrans, axis, 0.0f, (float) Math.PI * 2.0f);
rotator.setSchedulingBounds(bounds);
objRoot.addChild(rotator);
TransformGroup objTrans2 = new TransformGroup();
objTrans2.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
objTrans.addChild(objTrans2);
rotator = new RotationInterpolator(new Alpha(-1, 4000), objTrans2);
rotator.setSchedulingBounds(bounds);
objRoot.addChild(rotator);
objTrans2.addChild(new ColorCube(0.4));
objRoot.compile();
return objRoot;
}
public Sample3D() {
getContentPane().setLayout(new BorderLayout());
GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration();
Canvas3D canvas = new Canvas3D(config);
getContentPane().add(canvas, BorderLayout.CENTER);
BranchGroup scene = createSceneGraph();
SimpleUniverse universe = new SimpleUniverse(canvas);
universe.getViewingPlatform().setNominalViewingTransform();
universe.addBranchGraph(scene);
}
public static void main(String[] args) {
Sample3D sample = new Sample3D();
sample.setBounds(10, 10, 480, 480);
sample.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
sample.setVisible(true);
}
}
|


ところてん
#5940()
Rating0/4=0.00
[ reply ]