D3DXVec3Hermite 函式 (D3DX10Math.h)

注意

D3DX10 公用程式程式庫已被取代。 建議您改用 DirectXMath

使用指定的 3D 向量執行 Hermite 曲線插補。

語法

D3DXVECTOR3* D3DXVec3Hermite(
  _Inout_       D3DXVECTOR3 *pOut,
  _In_    const D3DXVECTOR3 *pV1,
  _In_    const D3DXVECTOR3 *pT1,
  _In_    const D3DXVECTOR3 *pV2,
  _In_    const D3DXVECTOR3 *pT2,
  _In_          FLOAT       s
);

參數

pOut [in, out]

類型: D3DXVECTOR3*

為作業結果的 D3DXVECTOR3 指標。

pV1 [in]

類型:const D3DXVECTOR3*

來源 D3DXVECTOR3 結構的指標,位置向量。

pT1 [in]

類型:const D3DXVECTOR3*

來源 D3DXVECTOR3 結構的指標,這是正切向量。

pV2 [in]

類型:const D3DXVECTOR3*

來源 D3DXVECTOR3 結構的指標,位置向量。

pT2 [in]

類型:const D3DXVECTOR3*

來源 D3DXVECTOR3 結構的指標,這是正切向量。

s [in]

類型: FLOAT

加權因數。 請參閱<備註>。

傳回值

類型: D3DXVECTOR3*

D3DXVECTOR3 結構的指標,這是 Hermite 曲線插補的結果。

備註

D3DXVec3Hermite函式會從 (positionA、tangentA) (插入到使用 Hermite 曲線插補的 positionB、tangentB) 。

曲線插補是一般化輕鬆的簡易曲線。 坡形是具有下列屬性的 Q () 函式。

Q (s) = As}+ Bsー + Cs + D (,因此 Q' (s) = 3As) + 2Bs + C)

) Q (0) = v1,因此 Q' (0) = t1

b) Q (1) = v2,因此 Q' (1) = t2

v1 是 pV1 的內容、pV2 內容中的 v2、t1 是 pT1 的內容,而 t2 是 pT2 的內容。

這些屬性可用來解決 A、B、C、D。

D = v1  (from a)
C = t1  (from a)
3A + 2B = t2 - t1 (substituting for C)
A + B = v2 - v1 - t1 (substituting for C and D)

插入 A、B、C 和 D 的解決方案,以產生 Q () 。

A = 2v1 - 2v2 + t2 + t1
B = 3v2 - 3v1 - 2t1 - t2
C = t1
D = v1

這會產生:

Q (s) = (2v1 - 2v2 + t2 + t1) sー + (3v2 - 3v1 - 2t1 - t2) sー + t1s + v1

這可以重新排列為:

Q (s) = (2sー - 3sー + 1) v1 + (-2sー + 3s) v2 + (sー - 2sー + s) t1 + (s) t2

Hermite 曲線對於控制動畫很有用,因為曲線會透過所有控制點執行。 此外,因為每個線段的結尾明確指定位置和正切值,只要您確定開始位置和正切線符合最後一個線段的結束值,就很容易建立 C2 連續曲線。

此函式的傳回值與 pOut 參數中傳回的值相同。 如此一來, D3DXVec3Hermite 函式就可以當做另一個函式的參數使用。

規格需求

需求
標頭
D3DX10Math.h

另請參閱

數學函式