Função D3DXVec3Hermite (D3dx9math.h)
Observação
A biblioteca de utilitários D3DX foi preterida. Em vez disso, recomendamos que você use DirectXMath .
Executa uma interpolação de spline hermita usando os vetores 3D especificados.
Sintaxe
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*
Ponteiro para a estrutura D3DXVECTOR3 que é o resultado da operação.
-
pV1 [in]
-
Tipo: const D3DXVECTOR3*
Ponteiro para uma estrutura D3DXVECTOR3 de origem, um vetor de posição.
-
pT1 [in]
-
Tipo: const D3DXVECTOR3*
Ponteiro para uma estrutura D3DXVECTOR3 de origem, um vetor tangente.
-
pV2 [in]
-
Tipo: const D3DXVECTOR3*
Ponteiro para uma estrutura D3DXVECTOR3 de origem, um vetor de posição.
-
pT2 [in]
-
Tipo: const D3DXVECTOR3*
Ponteiro para uma estrutura D3DXVECTOR3 de origem, um vetor tangente.
-
s [in]
-
Tipo: FLOAT
Fator de ponderação. Consulte Observações.
Valor retornado
Tipo: D3DXVECTOR3*
Ponteiro para uma estrutura D3DXVECTOR3 que é o resultado da interpolação de spline Hermite.
Comentários
A função D3DXVec3Hermite interpola de (positionA, tangentA) para (positionB, tangentB) usando a interpolação de spline Hermite.
A interpolação spline é uma generalização do spline de facilidade e facilidade. A rampa é uma função de Q(s) com as propriedades a seguir.
P(s) = Asól+ Bs² + Cs + D (e, portanto, Q's) = 3As² + 2Bs + C)
a) Q(0) = v1, então Q'(0) = t1
b) Q(1) = v2, portanto Q'(1) = t2
v1 é o conteúdo de pV1, v2 no conteúdo de pV2, t1 é o conteúdo de pT1 e t2 é o conteúdo de pT2.
Essas propriedades são usadas para resolver para 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 as soluções para A, B, C e D para gerar Q(s).
A = 2v1 - 2v2 + t2 + t1
B = 3v2 - 3v1 - 2t1 - t2
C = t1
D = v1
Isso resulta em:
Q(s) = (2v1 - 2v2 + t2 + t1)s³ + (3v2 - 3v1 - 2t1 - t2)s² + t1s + v1
O que pode ser reorganizado como:
P(s) = (2sód– 3s² + 1)v1 + (-2s³ + 3s²)v2 + (s³ - 2s² + s)t1 + (s³ - s²)t2
Splines hermitas são úteis para controlar a animação porque a curva percorre todos os pontos de controle. Além disso, como a posição e a tangente são explicitamente especificadas nas extremidades de cada segmento, é fácil criar uma curva contínua C2, desde que você certifique-se de que sua posição inicial e tangente correspondam aos valores finais do último segmento.
O valor retornado para essa função é o mesmo valor retornado no parâmetro pOut. Dessa forma, a função D3DXVec3Hermite pode ser usada como um parâmetro para outra função.
Requisitos
Requisito | Valor |
---|---|
parâmetro |
|
Biblioteca |
|
Confira também