Compartir a través de


Función D3DXVec4Hermite (D3DX10Math.h)

Nota

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

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

Sintaxis

D3DXVECTOR4* D3DXVec4Hermite(
  _Inout_       D3DXVECTOR4 *pOut,
  _In_    const D3DXVECTOR4 *pV1,
  _In_    const D3DXVECTOR4 *pT1,
  _In_    const D3DXVECTOR4 *pV2,
  _In_    const D3DXVECTOR4 *pT2,
  _In_          FLOAT       s
);

Parámetros

pOut [in, out]

Tipo: D3DXVECTOR4*

Puntero a D3DXVECTOR4 que es el resultado de la operación.

pV1 [in]

Tipo: const D3DXVECTOR4*

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

pT1 [in]

Tipo: const D3DXVECTOR4*

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

pV2 [in]

Tipo: const D3DXVECTOR4*

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

pT2 [in]

Tipo: const D3DXVECTOR4*

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

s [in]

Tipo: FLOAT

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

Valor devuelto

Tipo: D3DXVECTOR4*

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

Observaciones

La función D3DXVec4Hermite 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 - t-1 (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 D3DXVec4Hermite se puede usar como parámetro para otra función.

Requisitos

Requisito Value
Encabezado
D3DX10Math.h

Consulte también

Funciones matemáticas