Compartir a través de


Función D3DXVec3Hermite (D3DX10Math.h)

Nota

La biblioteca de utilidades D3DX10 está en desuso. Se recomienda usar DirectXMath en su lugar.

Realiza una interpolación de spline Hermite, utilizando los vectores 3D especificados.

Sintaxis

D3DXVECTOR3* D3DXVec3Hermite(
  _Inout_       D3DXVECTOR3 *pOut,
  _In_    const D3DXVECTOR3 *pV1,
  _In_    const D3DXVECTOR3 *pT1,
  _In_    const D3DXVECTOR3 *pV2,
  _In_    const D3DXVECTOR3 *pT2,
  _In_          FLOAT       s
);

Parámetros

pOut [in, out]

Tipo: D3DXVECTOR3*

Puntero al D3DXVECTOR3 que es el resultado de la operación.

pV1 [in]

Tipo: const D3DXVECTOR3*

Puntero a una estructura D3DXVECTOR3 de origen, un vector de posición.

pT1 [in]

Tipo: const D3DXVECTOR3*

Puntero a una estructura D3DXVECTOR3 de origen, un vector tangente.

pV2 [in]

Tipo: const D3DXVECTOR3*

Puntero a una estructura D3DXVECTOR3 de origen, un vector de posición.

pT2 [in]

Tipo: const D3DXVECTOR3*

Puntero a una estructura D3DXVECTOR3 de origen, un vector tangente.

s [in]

Tipo: FLOAT

Factor de ponderación. Vea la sección Comentarios.

Valor devuelto

Tipo: D3DXVECTOR3*

Puntero a una estructura D3DXVECTOR3 que es el resultado de la interpolación de spline Hermite.

Comentarios

La función D3DXVec3Hermite interpola de (positionA, tangenteA) a (positionB, tangenteB) mediante la interpolación de spline de Hermite.

La interpolación de spline es una generalización de la spline de facilidad y salida. La rampa es una función de Q(s) con las siguientes propiedades.

Q(s) = As³ + Bs² + Cs + D (y, por lo tanto, Q's) = 3As² + 2B + C)

a) Q(0) = v1, por lo que Q'(0) = t1

b) Q(1) = v2, por lo que Q'(1) = t2

v1 es el contenido de pV1, v2 en el contenido de pV2, t1 es el contenido de pT1 y t2 es el contenido de pT2.

Estas propiedades se usan para resolver A, B, C, D.

D = v1  (from a)
C = t1  (from a)
3A + 2B = t2 - t1 (substituting for C)
A + B = v2 - v1 - t1 (substituting for C and D)

Conecte las soluciones de A,B,C y D para generar Q(s).

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

El resultado es:

Q(s) = (2v1 - 2v2 + t2 + t1)s³ + (3v2 - 3v1 - 2t1 - t2)s² + t1s + v1

Que se puede reorganizar como:

Q(s) = (2s³ - 3s² + 1)v1 + (-2s³ + 3s²)v2 + (s³ - 2s² + s)t1 + (s³ - s²)t2

Las splines hermite son útiles para controlar la animación porque la curva se ejecuta a través de todos los puntos de control. Además, dado que la posición y la tangente se especifican explícitamente en los extremos de cada segmento, es fácil crear una curva continua C2 siempre y cuando asegúrese de que la posición inicial y la tangente coinciden con los valores finales del último segmento.

El valor devuelto de esta función es el mismo valor devuelto en el parámetro pOut. De este modo, la función D3DXVec3Hermite se puede usar como parámetro para otra función.

Requisitos

Requisito Value
Encabezado
D3DX10Math.h

Consulte también

Funciones matemáticas