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