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 |
|
Consulte también