⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stool.java

📁 JAVA编程百例书中各章节的所有例子的源代码,包括套接字编程
💻 JAVA
字号:
package ch06.section06;

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.*;
import com.sun.j3d.utils.behaviors.mouse.*;
import com.sun.j3d.utils.behaviors.keyboard.*;

public class Stool
    extends Applet {
  public BranchGroup createSceneGraph(SimpleUniverse su) {
    BranchGroup objRoot = new BranchGroup();

    BoundingSphere bounds =
        new BoundingSphere(new Point3d(0.0, 0.0, 0.0), 200.0);

    Color3f bgColor = new Color3f(.0f, 0.0f, .0f);
    Background bg = new Background(bgColor);
    bg.setApplicationBounds(bounds);
    objRoot.addChild(bg);

    Appearance app = new Appearance();

    TransformGroup xRot = new TransformGroup();
    Transform3D x = new Transform3D();
    xRot.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
    xRot.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);

    x.rotX(Math.PI / 6);
    xRot.setTransform(x);
    objRoot.addChild(xRot);

    TransformGroup trans = new TransformGroup();
    trans.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
    trans.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);

    Transform3D myTrans = new Transform3D();
    myTrans.rotZ(Math.PI / 4.0);

    xRot.addChild(trans);

    Transform3D t = new Transform3D();
    t.setTranslation(new Vector3f(0.f, 0.f, 0.f));
    TransformGroup g1 = new TransformGroup();
    g1.addChild(new Box(0.4f, 0.05f, 0.3f,
                        Box.GENERATE_TEXTURE_COORDS
                        | Box.GENERATE_NORMALS, app));

    t = new Transform3D();
    t.setTranslation(new Vector3f( -0.34f, -0.35f, -0.24f));
    TransformGroup g2 = new TransformGroup(t);
    g2.addChild(new Box(0.04f, 0.3f, 0.04f, Box.GENERATE_TEXTURE_COORDS
                        | Box.GENERATE_NORMALS, app));

    t = new Transform3D();
    t.setTranslation(new Vector3f( -0.34f, -0.325f, 0.24f));

    TransformGroup g3 = new TransformGroup(t);
    g3.addChild(new Box(0.04f, 0.3f, 0.04f, Box.GENERATE_TEXTURE_COORDS
                        | Box.GENERATE_NORMALS, app));

    t = new Transform3D();
    t.setTranslation(new Vector3f(0.34f, -0.325f, 0.24f));

    TransformGroup g4 = new TransformGroup(t);
    g4.addChild(new Box(0.04f, 0.3f, 0.04f, Box.GENERATE_TEXTURE_COORDS
                        | Box.GENERATE_NORMALS, app));

    t = new Transform3D();
    t.setTranslation(new Vector3f(0.34f, -0.325f, -0.24f));

    TransformGroup g5 = new TransformGroup(t);
    g5.addChild(new Box(0.04f, 0.3f, 0.04f, Box.GENERATE_TEXTURE_COORDS
                        | Box.GENERATE_NORMALS, app));

    t = new Transform3D();
    t.setTranslation(new Vector3f(0.f, -0.385f, -0.24f));

    TransformGroup g6 = new TransformGroup(t);
    g6.addChild(new Box(0.3f, 0.04f, 0.04f, Box.GENERATE_TEXTURE_COORDS
                        | Box.GENERATE_NORMALS, app));

    t = new Transform3D();
    t.setTranslation(new Vector3f(0.f, -0.385f, 0.24f));

    TransformGroup g7 = new TransformGroup(t);
    g7.addChild(new Box(0.3f, 0.04f, 0.04f, Box.GENERATE_TEXTURE_COORDS
                        | Box.GENERATE_NORMALS, app));

    t = new Transform3D();
    t.setTranslation(new Vector3f(0.34f, -0.25f, 0.f));

    TransformGroup g8 = new TransformGroup(t);
    g8.addChild(new Box(0.04f, 0.04f, 0.2f, Box.GENERATE_TEXTURE_COORDS
                        | Box.GENERATE_NORMALS, app));

    t = new Transform3D();
    t.setTranslation(new Vector3f( -0.34f, -0.25f, 0.f));

    TransformGroup g9 = new TransformGroup(t);
    g9.addChild(new Box(0.04f, 0.04f, 0.2f, Box.GENERATE_TEXTURE_COORDS
                        | Box.GENERATE_NORMALS, app));

    trans.addChild(g1);
    trans.addChild(g2);
    trans.addChild(g3);
    trans.addChild(g4);
    trans.addChild(g5);
    trans.addChild(g6);
    trans.addChild(g7);
    trans.addChild(g8);
    trans.addChild(g9);

    MouseRotate behavior = new MouseRotate();
    behavior.setTransformGroup(trans);
    objRoot.addChild(behavior);
    behavior.setSchedulingBounds(bounds);

    MouseZoom behavior2 = new MouseZoom();
    behavior2.setTransformGroup(trans);
    objRoot.addChild(behavior2);
    behavior2.setSchedulingBounds(bounds);

    MouseTranslate behavior3 = new MouseTranslate();
    behavior3.setTransformGroup(trans);
    objRoot.addChild(behavior3);
    behavior3.setSchedulingBounds(bounds);

    Vector3f translate = new Vector3f();
    Transform3D T3D = new Transform3D();

    // 获得观察者所处的TransformGroup对象
    TransformGroup vpTrans = su.getViewingPlatform().getViewPlatformTransform();
    // 将观察者摆放到(0,0,5)处
    translate.set(0.0f, 0.0f, 5.0f);
    T3D.setTranslation(translate);
    vpTrans.setTransform(T3D);
    // 添加KeyNavigatorBehavior对象
    KeyNavigatorBehavior keyNavBeh = new KeyNavigatorBehavior(vpTrans);
    // 设置KeyNavigatorBehavior对象的作用范围
    keyNavBeh.setSchedulingBounds(new BoundingSphere(new Point3d(), 1000.0));
    // 添加到场景中接收输入
    objRoot.addChild(keyNavBeh);

    objRoot.compile();
    return objRoot;
  }

  public Stool() {
    setLayout(new BorderLayout());
    Canvas3D c = new Canvas3D(null);
    add("Center", c);
    SimpleUniverse simpleU = new SimpleUniverse(c);
    BranchGroup scene = createSceneGraph(simpleU);

    simpleU.addBranchGraph(scene);
  }

  public static void main(String[] args) {
    new MainFrame(new Stool(), 600, 600);
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -