Fungsi XMVector3Normalize (directxmath.h)
Mengembalikan versi vektor 3D yang dinormalisasi.
Sintaks
XMVECTOR XM_CALLCONV XMVector3Normalize(
[in] FXMVECTOR V
) noexcept;
Parameter
[in] V
Vektor 3D.
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 yang kuat yang berfungsi untuk semua input floating-point, Anda dapat menggunakan kode berikut sebagai gantinya:
inline XMVECTOR XMVector3NormalizeRobust( FXMVECTOR V )
{
// Compute the maximum absolute value component.
XMVECTOR vAbs = XMVectorAbs(V);
XMVECTOR max0 = XMVectorSplatX(vAbs);
XMVECTOR max1 = XMVectorSplatY(vAbs);
XMVECTOR max2 = XMVectorSplatZ(vAbs);
max0 = XMVectorMax(max0, max1);
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);
XMVECTOR t0 = XMVector3LengthSq(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;
}
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
Target Platform | Windows |
Header | directxmath.h (termasuk DirectXMath.h) |
Lihat juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk