[−][src]Function directx_math::XMVectorHermite
pub fn XMVectorHermite(
Position0: FXMVECTOR,
Tangent0: FXMVECTOR,
Position1: FXMVECTOR,
Tangent1: GXMVECTOR,
t: f32
) -> XMVECTOR
Performs a Hermite spline interpolation, using the specified vectors.
Parameters
Position0
First position to interpolate from.
Tangent0
Tangent vector for the first position.
Position1
Second position to interpolate from.
Tangent1
Tangent vector for the second position.
t
Interpolation control factor.
Return value
Returns a vector containing the interpolation.
Remarks
The following pseudocode demonstrates the operation of the function:
XMVECTOR Result;
float t2 = t * t;
float t3 = t2* t;
float P0 = 2.0f * t3 - 3.0f * t2 + 1.0f;
float T0 = t3 - 2.0f * t2 + t;
float P1 = -2.0f * t3 + 3.0f * t2;
float T1 = t3 - t2;
Result.x = P0 * Position0.x + T0 * Tangent0.x + P1 * Position1.x + T1 * Tangent1.x;
Result.y = P0 * Position0.y + T0 * Tangent0.y + P1 * Position1.y + T1 * Tangent1.y;
Result.z = P0 * Position0.z + T0 * Tangent0.z + P1 * Position1.z + T1 * Tangent1.z;
Result.w = P0 * Position0.w + T0 * Tangent0.w + P1 * Position1.w + T1 * Tangent1.w;
return Result;
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.
Reference
https://docs.microsoft.com/en-us/windows/win32/api/directxmath/nf-directxmath-XMVectorHermite