Vector2.Hermite Method |
Language: |
Performs a Hermite spline interpolation using specified 2-D vectors.
Visual Basic Public Shared Function Hermite( _
ByVal position As Vector2, _
ByVal tangent As Vector2, _
ByVal position2 As Vector2, _
ByVal tangent2 As Vector2, _
ByVal weightingFactor As Single _
) As Vector2C# public static Vector2 Hermite(
Vector2 position,
Vector2 tangent,
Vector2 position2,
Vector2 tangent2,
float weightingFactor
);C++ public:
static Vector2 Hermite(
Vector2 position,
Vector2 tangent,
Vector2 position2,
Vector2 tangent2,
float weightingFactor
);JScript public static function Hermite(
position : Vector2,
tangent : Vector2,
position2 : Vector2,
tangent2 : Vector2,
weightingFactor : float
) : Vector2;
position Microsoft.DirectX.Vector2
Source Vector2 structure that is a position vector.tangent Microsoft.DirectX.Vector2
Source Vector2 structure that is a tangent vector.position2 Microsoft.DirectX.Vector2
Source Vector2 structure that is a position vector.tangent2 Microsoft.DirectX.Vector2
Source Vector2 structure that is a tangent vector.weightingFactor System.Single
Weighting factor. See Remarks.
Microsoft.DirectX.Vector2
A Vector2 structure that is the result of the Hermite spline interpolation.
The Hermite method interpolates from (position, tangent) to (position2, tangent2) using Hermite spline interpolation.
The spline interpolation is a generalization of ease-in, ease-out spline interpolation. The ramp is a function of Q(s) with the following properties.
Q(s) = As3 + Bs2 + Cs + D (and therefore, Q'(s) = 3As2 + 2Bs + C)
a) Q(0) = v1, so Q'(0) = t1
b) Q(1) = v2, so Q'(1) = t2
In these properties, v1 is the contents of position, v2 is the contents of position2, t1 is the contents of tangent, t2 is the contents of tangent2, and s is the contents of weightingFactor.
These properties are used to solve for A, B, C, and D in the following example.
D = v1 (from a) C = t1 (from a) 3A + 2B = t2 - t-1 (substituting for C) A + B = v2 - v1 - t1 (substituting for C and D)To generate Q(s), pass in the solutions for A, B, C, and D as follows.
A = 2v1 - 2v2 + t2 + t1 B = 3v2 - 3v1 - 2t1 - t2 C = t1 D = v1The preceding example yields the following:
Q(s) = (2v1 - 2v2 + t2 + t1)s3 + (3v2 - 3v1 - 2t1 - t2)s2 + t1s + v1.which can be rearranged as:Q(s) = (2s3 - 3s2 + 1)v1 + (-2s3 + 3s2)v2 + (s3 - 2s2 + s)t1 + (s3 - s2)t2.Hermite splines are useful for controlling animation because the curve runs through all of the control points. Also, because the position and tangent are explicitly specified at the ends of each segment, it is easy to create a continuous curve, provided that the starting position and tangent match the ending values of the last segment.
Send comments about this topic to Microsoft. © Microsoft Corporation. All rights reserved.
Feedback? Please provide us with your comments on this topic.
For more help, visit the DirectX Developer Center