Freigeben über


XMVector2Normalize-Funktion (directxmath.h)

Gibt die normalisierte Version eines 2D-Vektors zurück.

Syntax

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

Parameter

[in] V

2D-Vektor.

Rückgabewert

Gibt die normalisierte Version von V zurück.

Hinweise

Für einen Vektor der Länge 0 gibt diese Funktion einen Nullvektor zurück. Für einen Vektor mit unendlicher Länge gibt er einen QNaN-Vektor zurück.

Beachten Sie, dass es für die meisten Grafikanwendungen üblich ist, sicherzustellen, dass die Vektoren klar definierte Längen aufweisen, die keine Probleme bei der Normalisierung verursachen. Wenn Sie jedoch eine stabile Normalisierung benötigen, die für alle Gleitkommaeingaben funktioniert, können Sie stattdessen den folgenden Code verwenden:


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;
}
    

Plattformanforderungen

Microsoft Visual Studio 2010 oder Microsoft Visual Studio 2012 mit dem Windows SDK für Windows 8. Unterstützt für Win32-Desktop-Apps, Windows Store-Apps und Windows Phone 8-Apps.

Anforderungen

Anforderung Wert
Zielplattform Windows
Kopfzeile directxmath.h (einschließlich DirectXMath.h)

Weitere Informationen

Geometrische Funktionen der DirectXMath-Bibliothek mit 2D-Vektoren

XMVector2NormalizeEst