Funzione XMVector2Normalize (directxmath.h)
Restituisce la versione normalizzata di un vettore 2D.
Sintassi
XMVECTOR XM_CALLCONV XMVector2Normalize(
[in] FXMVECTOR V
) noexcept;
Parametri
[in] V
Vettore 2D.
Valore restituito
Restituisce la versione normalizzata di V.
Commenti
Per un vettore di lunghezza 0, questa funzione restituisce un vettore zero. Per un vettore con lunghezza infinita, restituisce un vettore di QNaN.
Si noti che per la maggior parte delle applicazioni grafiche, assicurarsi che i vettori abbiano lunghezze ben definite che non causano problemi di normalizzazione è pratica comune. Tuttavia, se è necessaria una normalizzazione affidabile che funziona per tutti gli input a virgola mobile, è possibile usare invece il codice seguente:
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;
}
Requisiti della piattaforma
Microsoft Visual Studio 2010 o Microsoft Visual Studio 2012 con Windows SDK per Windows 8. Supportato per le app desktop Win32, le app di Windows Store e Windows Phone 8 app.Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Windows |
Intestazione | directxmath.h (include DirectXMath.h) |
Vedi anche
Funzioni geometriche vettoriali della libreria DirectXMath 2D