CSDN博客

img caimouse
博客专家

D3DXVec2CatmullRom 函数

发表于2004/10/19 13:07:00  2051人阅读

D3DXVec2CatmullRom 函数


进行Catmull-Rom插值计算。这里是2-D向量插值。

定义:

D3DXVECTOR2 *WINAPI D3DXVec2CatmullRom(      

    D3DXVECTOR2 *pOut,
    const D3DXVECTOR2 *pV0,
    const D3DXVECTOR2 *pV1,
    const D3DXVECTOR2 *pV2,
    const D3DXVECTOR2 *pV3,
    FLOAT s
);

参数:

pOut

[in, out] 指向 D3DXVECTOR2 结构的操作结果。

pV0

[in] 指向 D3DXVECTOR2 结构的位置向量。

pV1

[in] 指向 D3DXVECTOR2 结构的位置向量。

pV2

[in] 指向 D3DXVECTOR2 结构的位置向量。

pV3

[in]  指向 D3DXVECTOR2 结构的位置向量。

s

[in] 权重因数。看说明。

返回值:

指向 D3DXVECTOR2 结构的Catmull-Rom插值结果。

 

说明:

如果有四个点 (p1, p2, p3, p4),找出一个函数Q(s)满足下面的条件:

Q(s)是三次函数方程。

s的范围从01时,Q(s)值在p2p3之间。

s0时,Q(s)的直线平行连接p1 p3的直线

s1时,Q(s)直线平行于连接p2 p4的直线。

Catmull-Rom样条也可以从Hermite样条取得:

v1 = p2

 v2 = p3

 t1 = (p3 - p1) / 2

 t2 = (p4 - p2) / 2

其中:

v1pV0。

v2pV1。

p3pV2。

p4pV3。

Hermite公式:

Q(s) = (2s3 - 3s2 + 1)v1 + (-2s3 + 3s2)v2 + (s3 - 2s2 + s)t1 + (s3 - s2)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
 

函数信息:

Header

d3dx9math.h

Import library

d3dx9.lib

Minimum operating systems

Windows 98

相关函数:

D3DXVec3CatmullRom, D3DXVec4CatmullRom



阅读全文
0 0

相关文章推荐

img
取 消
img