Fungsi XMQuaternionBaryCentric (directxmath.h)
Mengembalikan titik dalam koordinat barycentric, menggunakan kuaternion yang ditentukan.
Sintaks
XMVECTOR XM_CALLCONV XMQuaternionBaryCentric(
[in] FXMVECTOR Q0,
[in] FXMVECTOR Q1,
[in] FXMVECTOR Q2,
[in] float f,
[in] float g
) noexcept;
Parameter
[in] Q0
Kuaternion pertama dalam segitiga.
[in] Q1
Kuaternion kedua dalam segitiga.
[in] Q2
Kuaternion ketiga dalam segitiga.
[in] f
Faktor pembobotan. Lihat keterangannya.
[in] g
Faktor pembobotan. Lihat keterangannya.
Mengembalikan nilai
Mengembalikan kuaternion dalam koordinat barycentric.
Keterangan
Pseudocode berikut menunjukkan pengoperasian fungsi.
XMVECTOR Result;
XMVECTOR QA, QB;
float s = f + g;
if (s != 0.0f)
{
QA = XMQuaternionSlerp(Q0, Q1, s);
QB = XMQuaternionSlerp(Q0, Q2, s);
Result = XMQuaternionSlerp(QA, QB, g / s);
}
else
{
Result.x = Q0.x;
Result.y = Q0.y;
Result.z = Q0.z;
Result.w = Q0.w;
}
return Result;
Perhatikan bahwa koordinat Barycentric berfungsi untuk permukaan 'datar' tetapi tidak untuk yang 'melengkung'. Oleh karena itu, fungsi ini sedikit bekerja di sekitar. Metode alternatif untuk memadukan 3 kuaternion diberikan oleh kode berikut:
inline XMVECTOR XMQuaternionBlend(FXMVECTOR Q0, FXMVECTOR Q1, FXMVECTOR Q2, float w1, float w2)
{
// Note if you choose one of the three weights to be zero, you get a blend of two
// quaternions. This does not give you slerp of those quaternions.
float w0 = 1.0f - w1 - w2;
XMVECTOR Result = XMVector4Normalize(
XMVectorScale(Q0, w0) +
XMVectorScale(Q1, w1) +
XMVectorScale(Q2, w2));
return Result;
}
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 |
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