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

📄 stool1.java

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

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 Stool1
    extends Applet {
  public BranchGroup createSceneGraph(SimpleUniverse su) {

    Color3f white = new Color3f(1.0f, 1.0f, 1.0f);
    Color3f red = new Color3f(1.0f, 0.0f, 0.0f);
    Color3f blue = new Color3f(0.0f, 0.0f, 1.0f);

    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);

    Color3f directionalColor = new Color3f(1.f, 1.f, 1.f);
    Vector3f vec = new Vector3f(0.f, 0.f, -1.0f);
    DirectionalLight directionalLight =
        new DirectionalLight(directionalColor, vec);
    directionalLight.setInfluencingBounds(bounds);
    objRoot.addChild(directionalLight);

    Appearance app = new Appearance();
    Material material = new Material();
    // 为物体添加材质
    material.setDiffuseColor(new Color3f(1.0f, 1.0f, 0.0f));
    // 设置辐射光效果
    app.setMaterial(material);

    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));

    PolygonAttributes dd = new PolygonAttributes();
    dd.setPolygonOffset(PolygonAttributes.POLYGON_FILL);

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

    TransformGroup g10 = new TransformGroup(t);
    g10.addChild(new Cone(0.5f, 1.0f, app));
    g10.addChild(new Box(0.2f, 0.2f, 0.2f, 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);

    DirectionalLight lightD1 = new DirectionalLight();
    lightD1.setInfluencingBounds(new BoundingSphere());
    Vector3f direction = new Vector3f(0.0f, 0.0f, -1.0f);
    direction.normalize();
    lightD1.setDirection(direction);
    lightD1.setColor(white);
    objRoot.addChild(lightD1);

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

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

    objRoot.compile();
    return objRoot;
  }

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

//    BranchGroup scene=createSceneGraph();
//    SimpleUniverse u=new SimpleUniverse(c);
//    u.getViewingPlatform().setNominalViewingTransform();
//    u.getViewingPlatform().setViewPlatform();
    simpleU.addBranchGraph(scene);
  }

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

⌨️ 快捷键说明

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