Java 类javax.vecmath.AxisAngle4f 实例源码

项目:PhET    文件:_ObjExporter.java   
@Override
protected void outputEllipsoid(Point3f center, Point3f[] points, short colix) {
  if (debug) {
    debugPrint("outputEllipsoid: colix="
        + String.format("%04x", new Short(colix)));
    debugPrint("  center=" + center);
    debugPrint("  points[0]=" + points[0]);
    debugPrint("  points[1]=" + points[1]);
    debugPrint("  points[2]=" + points[2]);
  }
  if (surfacesOnly) {
    debugPrint("  Not done owing to surfacesOnly");
    return;
  }

  AxisAngle4f a = Quaternion.getQuaternionFrame(center, points[1], points[3])
      .toAxisAngle4f();
  float sx = points[1].distance(center);
  float sy = points[3].distance(center);
  float sz = points[5].distance(center);
  outputEllipsoid1(center, sx, sy, sz, a, colix);
}
项目:PhET    文件:_ObjExporter.java   
/**
 * Local implementation of outputEllipsoid.
 * 
 * @param center
 * @param rx
 * @param ry
 * @param rz
 * @param a
 * @param colix
 */
private void outputEllipsoid1(Point3f center, float rx, float ry, float rz,
                              AxisAngle4f a, short colix) {
  MeshSurface data = MeshData.getSphereData();
  addTexture(colix, null);
  String name;
  if (center instanceof Atom) {
    Atom atom = (Atom) center;
    name = atom.getAtomName().replaceAll("\\s", "") + "_Atom";
  } else if (rx == ry && rx == rz) {
    // Is a sphere
    name = "Sphere" + sphereNum++;
  } else {
    name = "Ellipsoid" + ellipsoidNum++;
  }
  setSphereMatrix(center, rx, ry, rz, a, sphereMatrix);
  addMesh(name, data, sphereMatrix, sphereMatrix, colix, null, null);
}
项目:PhET    文件:_VrmlExporter.java   
protected void outputQuaternionFrame(Point3f ptCenter, Point3f ptX,
                                     Point3f ptY, Point3f ptZ, float yScale,
                                     String pre, String post) {

  //Hey, hey -- quaternions to the rescue!
  // Just send three points to Quaternion to define a plane and return
  // the AxisAngle required to rotate to that position. That's all there is to it.

  tempQ1.set(ptX);
  tempQ2.set(ptY);
  AxisAngle4f a = Quaternion.getQuaternionFrame(ptCenter, tempQ1, tempQ2)
      .toAxisAngle4f();
  if (!Float.isNaN(a.x)) {
    output(" rotation");
    output(pre);
    output(a.x + " " + a.y + " " + a.z + " " + a.angle);
    output(post);
  }
  float sx = ptX.distance(ptCenter);
  float sy = ptY.distance(ptCenter) * yScale;
  float sz = ptZ.distance(ptCenter);
  output(" scale");
  output(pre);
  output(sx + " " + sy + " " + sz);
  output(post);
}
项目:PhET    文件:__CartesianExporter.java   
protected void setSphereMatrix(Point3f center, float rx, float ry, float rz,
                               AxisAngle4f a, Matrix4f sphereMatrix) {
  if (a != null) {
    Matrix3f mq = new Matrix3f();
    Matrix3f m = new Matrix3f();
    m.m00 = rx;
    m.m11 = ry;
    m.m22 = rz;
    mq.set(a);
    mq.mul(m);
    sphereMatrix.set(mq);
  } else {
    sphereMatrix.setIdentity();
    sphereMatrix.m00 = rx;
    sphereMatrix.m11 = ry;
    sphereMatrix.m22 = rz;
  }
  sphereMatrix.m03 = center.x;
  sphereMatrix.m13 = center.y;
  sphereMatrix.m23 = center.z;
  sphereMatrix.m33 = 1;
}
项目:Factorization    文件:RenderUtil.java   
public static TRSRTransformation getMatrix(FzOrientation fzo) {
    Quaternion fzq = Quaternion.fromOrientation(fzo.getSwapped());
    javax.vecmath.Matrix4f trans = newMat();
    javax.vecmath.Matrix4f rot = newMat();
    javax.vecmath.Matrix4f r90 = newMat();

    r90.setRotation(new AxisAngle4f(0, 1, 0, (float) Math.PI / 2));

    trans.setTranslation(new javax.vecmath.Vector3f(0.5F, 0.5F, 0.5F));
    javax.vecmath.Matrix4f iTrans = new javax.vecmath.Matrix4f(trans);
    iTrans.invert();
    rot.setRotation(fzq.toJavax());
    rot.mul(r90);

    trans.mul(rot);
    trans.mul(iTrans);

    return new TRSRTransformation(trans);
}
项目:asura-j    文件:MatrixUtilsTest.java   
/**
 * {@link jp.ac.fit.asura.nao.misc.MatrixUtils#transform(javax.vecmath.Vector3f, javax.vecmath.AxisAngle4f, float, javax.vecmath.Vector3f)}
 * のためのテスト・メソッド。
 */
public void testTransform() throws Exception {
    Vector3f v = new Vector3f();
    RobotFrame fr = new RobotFrame(null);
    fr.getTranslation().set(new Vector3f());
    fr.getAxis().set(new AxisAngle4f());
    FrameState fs = new FrameState(fr);
    fs.setAngle(0);
    MatrixUtils.transform(v, fs);
    assertTrue(new Vector3f().epsilonEquals(v, 0.0001f));

    FrameState fs2 = new FrameState(RobotTest.createRobot().get(
            Frames.HeadYaw));
    fs2.setAngle(1.0f);
    v = new Vector3f();
    MatrixUtils.transform(v, fs2);
    assertTrue(new Vector3f(0, 160, -20).epsilonEquals(v, 0.0001f));
}
项目:asura-j    文件:MatrixUtilsTest.java   
public void testRot2omega() throws Exception {
    Vector3f pyr = new Vector3f(MathUtils.toRadians(0), MathUtils
            .toRadians(20), MathUtils.toRadians(20));
    Matrix3f rot = new Matrix3f();
    MatrixUtils.pyr2rot(pyr, rot);
    System.out.println(rot);

    Vector3f omega = new Vector3f();
    MatrixUtils.rot2omega(rot, omega);
    Matrix3f a = new Matrix3f();
    a.set(new AxisAngle4f(omega, omega.length()));
    System.out.println(pyr);
    System.out.println(omega);
    System.out.println(a);

    MatrixUtils.rot2pyr(rot, pyr);
    System.out.println(pyr);
}
项目:NK-VirtualGlobe    文件:J3DEspduTransform.java   
private void init() {
    j3dChildCount = 0;
    j3dChildMap = new HashMap();
    j3dLinkMap = new HashMap();
    sensorList = new ArrayList();
    allParentPaths = new ObjectArray();

    hasChanged = new boolean[LAST_TRANSFORM_INDEX + 1];

    implGroup = new TransformGroup();

    matrix = new Matrix4f();
    tempVec = new Vector3f();
    tempAxis = new AxisAngle4f();
    tempMtx1 = new Matrix4f();
    tempMtx2 = new Matrix4f();

    transform = new Transform3D();
}
项目:NK-VirtualGlobe    文件:J3DGeoViewpoint.java   
/**
 * Private, internal, common initialisation.
 */
private void init() {
    allParentPaths = new ObjectArray();

    transform = new TransformGroup();

    BranchGroup bg = new BranchGroup();
    bg.addChild(transform);

    j3dImplNode = bg;

    axis = new AxisAngle4f();
    trans = new Vector3f();
    implTrans = new Transform3D();
    implTrans.setIdentity();
}
项目:NK-VirtualGlobe    文件:J3DTransform.java   
/**
 * Construct a default instance of this node. The defaults are set by the
 * VRML specification.
 */
public J3DTransform() {
    super("Transform");

    hasChanged = new boolean[LAST_TRANSFORM_INDEX + 1];

    implTG = new TransformGroup();
    implGroup = implTG;

    vfCenter = new float[] {0, 0, 0};
    vfRotation = new float[] {0, 0, 1, 0};
    vfScale = new float[] {1, 1, 1};
    vfScaleOrientation = new float[] {0, 0, 1, 0};
    vfTranslation = new float[] {0, 0, 0};

    matrix = new Matrix4f();
    tempVec = new Vector3f();
    tempAxis = new AxisAngle4f();
    tempMtx1 = new Matrix4f();
    tempMtx2 = new Matrix4f();

    transform = new Transform3D();
}
项目:NK-VirtualGlobe    文件:J3DViewpoint.java   
/**
 * Private, internal, common initialisation.
 */
private void init() {
    allParentPaths = new ObjectArray();

    transform = new TransformGroup();

    BranchGroup bg = new BranchGroup();
    bg.addChild(transform);

    j3dImplNode = bg;

    axis = new AxisAngle4f();
    trans = new Vector3f();
    implTrans = new Transform3D();
    implTrans.setIdentity();
}
项目:NK-VirtualGlobe    文件:J3DTextureTransform.java   
/**
 * Common initialisation functionality.
 */
private void init() {
    j3dImplNode = new Transform3D();
    listenerList = new ArrayList(1);

    v1 = new Vector3d();
    v2 = new Vector3d();
    v3 = new Vector3d();
    T = new Transform3D();
    C = new Transform3D();
    R = new Transform3D();
    S = new Transform3D();
    al = new AxisAngle4f();

    changedTransform = new Transform3D[1];
    changedTransform[0] = j3dImplNode;
}
项目:NK-VirtualGlobe    文件:J3DTextureTransform3D.java   
/**
 * Common initialisation functionality.
 */
private void init() {
    j3dImplNode = new Transform3D();
    listenerList = new ArrayList(1);

    v1 = new Vector3d();
    v2 = new Vector3d();
    v3 = new Vector3d();
    T = new Transform3D();
    C = new Transform3D();
    R = new Transform3D();
    S = new Transform3D();
    al = new AxisAngle4f();

    changedTransform = new Transform3D[1];
    changedTransform[0] = j3dImplNode;
}
项目:NK-VirtualGlobe    文件:OGLTextureTransform3D.java   
/**
 * Common internal initialisation.
 */
private void init() {
    listenerList = new ArrayList(1);
    oglMatrix = new Matrix4f();

    changedTransforms = new Matrix4f[1];
    changedTransforms[0] = oglMatrix;

    v1 = new Vector3f();
    v2 = new Vector3f();
    v3 = new Vector3f();
    T = new Matrix4f();
    C = new Matrix4f();
    R = new Matrix4f();
    S = new Matrix4f();
    al = new AxisAngle4f();
}
项目:NK-VirtualGlobe    文件:VisibilityManager.java   
/**
 * Construct a new manager for visiblity sensors.
 */
VisibilityManager() {

    picker = new PickRequest();
    picker.pickType = PickRequest.FIND_VISIBLES;
    picker.pickGeometryType = PickRequest.PICK_FRUSTUM;
    picker.pickSortType = PickRequest.SORT_ALL;
    picker.generateVWorldMatrix = true;
    picker.origin = new float[24];

    viewFrustum = new double[6];

    endPoint = new Point3f();
    viewAngle = new AxisAngle4f();
    localTx = new Matrix4f();
    prjMatrix = new Matrix4f();

    activeVisSensors = new HashSet();
    newVisSensors = new HashSet();

    matrixUtils = new MatrixUtils();
    invWorldScale = 1;

    list = new OGLVisibilityListener[LIST_START_SIZE];
    lastListener = 0;
}
项目:NK-VirtualGlobe    文件:BaseGeoTransform.java   
/**
   * Construct a default instance of this node. The defaults are set by the
   * VRML specification.
   */
  public BaseGeoTransform() {
      super("GeoTransform");

      hasChanged = new boolean[NUM_FIELDS];

      vfGeoCenter = new double[3];
      vfRotation = new float[] {0, 0, 1, 0};
      vfScale = new float[] {1, 1, 1};
      vfScaleOrientation = new float[] {0, 0, 1, 0};
      vfTranslation = new float[] {0, 0, 0};
      vfGeoSystem = new String[] {"GD","WE"};

      localCenter = new double[3];
locMtx = new Matrix4f();

      tmatrix = new Matrix4f();

      tempVec = new Vector3f();
      tempVec3d = new Vector3d();
      tempAxis = new AxisAngle4f();
      tempMtx1 = new Matrix4f();
      tempMtx2 = new Matrix4f();
origQuat = new Quat4d();
rotQuat = new Quat4d();
  }
项目:NK-VirtualGlobe    文件:BaseTransform.java   
/**
 * Construct a default instance of this node. The defaults are set by the
 * VRML specification.
 */
public BaseTransform() {
    super("Transform");

    hasChanged = new boolean[LAST_TRANSFORM_INDEX + 1];

    vfCenter = new float[] {0, 0, 0};
    vfRotation = new float[] {0, 0, 1, 0};
    vfScale = new float[] {1, 1, 1};
    vfScaleOrientation = new float[] {0, 0, 1, 0};
    vfTranslation = new float[] {0, 0, 0};

    tmatrix = new Matrix4f();

    tempVec = new Vector3f();
    //tempAxis = new Vector4f();
    tempAxis = new AxisAngle4f();
    tempMtx1 = new Matrix4f();
    tempMtx2 = new Matrix4f();
}
项目:NK-VirtualGlobe    文件:BaseCADPart.java   
/**
 * Construct a default instance of this node. The defaults are set by the
 * VRML specification.
 */
public BaseCADPart() {
    super("CADPart");

    hasChanged = new boolean[LAST_CADPART_INDEX + 1];

    vfCenter = new float[] {0, 0, 0};
    vfRotation = new float[] {0, 0, 1, 0};
    vfScale = new float[] {1, 1, 1};
    vfScaleOrientation = new float[] {0, 0, 1, 0};
    vfTranslation = new float[] {0, 0, 0};

    tmatrix = new Matrix4f();

    tempVec = new Vector3f();
    tempAxis = new AxisAngle4f();
    tempMtx1 = new Matrix4f();
    tempMtx2 = new Matrix4f();
}
项目:NK-VirtualGlobe    文件:BaseCollidableNode.java   
/**
 * Construct a new generalised joint node object.
 *
 * @param name The VRML name of this node
 */
public BaseCollidableNode(String name) {
    super(name);

    vfTranslation = new float[3];
    vfRotation = new float[] { 0, 0, 1, 0 };

    vfBboxSize = new float[] {-1, -1, -1};
    vfBboxCenter = new float[] {0, 0, 0};
    vfEnabled = true;

    tmatrix = new Matrix4f();
    tmatrix.setIdentity();
    angleTmp = new AxisAngle4f();
    positionTmp = new Vector3f();
}
项目:CustomWorldGen    文件:ModelBlockAnimation.java   
public MBJoint(String name, BlockPart part)
{
    this.name = name;
    if(part.partRotation != null)
    {
        float x = 0, y = 0, z = 0;
        switch(part.partRotation.axis)
        {
            case X:
                x = 1;
            case Y:
                y = 1;
            case Z:
                z = 1;
        }
        Quat4f rotation = new Quat4f();
        rotation.set(new AxisAngle4f(x, y, z, 0));
        Matrix4f m = new TRSRTransformation(
            TRSRTransformation.toVecmath(part.partRotation.origin),
            rotation,
            null,
            null).getMatrix();
        m.invert();
        invBindPose = new TRSRTransformation(m);
    }
    else
    {
        invBindPose = TRSRTransformation.identity();
    }
}
项目:Analyst    文件:CompositeModel.java   
/**
 *Sets initial rotation for the model and transforms it.
 */
public void initRotation() {
    float rotationX = 0.0f;
    float rotationY = 0.0f;
    float rotationZ = 0.0f;
  switch (part) {
        case LEFT_EAR:
            rotationY = 40.0f;
            break;
        case RIGHT_EAR:
            rotationY = -40.0f;
            break;
    }
    initialRotation = new Vector3f(rotationX, rotationY, rotationZ);

    initRotQuat = new Quat4f(0, 0, 0, 1);
    if (initialRotation.x != 0) {
        Quat4f xRot = new Quat4f();           
        xRot.set(new AxisAngle4f(1f,0f,0f, (float) Math.toRadians(initialRotation.x)));  
        initRotQuat.mul(xRot,initRotQuat);
    }
    if (initialRotation.y != 0) {
        Quat4f yRot = new Quat4f();
        yRot.set(new AxisAngle4f(0f, 1f, 0f, (float) Math.toRadians(initialRotation.y)));
        initRotQuat.mul(yRot,initRotQuat);
    }

    if (initialRotation.z != 0) {
        Quat4f zRot = new Quat4f();
        zRot.set(new AxisAngle4f(0f, 0f, 1f, (float) Math.toRadians(initialRotation.z)));
        initRotQuat.mul(zRot,initRotQuat);
    }/* */
    transform();
}
项目:Analyst    文件:CompositeModel.java   
/**
 * Sets the initial rotation (basic position) of model.
 * 
 * @param initialRotation initial rotation
 */
public void setInitialRotation(Vector3f initialRotation) {
    Quat4f xRot = new Quat4f();
    xRot.set(new AxisAngle4f(1f, 0f, 0f, (float) Math.toRadians(initialRotation.x)));
    Quat4f yRot = new Quat4f();
    yRot.set(new AxisAngle4f(0f, 1f, 0f, (float) Math.toRadians(initialRotation.y)));
    Quat4f zRot = new Quat4f();
    zRot.set(new AxisAngle4f(0f, 0f, 1f, (float) Math.toRadians(initialRotation.z)));
    initRotQuat = new Quat4f(0, 0, 0, 1);
    initRotQuat.mul(xRot,initRotQuat);
    initRotQuat.mul(yRot,initRotQuat);
    initRotQuat.mul(zRot,initRotQuat);
    this.initialRotation = initialRotation;
}
项目:SignPicture    文件:Debug.java   
static void quat() {
    final AxisAngle4f angle1 = new AxisAngle4f(0, 1, 0, RotationMath.toRadians(360+90));
    Log.log.info(angle1+":"+RotationMath.toDegrees(angle1.angle));
    final Quat4f quat1 = RotationMath.toQuat(angle1);
    final AxisAngle4f angle2 = RotationMath.toAxis(quat1);
    Log.log.info(angle2+":"+RotationMath.toDegrees(angle2.angle));
    final Quat4f quat2 = new Quat4f(0, 0, 0, 1);
    quat2.mul(quat1);
    final AxisAngle4f angle3 = RotationMath.toAxis(quat2);
    Log.log.info(angle3+":"+RotationMath.toDegrees(angle3.angle));
}
项目:SignPicture    文件:RotationData.java   
public static @Nonnull Quat4f toQuat(final @Nonnull AxisAngle4f axis) {
    if (axis.angle==0f)
        return newQuat();
    final Quat4f q = new Quat4f();
    q.set(axis);
    return q;
}
项目:SignPicture    文件:RotationData.java   
@Override
public @Nonnull DiffRotation diff(@Nullable KeyRotation base) {
    if (base==null)
        base = new BaseRotation();
    final AxisAngle4f axis = new AxisAngle4f(this.x, this.y, this.z, this.angle);
    final Builder<Rotate> builder = ImmutableList.builder();
    for (final ImageRotate rotate : this.rotates)
        builder.add(rotate.build());
    return new DiffRotation(base, axis, builder.build());
}
项目:PhET    文件:Escape.java   
@SuppressWarnings("unchecked")
public static String escape(Object x) {
  if (x instanceof String)
    return escape((String) x);
  if (x instanceof List<?>)
    return escape((ArrayList<ScriptVariable>) x);
  if (x instanceof BitSet) 
    return escape((BitSet) x, true);
  if (x instanceof Matrix3f) 
    return ((Matrix3f) x).toString();
  if (x instanceof Matrix4f) 
    return ((Matrix4f) x).toString();
  if (x instanceof Tuple3f)
    return escape((Tuple3f) x);
  if (x instanceof Point4f) {
    Point4f xyzw = (Point4f) x;
    return "{" + xyzw.x + " " + xyzw.y + " " + xyzw.z + " " + xyzw.w + "}";
  }
  if (x instanceof AxisAngle4f) {
    AxisAngle4f a = (AxisAngle4f) x;
    return "{" + a.x + " " + a.y + " " + a.z + " " + (float) (a.angle * 180d/Math.PI) + "}";
  }    
  if (x instanceof String[])
    return escape((String[]) x, true);
  if (x instanceof int[] 
        || x instanceof int[][]
        || x instanceof float[]
        || x instanceof float[][]
        || x instanceof float[][][]) 
    return toJSON(null, x);
  if (x instanceof Point3f[])
    return escapeArray(x);
  if (x instanceof Map)
    return escape((Map<String, Object>) x);
  return (x == null ? "null" : x.toString());
}
项目:PhET    文件:Quaternion.java   
public void set(AxisAngle4f a) {
  AxisAngle4f aa = new AxisAngle4f(a);
  if (aa.angle == 0)
    aa.y = 1;
  Matrix3f m3 = new Matrix3f();
  m3.set(aa);
  set(m3);
}
项目:PhET    文件:Quaternion.java   
public AxisAngle4f toAxisAngle4f() {
  fixQ(qTemp);
  double theta = 2 * Math.acos(qTemp.q0);
  double sinTheta2 = Math.sin(theta/2);
  Vector3f v = getNormal();
  if (sinTheta2 < 0) {
    v.scale(-1);
    theta = Math.PI - theta;
  }
  return new AxisAngle4f(v, (float) theta);
}
项目:PhET    文件:TransformManager.java   
Map<String, Object> getOrientationInfo() {
  Map<String, Object> info = new Hashtable<String, Object>();
  info.put("moveTo", getMoveToText(1, false));
  info.put("center", "center " + getCenterText());
  info.put("centerPt", fixedRotationCenter);
  AxisAngle4f aa = new AxisAngle4f();
  getAxisAngle(aa);
  info.put("axisAngle", aa);
  info.put("quaternion", new Quaternion(aa).toPoint4f());
  info.put("rotationMatrix", matrixRotate);
  info.put("rotateZYZ", getRotateZyzText(false));
  info.put("rotateXYZ", getRotateXyzText());
  info.put("transXPercent", new Float(getTranslationXPercent()));
  info.put("transYPercent", new Float(getTranslationYPercent()));
  info.put("zoom", new Float(zoomPercent));
  info.put("modelRadius", new Float(modelRadius));
  if (mode == MODE_NAVIGATION) {
    info.put("navigationCenter", "navigate center "
        + Escape.escape(navigationCenter));
    info.put("navigationOffsetXPercent", new Float(
        getNavigationOffsetPercent('X')));
    info.put("navigationOffsetYPercent", new Float(
        getNavigationOffsetPercent('Y')));
    info
        .put("navigationDepthPercent", new Float(getNavigationDepthPercent()));
  }
  return info;
}
项目:PhET    文件:_IdtfExporter.java   
@Override
protected void outputEllipsoid(Point3f center, Point3f[] points, short colix) {
  //Hey, hey -- quaternions to the rescue!
  // Just send three points to Quaternion to define a plane and return
  // the AxisAngle required to rotate to that position. That's all there is to it.

  AxisAngle4f a = Quaternion.getQuaternionFrame(center, points[1], points[3]).toAxisAngle4f();
  float sx = points[1].distance(center);
  float sy = points[3].distance(center);
  float sz = points[5].distance(center);
  setSphereMatrix(center, sx, sy, sz, a, sphereMatrix);
  outputEllipsoid(center, sphereMatrix, colix);
}
项目:NeuGen    文件:VRLDensityVisualization.java   
public void setViewPosition(Vector3f mov, int angle) {
    TransformGroup tg = this.simpleUniverse.getViewingPlatform().
            getViewPlatformTransform();
    Transform3D t3dTrans = new Transform3D();
    tg.getTransform(t3dTrans);
    t3dTrans.setTranslation(mov);
    tg.setTransform(t3dTrans);

    Transform3D t3dRot = new Transform3D();
    tg.getTransform(t3dRot);
    t3dRot.setRotation(
            new AxisAngle4f(1f, 0f, 0f, (float) Math.toRadians(angle)));
    //ViewT3D.setRotation(new AxisAngle4f(0, 0, 1, (float) Math.toRadians(45)));
    tg.setTransform(t3dRot);
}
项目:NeuGen    文件:VRLDensityVisualization.java   
public TransformGroup rotateNode(Node n) {
    Transform3D transRot = new Transform3D();
    TransformGroup tg = new TransformGroup();
    tg.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
    tg.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
    tg.setCapability(TransformGroup.ENABLE_PICK_REPORTING);

    Vector3f cross2 = new Vector3f(1.0f, 0.0f, 0.0f);
    transRot.setRotation(new AxisAngle4f(cross2, (float) Math.toRadians(90)));
    tg.setTransform(transRot);
    return tg;
}
项目:NeuGen    文件:NeuGenDensityVisualization.java   
public void setViewPosition(Vector3f mov, int angle) {
    TransformGroup tg = this.simpleUniverse.getViewingPlatform().getViewPlatformTransform();
    Transform3D t3dTrans = new Transform3D();
    tg.getTransform(t3dTrans);
    t3dTrans.setTranslation(mov);
    tg.setTransform(t3dTrans);

    Transform3D t3dRot = new Transform3D();
    tg.getTransform(t3dRot);
    t3dRot.setRotation(new AxisAngle4f(1f, 0f, 0f, (float) Math.toRadians(angle)));
    //ViewT3D.setRotation(new AxisAngle4f(0, 0, 1, (float) Math.toRadians(45)));
    tg.setTransform(t3dRot);
}
项目:NeuGen    文件:NeuGenVisualization.java   
public void setViewPosition(Vector3f mov, int angle) {
    TransformGroup tg = this.simpleU.getViewingPlatform().getViewPlatformTransform();

    Transform3D t3dTrans = new Transform3D();
    tg.getTransform(t3dTrans);
    t3dTrans.setTranslation(mov);
    tg.setTransform(t3dTrans);

    Transform3D t3dRot = new Transform3D();
    tg.getTransform(t3dRot);
    //t3dRot.setTranslation(mov);
    t3dRot.setRotation(new AxisAngle4f(1f, 0f, 0f, (float) Math.toRadians(angle)));
    //ViewT3D.setRotation(new AxisAngle4f(0, 0, 1, (float) Math.toRadians(45)));
    tg.setTransform(t3dRot);
}
项目:NeuGen    文件:NeuGenVisualization.java   
private TransformGroup moveBack(Vector3f back, double scale) {
    Transform3D transform3D = new Transform3D();
    //transform3D.setTranslation(new Vector3f(0.0f, 0.0f, 0.0f));
    //transform3D.setTranslation(new Vector3f(0f, -20f, 0f));
    transform3D.setRotation(new AxisAngle4f(1.0f, 0.0f, 0.0f, (float) Math.toRadians(270)));
    //new Vector3f(-0.3f, -0.8f, -3.0f)
    transform3D.setTranslation(back);
    transform3D.setScale(scale);
    return new TransformGroup(transform3D);
}
项目:vzome-desktop    文件:AnimationCaptureController.java   
public AnimationCaptureController( CameraController cameraController, File directory )
{       
    this .iteration = NUM_ITERATIONS;
    double rotationRadians = 2 * Math.PI / NUM_ITERATIONS;

    this.cameraController = cameraController;
    Vector3f viewRotAxis = new Vector3f( 0f, 1.618f, 1f );
    this .cameraController .mapViewToWorld( viewRotAxis );
    this .rotation = new Quat4d();
    this .rotation .set( new AxisAngle4f( viewRotAxis, (float) rotationRadians ) );

    this .parentDir = directory .isDirectory()? directory : directory .getParentFile();
}
项目:vzome-desktop    文件:AnimationCaptureController.java   
public AnimationCaptureController( CameraController cameraController, File directory )
{       
    this .iteration = NUM_ITERATIONS;
    double rotationRadians = 2 * Math.PI / NUM_ITERATIONS;

    this.cameraController = cameraController;
    Vector3f viewRotAxis = new Vector3f( 0f, 1.618f, 1f );
    this .cameraController .mapViewToWorld( viewRotAxis );
    this .rotation = new Quat4d();
    this .rotation .set( new AxisAngle4f( viewRotAxis, (float) rotationRadians ) );

    this .parentDir = directory .isDirectory()? directory : directory .getParentFile();
}
项目:Mineworld    文件:MeshRenderer.java   
@Override
public void renderTransparent() {

    Vector3f cameraPosition = worldRenderer.getActiveCamera().getPosition();
    ShaderProgram shader = ShaderManager.getInstance().getShaderProgram("gelatinousCube");
    shader.enable();

    for (EntityRef entity : gelatinous) {
        MeshComponent meshComp = entity.getComponent(MeshComponent.class);
        LocationComponent location = entity.getComponent(LocationComponent.class);
        if (location == null) continue;

        Quat4f worldRot = location.getWorldRotation();
        Vector3f worldPos = location.getWorldPosition();
        float worldScale = location.getWorldScale();
        AABB aabb = gelatinousCubeMesh.getAABB().transform(worldRot, worldPos, worldScale);
        if (worldRenderer.isAABBVisible(aabb)) {
            glPushMatrix();

            glTranslated(worldPos.x - cameraPosition.x, worldPos.y - cameraPosition.y, worldPos.z - cameraPosition.z);
            AxisAngle4f rot = new AxisAngle4f();
            rot.set(worldRot);
            glRotatef(TeraMath.RAD_TO_DEG * rot.angle, rot.x, rot.y, rot.z);
            glScalef(worldScale, worldScale, worldScale);

            shader.setFloat4("colorOffset", meshComp.color.x, meshComp.color.y, meshComp.color.z, meshComp.color.w);
            shader.setFloat("light", worldRenderer.getRenderingLightValueAt(worldPos));

            gelatinousCubeMesh.render();

            glPopMatrix();
        }
    }
}
项目:Mineworld    文件:BulletCharacterMovementSystem.java   
private void ghost(float delta, EntityRef entity, LocationComponent location, CharacterMovementComponent movementComp) {
    Vector3f desiredVelocity = new Vector3f(movementComp.getDrive());
    float maxSpeed = movementComp.maxGhostSpeed;
    if (movementComp.isRunning) {
        maxSpeed *= movementComp.runFactor;
    }

    desiredVelocity.scale(maxSpeed);

    // Modify velocity towards desired, up to the maximum rate determined by friction
    Vector3f velocityDiff = new Vector3f(desiredVelocity);
    velocityDiff.sub(movementComp.getVelocity());

    velocityDiff.scale(Math.min(GHOST_INERTIA * delta, 1.0f));

    movementComp.getVelocity().add(velocityDiff);

    // No collision, so just do the move
    Vector3f worldPos = location.getWorldPosition();
    Vector3f deltaPos = new Vector3f(movementComp.getVelocity());
    deltaPos.scale(delta);
    worldPos.add(deltaPos);
    location.setWorldPosition(worldPos);
    if (deltaPos.length() > 0) {
        entity.send(new MovedEvent(deltaPos, worldPos));
    }

    movementComp.collider.setWorldTransform(new Transform(new Matrix4f(new Quat4f(0, 0, 0, 1), worldPos, 1.0f)));

    if (movementComp.faceMovementDirection && movementComp.getVelocity().lengthSquared() > 0.01f) {
        float yaw = (float) Math.atan2(movementComp.getVelocity().x, movementComp.getVelocity().z);
        AxisAngle4f axisAngle = new AxisAngle4f(0, 1, 0, yaw);
        location.getLocalRotation().set(axisAngle);
    }
}
项目:OpenModsLib    文件:OrientationInfoGenerator.java   
private static Multimap<Orientation, XYZRotation> calculateXyzRotations(Map<Matrix3f, Orientation> fromMatrix) {
    final Multimap<Orientation, XYZRotation> toXYZRotation = HashMultimap.create();
    for (Rotation x : Rotation.values())
        for (Rotation y : Rotation.values())
            for (Rotation z : Rotation.values()) {
                final XYZRotation rotation = new XYZRotation(x, y, z);
                Quat4f q = new Quat4f(0, 0, 0, 1);

                Quat4f tmp = new Quat4f();
                tmp.set(new AxisAngle4f(0, 0, 1, z.angle));
                q.mul(tmp);

                tmp.set(new AxisAngle4f(0, 1, 0, y.angle));
                q.mul(tmp);

                tmp.set(new AxisAngle4f(1, 0, 0, x.angle));
                q.mul(tmp);

                Matrix3f m = new Matrix3f();
                m.set(q);
                roundMatrixElements(m);
                final Orientation orientation = fromMatrix.get(m);
                Preconditions.checkNotNull(orientation, rotation);
                toXYZRotation.put(orientation, rotation);
            }

    return toXYZRotation;
}