0
所以,我將一些C++轉換爲javascript,我真的需要知道D3DX如何定義它們的四元數運算符。如何將一個標量乘法應用於四元數
//Here's the c++ version
D3DXQUATERNION Qvel = 0.5f * otherQuat* D3DXQUATERNION(angVel.x, angVel.y, angVel.z, 0);
//Here's the js quat multiplication
function quat_mul(q1, q2) {
return
[q1.x * q2.w + q1.y * q2.z - q1.z * q2.y + q1.w * q2.x,
-q1.x * q2.z + q1.y * q2.w + q1.z * q2.x + q1.w * q2.y,
q1.x * q2.y - q1.y * q2.x + q1.z * q2.w + q1.w * q2.z,
-q1.x * q2.x - q1.y * q2.y - q1.z * q2.z + q1.w * q2.w]
是這樣的標量操作四捨五入?0.5f?
quat.x *= .5;
quat.y *= .5;
quat.z *= .5;
quat.w *= .5;
我覺得這沒有切中要害。如果你正在處理一個代表旋轉的四元數,那麼只有一個四元數是有效的。這樣的縮放不會導致除1.0以外的任何比例的單位四元數。雖然這可能是標題中的實際操作員,但不會產生縮放旋轉。 – Jherico 2015-10-23 19:59:47
@Jherico:我沒有明白你的觀點:問題顯然是關於標量的乘法,而不是旋轉的縮放。 – Karolos 2015-10-26 17:11:31
我想我的觀點是,他幾乎肯定會問錯誤的問題,並且原始的C++代碼可能不正確,如果他想要做的是應用縮放的角速度,或者將角速度轉換爲旋轉乘以時間因子。 – Jherico 2015-10-26 19:59:20