我的四元數執行有什麼問題?我認爲他們仍然像萬智牌一樣擁有萬向鎖。四元數行爲就像歐納
Quaternionf rotations = makeQuaternion(new Vector3f(1, 0, 0), angles.x);
rotations.mul(makeQuaternion(new Vector3f(0, 1, 0), angles.y));
rotations.mul(makeQuaternion(new Vector3f(0, 0, 1), angles.z));
Matrix4f matrix = new Matrix4f();
matrix.translate(position);
matrix.rotate(rotations);
matrix.scale(scale);
angles
包含歐拉角。人們總是告訴我,我根本不應該使用它們,但我不知道如何改變四元數的價值。我認爲Quaternionf rotations
是正確的。例如。與角度0, 90, 0
四元數包含0.00, 0.707, 0.00, 0.707 (x,y,z,w)
。這是正確的嗎?
那麼問題在哪裏?我已經閱讀了我所發現的關於這個主題的所有內容,但我顯然還是不明白。
編輯:
private static Quaternionf makeQuaternion(Vector3f n, float a) {
float w, x, y, z;
a = a/360 * (float) Math.PI * 2;
w = (float) Math.cos(a/2);
x = (float) (n.x * Math.sin(a/2));
y = (float) (n.y * Math.sin(a/2));
z = (float) (n.z * Math.sin(a/2));
Quaternionf quaternion = new Quaternionf(x, y, z, w);
return quaternion;
}
*「我的四元數執行有什麼問題?」* - 由於您沒有顯示*您的*四元數執行,所以我們無法判斷。 – luk2302
@ luk2302我認爲這是最重要的部分。我可以給你'makeQuaternion'函數,但正如我所說,我認爲它給出了正確的結果。 – Maineri
你是否正常化你的四元數? –