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

📄 t3dgeometry.java~29~

📁 利用Java 3D API来编写的一个Java三维动画的演示程序。这个程序将在中央显示一行3D的文字
💻 JAVA~29~
字号:
package j3ddemo;

import javax.media.j3d.Shape3D;
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.vp.*;

/**
 * <p>Title: Java 3D Demo</p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2003</p>
 * <p>Company: </p>
 * @author Sttony
 * @version 1.0
 */

public class T3DGeometry extends Shape3D {
  public T3DGeometry() {
  }
  static double cPi=3.1415926535897932384626433832795;
  // 按照指定的类型创建一个形体,参数分别是平移距离,位置矢量,旋转角速度和类型
  static Group createObject(double scale, Vector3d vPos,
                            int fD, String strType) {
    // 创建一个变换对象节点.
    Transform3D t = new Transform3D();
    t.set(scale, vPos);
    TransformGroup objTrans = new TransformGroup(t);

    // 创建第二个变换节点。
    TransformGroup spinTg = new TransformGroup();
    spinTg.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
    // 旋转轴
    Transform3D rotAxis = new Transform3D();
    // 质材的相关参数
    Appearance ap=null;
    Color3f objColor=null;
    Material mm=null;
    // 根据传入的字符串创建不同的对象
    int Type = 0;
    Primitive retObj = null;
    if (strType == "立方体")
      Type = 1;
    if (strType == "圆锥")
      Type = 2;
    if (strType == "齿轮")
      Type = 3;
    if (strType == "组合形体")
      Type = 4;
    switch (Type) {
      case 1:
        // 设置质材和渲染方式
        objColor = new Color3f(1.0f, 0.2f, 0.4f);
        ap = new Appearance();
        mm = new Material();
        mm.setLightingEnable(true);
        mm.setSpecularColor(objColor);
        ap.setMaterial(mm);

        retObj = new Box(0.2f, 0.2f, 0.2f, ap);
        break;
      case 2:
        rotAxis.rotX(cPi/4);
        // 设置质材和渲染方式
        objColor = new Color3f(0.0f, 0.2f, 0.4f);
        ap = new Appearance();
        mm = new Material();
        mm.setLightingEnable(true);
        mm.setSpecularColor(objColor);
        ap.setMaterial(mm);

        retObj= new Cone(0.1f,0.5f,ap);
        break;
      case 3:
        break;
      case 4:
        break;
      default:
        return null;
    }
    // 增加
    spinTg.addChild(retObj);
    // 为形体创建一个行为,根据传入的角速度值创建
    Alpha rotationAlpha = new Alpha( -1, Alpha.INCREASING_ENABLE,
                                    0, 0,
                                    fD, 0, 0,
                                    0, 0, 0);

    RotationInterpolator rotator =
        new RotationInterpolator(rotationAlpha, spinTg, rotAxis,
                                 0.0f, (float) Math.PI * 2.0f);

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

    rotator.setSchedulingBounds(bounds);

    objTrans.addChild(rotator);
    objTrans.addChild(spinTg);

    return objTrans;
  }
}

⌨️ 快捷键说明

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