本文整理了Java中org.rajawali3d.math.Quaternion.inverse
方法的一些代码示例,展示了Quaternion.inverse
的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Quaternion.inverse
方法的具体详情如下:
包路径:org.rajawali3d.math.Quaternion
类名称: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;
}
内容来源于网络,如有侵权,请联系作者删除!