Function directx_math::XMVectorHermite[][src]

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