コードミスがあります

クォータニオンの軸方向ベクトルの計算

project018でミスが発覚しましたので、それ以前のコードでは注意してください

クォータニオンの軸方向ベクトルの計算では、クォータニオンの回転が使われます
変換前のベクトルをV_{b},変換後のベクトルをV_{t},回転を表すクォータニオンをQとすると
(0;V_{t})=Q(0;V_{b})Q^{*}
だと思っていたのですが違うようで、
(0;V_{t})=Q^{*}(0;V_{b})Q
で計算するとうまい事いきました
ググると前のほうが正しいはずなんだけどなぁ…

オブジェクト座標のZ軸方向のベクトルを計算するコード
間違い
  1. Math::Quaternion QtTmp;
  2. Math::Vector3D VecZ;
  3. Math::Quaternion QtZ;
  4. QtZ.Mul(m_Direction,Math::Quaternion(0.0f,0.0f,1.0f,0.0f));
  5. QtTmp.Conjugate(m_Direction);
  6. QtZ.Mul(QtZ,QtTmp);
  7. VecZ=Math::Vector3D(QtZ.x,QtZ.y,QtZ.z);
  8.  
訂正
  1. Math::Vector3D VecZ;
  2. Math::Quaternion QtZ;
  3. QtZ.Conjugate(m_Direction);
  4. QtZ.Mul(Math::Quaternion(0.0f,0.0f,1.0f,0.0f));
  5. QtZ.Mul(m_Direction);
  6. VecZ=Math::Vector3D(QtZ.x,QtZ.y,QtZ.z);
  7.  

最終更新:2009年06月19日 07:34
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。