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 포함) |