Función XMVector2Normalize (directxmath.h)
Devuelve la versión normalizada de un vector 2D.
Sintaxis
XMVECTOR XM_CALLCONV XMVector2Normalize(
[in] FXMVECTOR V
) noexcept;
Parámetros
[in] V
Vector 2D.
Valor devuelto
Devuelve la versión normalizada de V.
Comentarios
Para un vector de longitud 0, esta función devuelve un vector cero. Para un vector con longitud infinita, devuelve un vector de QNaN.
Tenga en cuenta que para la mayoría de las aplicaciones de gráficos, asegurarse de que los vectores tienen longitudes bien definidas que no causan problemas para la normalización es una práctica común. Sin embargo, si necesita una normalización sólida que funcione para todas las entradas de punto flotante, puede usar el código siguiente en su lugar:
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 la plataforma
Microsoft Visual Studio 2010 o Microsoft Visual Studio 2012 con Windows SDK para Windows 8. Compatible con aplicaciones de escritorio Win32, aplicaciones de la Tienda Windows y Windows Phone 8 aplicaciones.Requisitos
Requisito | Value |
---|---|
Plataforma de destino | Windows |
Encabezado | directxmath.h (incluya DirectXMath.h) |