Microsoft DirectX 9.0 SDK Update (October 2004)

UnsafeNativeMethods.Vector4.CatmullRom Method

Language:

Note: This documentation is preliminary and is subject to change.

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

Note: For programming in Microsoft® Visual Basic® .NET or Microsoft® JScript® .NET, use the equivalent method in the Microsoft.DirectX structures.

Definition

Visual Basic .NET Public Shared Function CatmullRom( _
    ByVal pOut As Vector4, _
    ByVal pPosition1 As Vector4, _
    ByVal pPosition2 As Vector4, _
    ByVal pPosition3 As Vector4, _
    ByVal pPosition4 As Vector4, _
    ByVal weightingFactor As Single _
) As Vector4
C# public static Vector4 CatmullRom(
    Vector4 pOut,
    Vector4 pPosition1,
    Vector4 pPosition2,
    Vector4 pPosition3,
    Vector4 pPosition4,
    float weightingFactor
);
Managed C++ public: static Vector4 CatmullRom(
    Vector4 pOut,
    Vector4 pPosition1,
    Vector4 pPosition2,
    Vector4 pPosition3,
    Vector4 pPosition4,
    float weightingFactor
);
JScript .NET public static function CatmullRom(
    pOut : Vector4,
    pPosition1 : Vector4,
    pPosition2 : Vector4,
    pPosition3 : Vector4,
    pPosition4 : Vector4,
    weightingFactor : float
) : Vector4;

Parameters

pOut Microsoft.DirectX.Vector4. A Vector4 structure that is the result of the Catmull-Rom interpolation.
pPosition1 Microsoft.DirectX.Vector4. Source Vector4 structure that is a position vector.
pPosition2 Microsoft.DirectX.Vector4. Source Vector4 structure that is a position vector.
pPosition3 Microsoft.DirectX.Vector4. Source Vector4 structure that is a position vector.
pPosition4 Microsoft.DirectX.Vector4. Source Vector4 structure that is a position vector.
weightingFactor System.Single. Weighting factor. See Remarks.

Return Value

Microsoft.DirectX.Vector4 . A Vector4 structure that is the result of the Catmull-Rom interpolation.

Remarks

To derive the Catmull-Rom spline from the Hermite spline, use the following settings. In this example, v1 is the contents of pPosition1, v2 is the contents of pPosition2, p3 is the contents of pPosition3, p4 is the contents of pPosition4, and s is the contents of weightingFactor.

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

Using the following 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 the following result.
Q(s) = (2s3 - 3s2 + 1)p2 + (-2s3 + 3s2)p3 + (s3 - 2s2 + s)(p3 - p1) / 2 + (s3 - s2)(p4 - p2)/2
This result can be rearranged as follows:
Q(s) = [(-s3 + 2s2 - s)p1 + (3s3 - 5s2 + 2)p2 + (-3s3 + 4s2 + s)p3 + (s3 - s2)p4] / 2

The return value for this method is the same value returned in the pOut parameter. Resultantly, the CatmullRom method can be used as a parameter for another method.

See Also


© 2004 Microsoft Corporation. All rights reserved. Terms of use.

Feedback? Please provide us with your comments on this topic.
For more help, visit the DirectX Developer Center