org.rajawali3d.math.Quaternion.inverse()方法的使用及代码示例

x33g5p2x  于2022-01-28 转载在 其他  
字(3.5k)|赞(0)|评价(0)|浏览(120)

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

Quaternion.inverse介绍

[英]Set this Quaternion to the normalized inverse of itself.
[中]将此四元数设置为其自身的标准化逆。

代码示例

代码示例来源:origin: Rajawali/Rajawali

/**
 * Measures the angle in radians between this {@link Quaternion} and another.
 *
 * @param other {@link Quaternion} The other {@link Quaternion}.
 */
public double angleBetween(@NonNull Quaternion other) {
  final Quaternion inv = clone().inverse();
  final Quaternion res = inv.multiplyLeft(other);
  return 2.0 * Math.acos(res.w);
}

代码示例来源:origin: Rajawali/Rajawali

mTmpOrientation.inverse();
matrix[Matrix4.M33] = 1;
mTmpOrientation.setAll(mLocalOrientation).inverse();
mViewMatrix.leftMultiply(mTmpOrientation.toRotationMatrix(mScratchMatrix));
return mViewMatrix;

代码示例来源:origin: Rajawali/Rajawali

double fCos = sTmp1.dot(sTmp2);
if (fCos < 0.0f && shortestPath) {
  sTmp2.inverse();
  sTmp2.subtract(sTmp1);
  sTmp2.multiply(t);

代码示例来源:origin: Rajawali/Rajawali

public boolean isLookingAtObject(Object3D target, float maxAngle) {
    mHeadViewQuaternion.fromMatrix(mHeadViewMatrix);
    mHeadViewQuaternion.inverse();
    mForwardVec.setAll(0, 0, 1);
    mForwardVec.rotateBy(mHeadViewQuaternion);

    mHeadTranslation.setAll(mHeadViewMatrix.getTranslation());
    mHeadTranslation.subtract(target.getPosition());
    mHeadTranslation.normalize();

    return mHeadTranslation.angle(mForwardVec) < maxAngle;
  }
}

代码示例来源:origin: Rajawali/Rajawali

@Test
public void testInverseDivision() {
  final Quaternion q = new Quaternion(4d, 3d, 2d, 1d);
  final Quaternion r = new Quaternion(1d, 2d, 3d, 4d);
  final Quaternion p = q.clone().multiply(r.clone());
  // from p = q * r follows that q = p * r.inverse() and r = q.inverse() * p
  assertEquals(q.w, p.clone().multiply(r.clone().inverse()).w, 1e-14);
  assertEquals(q.x, p.clone().multiply(r.clone().inverse()).x, 1e-14);
  assertEquals(q.y, p.clone().multiply(r.clone().inverse()).y, 1e-14);
  assertEquals(q.z, p.clone().multiply(r.clone().inverse()).z, 1e-14);
  assertEquals(r.w, q.clone().inverse().multiply(p).w, 1e-14);
  assertEquals(r.x, q.clone().inverse().multiply(p).x, 1e-14);
  assertEquals(r.y, q.clone().inverse().multiply(p).y, 1e-14);
  assertEquals(r.z, q.clone().inverse().multiply(p).z, 1e-14);
}

代码示例来源:origin: Rajawali/Rajawali

@Test
public void testInverse() {
  final Quaternion q = new Quaternion(1d, 2d, 3d, 4d);
  final Quaternion out = q.inverse();
  assertNotNull(out);
  assertSame(q, out);
  assertEquals(0.03333333333333333, q.w, 1e-14);
  assertEquals(-0.06666666666666667, q.x, 1e-14);
  assertEquals(-0.1, q.y, 1e-14);
  assertEquals(-0.13333333333333333, q.z, 1e-14);
}

代码示例来源:origin: pondurii/vrVideo

mTmpOrientation.inverse();
matrix[Matrix4.M33] = 1;
mTmpOrientation.setAll(mLocalOrientation).inverse();
mViewMatrix.leftMultiply(mTmpOrientation.toRotationMatrix());

代码示例来源:origin: pondurii/vrVideo

/**
 * Performs linear interpolation between two {@link Quaternion}s and creates a new one
 * for the result.
 *
 * @param rkP {@link Quaternion} The starting point.
 * @param rkQ {@link Quaternion} The destination point.
 * @param t double The interpolation value. [0-1] Where 0 represents q1 and 1 represents q2.
 * @param shortestPath boolean indicating if the shortest path should be used.
 * @return {@link Quaternion} The interpolated {@link Quaternion}.
 */
public static Quaternion lerp(final Quaternion rkP, final Quaternion rkQ, double t, boolean shortestPath) {
  sTmp1.setAll(rkP);
  sTmp2.setAll(rkQ);
  double fCos = sTmp1.dot(sTmp2);
  if (fCos < 0.0f && shortestPath) {
    sTmp2.inverse();
    sTmp2.subtract(sTmp1);
    sTmp2.multiply(t);
    sTmp1.add(sTmp2);
  } else {
    sTmp2.subtract(sTmp1);
    sTmp2.multiply(t);
    sTmp1.add(sTmp2);
  }
  return sTmp1;
}

相关文章