Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Mengembalikan versi vektor 4D yang dinormalisasi.
Sintaks
XMVECTOR XM_CALLCONV XMVector4Normalize(
[in] FXMVECTOR V
) noexcept;
Parameter
[in] V
Vektor 4D.
Nilai kembali
Mengembalikan versi V yang dinormalisasi.
Keterangan
Untuk vektor panjang 0, fungsi ini mengembalikan vektor nol. Untuk vektor dengan panjang tak terbatas, ia mengembalikan vektor QNaN.
Perhatikan bahwa untuk sebagian besar aplikasi grafis, memastikan vektor memiliki panjang yang terdefinisi dengan baik yang tidak menyebabkan masalah untuk normalisasi adalah praktik umum. Namun, jika Anda memerlukan normalisasi kuat yang berfungsi untuk semua input floating-point, Anda dapat menggunakan kode berikut sebagai gantinya:
inline XMVECTOR XMVector4NormalizeRobust( FXMVECTOR V )
{
// Compute the maximum absolute value component.
XMVECTOR vAbs = XMVectorAbs(V);
XMVECTOR max0 = XMVectorSplatX(vAbs);
XMVECTOR max1 = XMVectorSplatY(vAbs);
XMVECTOR max2 = XMVectorSplatZ(vAbs);
XMVECTOR max3 = XMVectorSplatW(vAbs);
max0 = XMVectorMax(max0, max1);
max2 = XMVectorMax(max2, max3);
max0 = XMVectorMax(max0, max2);
// 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);
// (sqrLength, sqrLength, sqrLength, sqrLength)
XMVECTOR t0 = XMVector4Dot(normalized, normalized);
// (length, length, length, length)
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;
}
Persyaratan Platform
Microsoft Visual Studio 2010 atau Microsoft Visual Studio 2012 dengan Windows SDK untuk Windows 8. Didukung untuk aplikasi desktop Win32, aplikasi Windows Store, dan aplikasi Windows Phone 8.Persyaratan
| Persyaratan | Nilai |
|---|---|
| Target Platform | Windows |
| Header | directxmath.h (termasuk DirectXMath.h) |