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]

スカラー演算 quat * 0.5f はこのままですか?

     quat.x *= .5;
     quat.y *= .5;
     quat.z *= .5;
     quat.w *= .5;
4

2 に答える 2

7

このリンクによると、それはあなたが言うようなものです(そしてクォータニオン数システムでも):

inline D3DXQUATERNION& D3DXQUATERNION::operator *= (FLOAT f)
{
    x *= f;
    y *= f;
    z *= f;
    w *= f;
    return *this;
}
于 2012-01-26T23:55:12.233 に答える