?/TD>
Microsoft DirectX 9.0

D3DXVec3CatmullRom Function


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

Syntax

D3DXVECTOR3 *WINAPI D3DXVec3CatmullRom(      

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

Parameters

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

Return Value

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



Remarks

Given four 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 is 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 rearranged 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, D3DXVec4CatmullRom


© 2002 Microsoft Corporation. All rights reserved.