Microsoft DirectX 8.0 (C++)

D3DXQuaternionLn

自然対数を計算する。

D3DXQUATERNION* D3DXQuaternionLn(
  D3DXQUATERNION* pOut,
  CONST D3DXQUATERNION* pQ
); 

パラメータ

pOut
[in, out] 演算結果である D3DXQUATERNION 構造体へのポインタ。
pQ
[in] 処理の基になる D3DXQUATERNION 構造体へのポインタ。

戻り値

自然対数である D3DXQUATERNION 構造体へのポインタ。

注意

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])

この関数の戻り値は、pOut パラメータの戻り値と同じである。このように、D3DXQuaternionLn 関数を別の関数のパラメータとして使用できる。

動作環境

  ヘッダー : D3dx8math.h で宣言。
  インポート ライブラリ : D3dx8.lib を使用。

参照

D3DXQuaternionExpD3DXQuaternionSquad