다음을 통해 공유


XMVector2Normalize 함수(directxmath.h)

정규화된 2D 벡터 버전을 반환합니다.

구문

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

매개 변수

[in] V

2D 벡터입니다.

반환 값

정규화된 V 버전을 반환합니다.

설명

길이 0의 벡터에 대해 이 함수는 0 벡터를 반환합니다. 길이가 무한인 벡터의 경우 QNaN의 벡터를 반환합니다.

대부분의 그래픽 애플리케이션에서는 벡터에 정규화 문제를 일으키지 않는 잘 정의된 길이가 있는지 확인하는 것이 일반적입니다. 그러나 모든 부동 소수점 입력에 대해 작동하는 강력한 정규화가 필요한 경우 대신 다음 코드를 사용할 수 있습니다.


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

플랫폼 요구 사항

Windows 8 Windows SDK를 사용하는 Microsoft Visual Studio 2010 또는 Microsoft Visual Studio 2012. Win32 데스크톱 앱, Windows 스토어 앱 및 Windows Phone 8개 앱에서 지원됩니다.

요구 사항

요구 사항
대상 플랫폼 Windows
헤더 directxmath.h(DirectXMath.h 포함)

추가 정보

DirectXMath 라이브러리 2D 벡터 기하학적 함수

XMVector2NormalizeEst