Compartir a través de


Función D3DXVec2Hermite (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 2D especificados.

Sintaxis

D3DXVECTOR2* D3DXVec2Hermite(
  _Inout_       D3DXVECTOR2 *pOut,
  _In_    const D3DXVECTOR2 *pV1,
  _In_    const D3DXVECTOR2 *pT1,
  _In_    const D3DXVECTOR2 *pV2,
  _In_    const D3DXVECTOR2 *pT2,
  _In_          FLOAT       s
);

Parámetros

pOut [in, out]

Tipo: D3DXVECTOR2*

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

pV1 [in]

Tipo: const D3DXVECTOR2*

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

pT1 [in]

Tipo: const D3DXVECTOR2*

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

pV2 [in]

Tipo: const D3DXVECTOR2*

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

pT2 [in]

Tipo: const D3DXVECTOR2*

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

s [in]

Tipo: FLOAT

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

Valor devuelto

Tipo: D3DXVECTOR2*

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

Observaciones

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

La interpolación de spline es una generalización de la spline ease-in y ease-out. 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² + 2Bs + 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 preguntas.

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 coincidan 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 D3DXVec2Hermite se puede usar como parámetro para otra función.

Requisitos

Requisito Value
Encabezado
D3DX10Math.h
Biblioteca
D3DX10.lib

Consulte también

Funciones matemáticas