D3DXVec2Hermite 函式 (D3DX10Math.h)

注意

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

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

語法

D3DXVECTOR2* D3DXVec2Hermite(
  _Inout_       D3DXVECTOR2 *pOut,
  _In_    const D3DXVECTOR2 *pV1,
  _In_    const D3DXVECTOR2 *pT1,
  _In_    const D3DXVECTOR2 *pV2,
  _In_    const D3DXVECTOR2 *pT2,
  _In_          FLOAT       s
);

參數

pOut [in, out]

類型: D3DXVECTOR2*

作業結果的 D3DXVECTOR2 指標。

pV1 [in]

類型:const D3DXVECTOR2*

來源 D3DXVECTOR2 結構的指標,這是位置向量。

pT1 [in]

類型:const D3DXVECTOR2*

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

pV2 [in]

類型:const D3DXVECTOR2*

來源 D3DXVECTOR2 結構的指標,這是位置向量。

pT2 [in]

類型:const D3DXVECTOR2*

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

s [in]

類型: FLOAT

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

傳回值

類型: D3DXVECTOR2*

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

備註

D3DXVec2Hermite函式會使用 Hermite 曲線插補,從 (positionA、tangentA) 到 (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 - t-1 (substituting for C)
A + B = v2 - v1 - t1 (substituting for C and D)

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

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

這會產生:

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

其可重新排列為:

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

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

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

規格需求

需求
標頭
D3DX10Math.h
程式庫
D3DX10.lib

另請參閱

數學函式