Microsoft DirectX 8.0 (Visual Basic) |
D3DXQuaternionLn( _ QOut As D3DQUATERNION, _ Q As D3DQUATERNION)
失敗した場合はエラーが発生し、Err.Number に次のいずれかの値が設定される。
D3DERR_INVALIDCALL |
D3DERR_OUTOFVIDEOMEMORY |
エラー トラッピングの詳細については、Microsoft® Visual Basic® の「エラー処理」を参照すること。
D3DXQuaternionLn 関数は、正規化されたクオータニオンに対してのみ機能する。
この関数は、次の方法で実装される。
q = (Cos(theta), Sin(theta) * v) |v| = 1 ln(q) = (0, theta * v)
D3DXQuaternionExp 関数と D3DXQuaternionLn 関数は、D3DXQuaternionSquad 関数を使用するときに役に立つ。クオータニオン キーのセット (q0, q1, q2, ..., qn) を指定すると、内部四角形のポイント (a1, a2, a3, ..., an-1) が計算されて、隣接するセグメント間で接線が連続することを保証できる。
a1 a2 a3 q0 q1 q2 q3 q4 a[i] = q[i] * Exp( -(ln(inv(q[i])*q[i+1]) + ln(inv(q[i])*q[i-1])) / 4 )
(a1, a2, a3, ...) が一度計算されると、その結果を使用してカーブに沿って補間できる。
qt = Squad(t, q[i], a[i], a[i+1], q[i+1])