Microsoft DirectX 9.0 SDK Update (October 2004)

Vector2.CatmullRom Method

Language:

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

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

Definition

Visual Basic .NET Public Shared Function CatmullRom( _
    ByVal position1 As Vector2, _
    ByVal position2 As Vector2, _
    ByVal position3 As Vector2, _
    ByVal position4 As Vector2, _
    ByVal weightingFactor As Single _
) As Vector2
C# public static Vector2 CatmullRom(
    Vector2 position1,
    Vector2 position2,
    Vector2 position3,
    Vector2 position4,
    float weightingFactor
);
Managed C++ public: static Vector2 CatmullRom(
    Vector2 position1,
    Vector2 position2,
    Vector2 position3,
    Vector2 position4,
    float weightingFactor
);
JScript .NET public static function CatmullRom(
    position1 : Vector2,
    position2 : Vector2,
    position3 : Vector2,
    position4 : Vector2,
    weightingFactor : float
) : Vector2;

Parameters

position1 Microsoft.DirectX.Vector2. Source Vector2 structure that is a position vector.
position2 Microsoft.DirectX.Vector2. Source Vector2 structure that is a position vector.
position3 Microsoft.DirectX.Vector2. Source Vector2 structure that is a position vector.
position4 Microsoft.DirectX.Vector2. Source Vector2 structure that is a position vector.
weightingFactor System.Single. Weighting factor. See Remarks.

Return Value

Microsoft.DirectX.Vector2 . A Vector2 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 position1, v2 is the contents of position2, p3 is the contents of position3, p4 is the contents of position4, and s is the contents of weightingFactor.

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

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

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