?/TD>
Microsoft DirectX 9.0

D3DXVec4CatmullRom Function


Performs a Catmull-Rom interpolation, using the specified 4-D vectors.

Syntax

D3DXVECTOR4 *WINAPI D3DXVec4CatmullRom(      

    D3DXVECTOR4 *pOut,     CONST D3DXVECTOR4 *pV1,     CONST D3DXVECTOR4 *pV2,     CONST D3DXVECTOR4 *pV3,     CONST D3DXVECTOR4 *pV4,     FLOAT s );

Parameters

pOut
[in, out] Pointer to the D3DXVECTOR4? structure that is the result of the operation.
pV1
[in] Pointer to a source D3DXVECTOR4 structure, a position vector.
pV2
[in] Pointer to a source D3DXVECTOR4 structure, a position vector.
pV3
[in] Pointer to a source D3DXVECTOR4 structure, a position vector.
pV4
[in]  Pointer to a source D3DXVECTOR4 structure, a position vector.
s
[in] Weighting factor. See Remarks.

Return Value

Pointer to a D3DXVECTOR4 structure that is the result of the Catmull-Rom interpolation.



Remarks

Given 4 points (p1, p2, p3, p4), find a function Q(s) such that:

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. 

The Catmull-Rom spline can be derived from the Hermite spline by setting:

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

where: v1 is the contents of pV1, v2 in the contents of pV2, p3 is the contents of pV3, and p4 is the contents of pV4.

Using the Hermite spline equation:

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

and substituting for v1, v2, t1, t2 yields:

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

This can be rearranging, as:

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

Function Information

Headerd3dx9math.h
Import libraryd3dx9.lib
Minimum operating systems Windows 98

See Also

D3DXVec2CatmullRom, D3DXVec3CatmullRom


© 2002 Microsoft Corporation. All rights reserved.