0
返回錯誤的值我有以下代碼以提取從四元的標題。javax.vecmath四元計算(其中reffernce執行工作的正確)
import javax.vecmath.Matrix3d;
import javax.vecmath.Quat4d;
import javax.vecmath.Vector3d;
public static double toHeading(Quat4d q) {
Vector3d v = new Vector3d(1.0, 0.0, 0.0);
Matrix3d m = new Matrix3d();
m.set(q);
m.transform(v);
double headingRad = Math.atan2(v.y, v.x);
return headingRad;
}
一般來說它的工作,因爲它應該,但僅限於小角度值,我看到一個奇怪的現象。當我輸入下面的四元x=0.00666661728238647, y=0.0, z=0.0, w=0.9999777778600933
那麼它應該返回0.7622087155227671
程度,但它返回0
。當我輸入的值here在線計算器返回正確的值。對我來說,這看起來像一個錯誤。有人可以驗證這一點?我在這裏做錯了什麼?
我用下面的Java版本
java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)
非常感謝你,你的explanaition幫助解決問題!我使用了一個轉換'EulerAngle' - >'AxisAngle' - >'Quaternion',並且AxisAngle部分導致了代碼爲'double norm = x * x + y * y + z * z的問題;如果(標準<0.001)x = 1; \t y = z = 0; } else {...}'現在我將它改爲z軸,一切正常 – Westranger