?/TD> |

Microsoft DirectX 9.0 |

Performs a Hermite spline interpolation, using the specified 3-D vectors.

Syntax

D3DXVECTOR3 *WINAPI D3DXVec3Hermite(

D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV1, CONST D3DXVECTOR3 *pT1, CONST D3DXVECTOR3 *pV2, CONST D3DXVECTOR3 *pT2, FLOATs);

Parameters

pOut- [in, out] Pointer to the D3DXVECTOR3 structure that is the result of the operation.
pV1- [in] Pointer to a source
D3DXVECTOR3structure, a position vector.pT1- [in] Pointer to a source
D3DXVECTOR3structure, a tangent vector.pV2- [in] Pointer to a source
D3DXVECTOR3structure, a position vector.pT2- [in] Pointer to a source
D3DXVECTOR3structure, a tangent vector.s- [in] Weighting factor. See Remarks.

Return Value

Pointer to a

D3DXVECTOR3structure that is the result of the Hermite spline interpolation.

Remarks

TheD3DXVec3Hermitefunction interpolates from (positionA, tangentA) to (positionB, tangentB) using Hermite spline interpolation.The spline interpolation is a generalization of the ease-in, ease-out spline. The ramp is a function of Q(s) with the following properties.

Q(s) = As^{3}+ Bs^{2}+ Cs + D (and therefore, Q'(s) = 3As^{2}+ 2Bs + C) a) Q(0) = v1, so Q'(0) = t1 b) Q(1) = v2, so Q'(1) = t2v1 is the contents of

pV1, v2 in the contents ofpV2, t1 is the contents ofpT1, and t2 is the contents ofpT2.These properties are used to solve for A, B, C, D.

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)Plug in the solutions for A,B,C and D to generate Q(s).

A = 2v1 - 2v2 + t2 + t1 B = 3v2 - 3v1 - 2t1 - t2 C = t1 D = v1This yields:

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 the control points. Also, because the position and tangent are explicitly specified at the ends of each segment, it is easy to create a C2 continuous curve as long as you make sure that your starting position and tangent match the ending values of the last segment.

The return value for this function is the same value returned in the

pOutparameter. In this way, theD3DXVec3Hermitefunction can be used as a parameter for another function.

Function Information

Header d3dx9math.h Import library d3dx9.lib Minimum operating systems Windows 98