Função XMVector2Normalize (directxmath.h)

Retorna a versão normalizada de um vetor 2D.

Sintaxe

XMVECTOR XM_CALLCONV XMVector2Normalize(
  [in] FXMVECTOR V
) noexcept;

Parâmetros

[in] V

Vetor 2D.

Retornar valor

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:


inline XMVECTOR XMVector2NormalizeRobust( FXMVECTOR V )
{
    // Compute the maximum absolute value component.
    XMVECTOR vAbs = XMVectorAbs(V);
    XMVECTOR max0 = XMVectorSplatX(vAbs);
    XMVECTOR max1 = XMVectorSplatY(vAbs);
    max0 = XMVectorMax(max0, max1);

    // 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 = XMVector2LengthSq(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 de 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

Requisito Valor
Plataforma de Destino Windows
Cabeçalho directxmath.h (inclua DirectXMath.h)

Confira também

Funções geométricas de vetor 2D da Biblioteca DirectXMath

XMVector2NormalizeEst