Microsoft DirectX 8.0 (Visual Basic)

D3DXQuaternionExp

指数関数を計算する。

D3DXQuaternionExp( _ 
    QOut As D3DQUATERNION, _ 
    Q As D3DQUATERNION)

パラメータ

QOut
演算結果である指数関数が格納される D3DQUATERNION 型。
Q
処理の基になる D3DQUATERNION 型。

エラー コード

失敗した場合はエラーが発生し、Err.Number に次のいずれかの値が設定される。

D3DERR_INVALIDCALL
D3DERR_OUTOFVIDEOMEMORY

エラー トラッピングの詳細については、Microsoft® Visual Basic® の「エラー処理」を参照すること。

注意

D3DXQuaternionExp 関数は、w == 0 の単一クオータニオンでのみ機能する。

この関数は、次の方法で実装される。

q = (0, theta * v)
Exp(q) = (Cos(theta), Sin(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])

参照

D3DXQuaternionLnD3DXQuaternionSquad