Vector4.CatmullRom(Vector4,Vector4,Vector4,Vector4,Single) Method (Microsoft.DirectX)

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

Definition

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

Parameters

position1 Microsoft.DirectX.Vector4
Source Vector4 structure that is a position vector.
position2 Microsoft.DirectX.Vector4
Source Vector4 structure that is a position vector.
position3 Microsoft.DirectX.Vector4
Source Vector4 structure that is a position vector.
position4 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 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 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

See Also