Função XMVector3Normalize (directxmath.h)
Retorna a versão normalizada de um vetor 3D.
Sintaxe
XMVECTOR XM_CALLCONV XMVector3Normalize(
[in] FXMVECTOR V
) noexcept;
Parâmetros
[in] V
Vetor 3D.
Valor retornado
Retorna a versão normalizada do V.
Comentários
Para um vetor de comprimento 0, essa função retorna um vetor zero. Para um vetor com comprimento infinito, ele retorna um vetor de QNaN.
Observe que, para a maioria dos aplicativos gráficos, garantir que os vetores tenham comprimentos bem definidos que não causem problemas de normalização é uma prática comum. No entanto, se você precisar de uma normalização robusta que funcione para todas as entradas de ponto flutuante, poderá usar o seguinte código em vez disso:
inline XMVECTOR XMVector3NormalizeRobust( FXMVECTOR V )
{
// Compute the maximum absolute value component.
XMVECTOR vAbs = XMVectorAbs(V);
XMVECTOR max0 = XMVectorSplatX(vAbs);
XMVECTOR max1 = XMVectorSplatY(vAbs);
XMVECTOR max2 = XMVectorSplatZ(vAbs);
max0 = XMVectorMax(max0, max1);
max0 = XMVectorMax(max0, max2);
// Divide by the maximum absolute component.
XMVECTOR normalized = XMVectorDivide(V, max0);
// Set to zero when the original length is zero.
XMVECTOR mask = XMVectorNotEqual(g_XMZero, max0);
normalized = XMVectorAndInt(normalized, mask);
XMVECTOR t0 = XMVector3LengthSq(normalized);
XMVECTOR length = XMVectorSqrt(t0);
// Divide by the length to normalize.
normalized = XMVectorDivide(normalized, length);
// Set to zero when the original length is zero or infinity. In the
// latter case, this is considered to be an unexpected condition.
normalized = XMVectorAndInt(normalized, mask);
return normalized;
}
Requisitos da plataforma
Microsoft Visual Studio 2010 ou Microsoft Visual Studio 2012 com o SDK do Windows para Windows 8. Com suporte para aplicativos da área de trabalho Win32, aplicativos da Windows Store e aplicativos Windows Phone 8.Requisitos
Plataforma de Destino | Windows |
Cabeçalho | directxmath.h (inclua DirectXMath.h) |