com.jogamp.opengl.math.Quaternion.setIdentity()方法的使用及代码示例

x33g5p2x  于2022-01-29 转载在 其他  
字(7.6k)|赞(0)|评价(0)|浏览(114)

本文整理了Java中com.jogamp.opengl.math.Quaternion.setIdentity方法的一些代码示例,展示了Quaternion.setIdentity的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Quaternion.setIdentity方法的具体详情如下:
包路径:com.jogamp.opengl.math.Quaternion
类名称:Quaternion
方法名:setIdentity

Quaternion.setIdentity介绍

[英]Set this quaternion to identity (x=0,y=0,z=0,w=1)
[中]将此四元数设置为标识(x=0,y=0,z=0,w=1)

代码示例

代码示例来源:origin: net.clearvolume/cleargl

public ArcBall() {
  mStartVector = new float[3];
  mEndVector = new float[3];
  mRotationQuaternion.setIdentity();
}

代码示例来源:origin: ch.unibas.cs.gravis/scalismo-native-stub

/**
 * Normalize a quaternion required if to be used as a rotational quaternion.
 * <p>
 * Implementation Details:
 * <ul>
 *   <li> {@link #setIdentity()} if {@link #magnitude()} is {@link FloatUtil#isZero(float, float) is zero} using {@link FloatUtil#EPSILON epsilon}</li>
 * </ul>
 * </p>
 * @return this quaternion for chaining.
 */
public final Quaternion normalize() {
  final float norm = magnitude();
  if ( FloatUtil.isZero(norm, FloatUtil.EPSILON) ) {
    setIdentity();
  } else {
    final float invNorm = 1f/norm;
    w *= invNorm;
    x *= invNorm;
    y *= invNorm;
    z *= invNorm;
  }
  return this;
}

代码示例来源:origin: org.jogamp.jogl/jogl-all-noawt

/**
 * Normalize a quaternion required if to be used as a rotational quaternion.
 * <p>
 * Implementation Details:
 * <ul>
 *   <li> {@link #setIdentity()} if {@link #magnitude()} is {@link FloatUtil#isZero(float, float) is zero} using {@link FloatUtil#EPSILON epsilon}</li>
 * </ul>
 * </p>
 * @return this quaternion for chaining.
 */
public final Quaternion normalize() {
  final float norm = magnitude();
  if ( FloatUtil.isZero(norm, FloatUtil.EPSILON) ) {
    setIdentity();
  } else {
    final float invNorm = 1f/norm;
    w *= invNorm;
    x *= invNorm;
    y *= invNorm;
    z *= invNorm;
  }
  return this;
}

代码示例来源:origin: org.jogamp.jogl/jogl

/**
 * Normalize a quaternion required if to be used as a rotational quaternion.
 * <p>
 * Implementation Details:
 * <ul>
 *   <li> {@link #setIdentity()} if {@link #magnitude()} is {@link FloatUtil#isZero(float, float) is zero} using {@link FloatUtil#EPSILON epsilon}</li>
 * </ul>
 * </p>
 * @return this quaternion for chaining.
 */
public final Quaternion normalize() {
  final float norm = magnitude();
  if ( FloatUtil.isZero(norm, FloatUtil.EPSILON) ) {
    setIdentity();
  } else {
    final float invNorm = 1f/norm;
    w *= invNorm;
    x *= invNorm;
    y *= invNorm;
    z *= invNorm;
  }
  return this;
}

代码示例来源:origin: ch.unibas.cs.gravis/scalismo-native-stub

/***
 * Initialize this quaternion with given normalized axis vector and rotation angle
 * <p>
 * Implementation Details:
 * <ul>
 *   <li> {@link #setIdentity()} if axis is {@link FloatUtil#isZero(float, float) is zero} using {@link FloatUtil#EPSILON epsilon}</li>
 * </ul>
 * </p>
 * @param angle rotation angle (rads)
 * @param vector axis vector normalized
 * @return this quaternion for chaining.
 *
 * @see <a href="http://web.archive.org/web/20041029003853/http://www.j3d.org/matrix_faq/matrfaq_latest.html#Q56">Matrix-FAQ Q56</a>
 * @see #toAngleAxis(float[])
 */
public final Quaternion setFromAngleNormalAxis(final float angle, final float[] vector) {
  if ( VectorUtil.isVec3Zero(vector, 0, FloatUtil.EPSILON) ) {
    setIdentity();
  } else {
    final float halfangle = angle * 0.5f;
    final float sin = FloatUtil.sin(halfangle);
    x = vector[0] * sin;
    y = vector[1] * sin;
    z = vector[2] * sin;
    w = FloatUtil.cos(halfangle);
  }
  return this;
}

代码示例来源:origin: ch.unibas.cs.gravis/scalismo-native-stub

final float factor = VectorUtil.normVec3(v1) * VectorUtil.normVec3(v2);
if ( FloatUtil.isZero(factor, FloatUtil.EPSILON ) ) {
  return setIdentity();
} else {
  final float dot = VectorUtil.dotVec3(v1, v2) / factor; // normalize

代码示例来源:origin: org.jogamp.jogl/jogl

/***
 * Initialize this quaternion with given normalized axis vector and rotation angle
 * <p>
 * Implementation Details:
 * <ul>
 *   <li> {@link #setIdentity()} if axis is {@link FloatUtil#isZero(float, float) is zero} using {@link FloatUtil#EPSILON epsilon}</li>
 * </ul>
 * </p>
 * @param angle rotation angle (rads)
 * @param vector axis vector normalized
 * @return this quaternion for chaining.
 *
 * @see <a href="http://web.archive.org/web/20041029003853/http://www.j3d.org/matrix_faq/matrfaq_latest.html#Q56">Matrix-FAQ Q56</a>
 * @see #toAngleAxis(float[])
 */
public final Quaternion setFromAngleNormalAxis(final float angle, final float[] vector) {
  if ( VectorUtil.isVec3Zero(vector, 0, FloatUtil.EPSILON) ) {
    setIdentity();
  } else {
    final float halfangle = angle * 0.5f;
    final float sin = FloatUtil.sin(halfangle);
    x = vector[0] * sin;
    y = vector[1] * sin;
    z = vector[2] * sin;
    w = FloatUtil.cos(halfangle);
  }
  return this;
}

代码示例来源:origin: org.jogamp.jogl/jogl-all-noawt

/***
 * Initialize this quaternion with given normalized axis vector and rotation angle
 * <p>
 * Implementation Details:
 * <ul>
 *   <li> {@link #setIdentity()} if axis is {@link FloatUtil#isZero(float, float) is zero} using {@link FloatUtil#EPSILON epsilon}</li>
 * </ul>
 * </p>
 * @param angle rotation angle (rads)
 * @param vector axis vector normalized
 * @return this quaternion for chaining.
 *
 * @see <a href="http://web.archive.org/web/20041029003853/http://www.j3d.org/matrix_faq/matrfaq_latest.html#Q56">Matrix-FAQ Q56</a>
 * @see #toAngleAxis(float[])
 */
public final Quaternion setFromAngleNormalAxis(final float angle, final float[] vector) {
  if ( VectorUtil.isVec3Zero(vector, 0, FloatUtil.EPSILON) ) {
    setIdentity();
  } else {
    final float halfangle = angle * 0.5f;
    final float sin = FloatUtil.sin(halfangle);
    x = vector[0] * sin;
    y = vector[1] * sin;
    z = vector[2] * sin;
    w = FloatUtil.cos(halfangle);
  }
  return this;
}

代码示例来源:origin: ch.unibas.cs.gravis/scalismo-native-stub

final float factor = VectorUtil.normVec3(v1) * VectorUtil.normVec3(v2);
if ( FloatUtil.isZero(factor, FloatUtil.EPSILON ) ) {
  return setIdentity();
} else {
  final float dot = VectorUtil.dotVec3(v1, v2) / factor; // normalize

代码示例来源:origin: org.jogamp.jogl/jogl-all-noawt

final float factor = VectorUtil.normVec3(v1) * VectorUtil.normVec3(v2);
if ( FloatUtil.isZero(factor, FloatUtil.EPSILON ) ) {
  return setIdentity();
} else {
  final float dot = VectorUtil.dotVec3(v1, v2) / factor; // normalize

代码示例来源:origin: org.jogamp.jogl/jogl

final float factor = VectorUtil.normVec3(v1) * VectorUtil.normVec3(v2);
if ( FloatUtil.isZero(factor, FloatUtil.EPSILON ) ) {
  return setIdentity();
} else {
  final float dot = VectorUtil.dotVec3(v1, v2) / factor; // normalize

代码示例来源:origin: org.jogamp.jogl/jogl

final float factor = VectorUtil.normVec3(v1) * VectorUtil.normVec3(v2);
if ( FloatUtil.isZero(factor, FloatUtil.EPSILON ) ) {
  return setIdentity();
} else {
  final float dot = VectorUtil.dotVec3(v1, v2) / factor; // normalize

代码示例来源:origin: org.jogamp.jogl/jogl-all-noawt

final float factor = VectorUtil.normVec3(v1) * VectorUtil.normVec3(v2);
if ( FloatUtil.isZero(factor, FloatUtil.EPSILON ) ) {
  return setIdentity();
} else {
  final float dot = VectorUtil.dotVec3(v1, v2) / factor; // normalize

代码示例来源:origin: org.jogamp.jogl/jogl

return setIdentity();
} else {
  float angle = headingY * 0.5f;

代码示例来源:origin: org.jogamp.jogl/jogl-all-noawt

return setIdentity();
} else {
  float angle = headingY * 0.5f;

代码示例来源:origin: ch.unibas.cs.gravis/scalismo-native-stub

return setIdentity();
} else {
  float angle = headingY * 0.5f;

代码示例来源:origin: net.clearvolume/cleargl

public Quaternion drag(float p2DPointX, float p2DPointY) {
  // Map the point to the sphere
  this.mapToSphere(p2DPointX, p2DPointY, mEndVector);
  final float[] lPerp = new float[3];
  // Compute the vector perpendicular to the begin and end vectors
  GLMatrix.cross(lPerp, mStartVector, mEndVector);
  final float lLength = GLMatrix.norm(lPerp);
  // Compute the length of the perpendicular vector
  if (lLength > Epsilon) // if its non-zero
  {
    // We're ok, so return the perpendicular vector as the transform
    // after
    // all
    mRotationQuaternion.setX(lPerp[0]);
    mRotationQuaternion.setY(lPerp[1]);
    mRotationQuaternion.setZ(lPerp[2]);
    // In the quaternion values, w is cosine (theta / 2), where theta is
    // rotation angle
    mRotationQuaternion.setW(GLMatrix.dot(mStartVector, mEndVector));
  } else
  // if its zero
  {
    // The begin and end vectors coincide, so return an identity
    // transform
    mRotationQuaternion.setIdentity();
  }
  mResultQuaternion.set(mRotationQuaternion);
  mResultQuaternion.mult(mCurrentQuaternion);
  return mResultQuaternion;
}

相关文章