D3DXVec2Hermite 函式 (D3dx9math.h)
注意
D3DX 公用程式程式庫已被取代。 建議您改用 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 函式就可以當做另一個函式的參數使用。
規格需求
需求 | 值 |
---|---|
標頭 |
|
程式庫 |
|
另請參閱