UnsafeNativeMethods.Vector3.CatmullRom(Vector3,Vector3,Vector3,Vector3,Vector3,Single) Method (Microsoft.DirectX)
Performs a Catmull-Rom interpolation using specified 3-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 Public Shared Function CatmullRom( _
ByVal pOut As Vector3, _
ByVal pPosition1 As Vector3, _
ByVal pPosition2 As Vector3, _
ByVal pPosition3 As Vector3, _
ByVal pPosition4 As Vector3, _
ByVal weightingFactor As Single _
) As Vector3C# public static Vector3 CatmullRom(
Vector3 pOut,
Vector3 pPosition1,
Vector3 pPosition2,
Vector3 pPosition3,
Vector3 pPosition4,
float weightingFactor
);C++ public:
static Vector3 CatmullRom(
Vector3 pOut,
Vector3 pPosition1,
Vector3 pPosition2,
Vector3 pPosition3,
Vector3 pPosition4,
float weightingFactor
);JScript public static function CatmullRom(
pOut : Vector3,
pPosition1 : Vector3,
pPosition2 : Vector3,
pPosition3 : Vector3,
pPosition4 : Vector3,
weightingFactor : float
) : Vector3;
Parameters
pOut Microsoft.DirectX.Vector3
A Vector3 structure that is the result of the Catmull-Rom interpolation.pPosition1 Microsoft.DirectX.Vector3
Source Vector3 structure that is a position vector.pPosition2 Microsoft.DirectX.Vector3
Source Vector3 structure that is a position vector.pPosition3 Microsoft.DirectX.Vector3
Source Vector3 structure that is a position vector.pPosition4 Microsoft.DirectX.Vector3
Source Vector3 structure that is a position vector.weightingFactor System.Single
Weighting factor. See Remarks.
Return Value
Microsoft.DirectX.Vector3
A Vector3 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,
v1is the contents of pPosition1,v2is the contents of pPosition2,p3is the contents of pPosition3,p4is the contents of pPosition4, andsis the contents of weightingFactor.v1 = p2 v2 = p3 t1 = (p3 - p1) / 2 t2 = (p4 - p2) / 2Using the Hermite spline equation.
Q(s) = (2s3 - 3s2 + 1)v1 + (-2s3 + 3s2)v2 + (s3 - 2s2 + s)t1 + (s3 - s2)t2Substituting for
v1,v2,t1,t2yields the following result.Q(s) = (2s3 - 3s2 + 1)p2 + (-2s3 + 3s2)p3 + (s3 - 2s2 + s)(p3 - p1) / 2 + (s3 - s2)(p4 - p2)/2This result can be rearranged as follows:
Q(s) = [(-s3 + 2s2 - s)p1 + (3s3 - 5s2 + 2)p2 + (-3s3 + 4s2 + s)p3 + (s3 - s2)p4] / 2The return value for this method is the same value returned in the pOut parameter. This allows you to use the CatmullRom method as a parameter for another method.
See Also