共用方式為


D3DXVec2CatmullRom 函式 (D3dx9math.h)

注意

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

使用指定的 2D 向量執行Catmull-Rom插補。

語法

D3DXVECTOR2* D3DXVec2CatmullRom(
  _Inout_       D3DXVECTOR2 *pOut,
  _In_    const D3DXVECTOR2 *pV0,
  _In_    const D3DXVECTOR2 *pV1,
  _In_    const D3DXVECTOR2 *pV2,
  _In_    const D3DXVECTOR2 *pV3,
  _In_          FLOAT       s
);

參數

pOut [in, out]

類型: D3DXVECTOR2*

D3DXVECTOR2結構的指標,這是作業的結果。

pV0 [in]

類型:const D3DXVECTOR2*

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

pV1 [in]

類型:const D3DXVECTOR2*

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

pV2 [in]

類型:const D3DXVECTOR2*

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

pV3 [in]

類型:const D3DXVECTOR2*

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

s [in]

類型: FLOAT

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

傳回值

類型: D3DXVECTOR2*

D3DXVECTOR2結構的指標,這是Catmull-Rom插補點的結果。

備註

假設有四點 (p1、p2、p3、p4) ,請尋找函式 Q (s) ,如下所示:

Q(s) is a cubic function.
Q(s) interpolates between p2 and p3 as s ranges from 0 to 1.
Q(s) is parallel to the line joining p1 to p3 when s is 0.
Q(s) is parallel to the line joining p2 to p4 when s is 1.

Catmull-Rom曲線可以藉由設定下列方式衍生自 Hermite 曲線:

v1 = p2
v2 = p3
t1 = (p3 - p1) / 2
t2 = (p4 - p2) / 2

其中:

v1 是 pV0 的內容。

v2 是 pV1 的內容。

p3 是 pV2 的內容。

p4 是 pV3 的內容。

使用 Hermite 曲線方程式:

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

和 取代 v1、v2、t1、t2 會產生:

Q(s) = (2s3 - 3s2 + 1)p2 + (-2s3 + 3s2)p3 + (s3 - 2s2 + s)(p3 - p1) / 2 + (s3 - s2)(p4 - p2)/2

這可以重新排列為:

Q(s) = [(-s3 + 2s2 - s)p1 + (3s3 - 5s2 + 2)p2 + (-3s3 + 4s2 + s)p3 + (s3 - s2)p4] / 2

規格需求

需求
標頭
D3dx9math.h
程式庫
D3dx9.lib

另請參閱

數學函式

D3DXVec3CatmullRom

D3DXVec4CatmullRom