Partager via


Fonction XMQuaternionBaryCentric (directxmath.h)

Retourne un point en coordonnées barycentriques, à l’aide des quaternions spécifiés.

Syntaxe

XMVECTOR XM_CALLCONV XMQuaternionBaryCentric(
  [in] FXMVECTOR Q0,
  [in] FXMVECTOR Q1,
  [in] FXMVECTOR Q2,
  [in] float     f,
  [in] float     g
) noexcept;

Paramètres

[in] Q0

Premier quaternion dans le triangle.

[in] Q1

Deuxième quaternion dans le triangle.

[in] Q2

Troisième quaternion dans le triangle.

[in] f

Facteur de pondération. Consultez les remarques.

[in] g

Facteur de pondération. Consultez les remarques.

Valeur retournée

Retourne un quaternion en coordonnées barycentriques.

Notes

Le pseudocode suivant illustre le fonctionnement de la fonction .


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;
        

Notez que les coordonnées barycentriques fonctionnent pour les surfaces « plates », mais pas pour les surfaces « courbes ». Cette fonction est donc un peu une solution de contournement. Une autre méthode de fusion de 3 quaternions est donnée par le code suivant :


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

Configuration requise pour la plateforme

Microsoft Visual Studio 2010 ou Microsoft Visual Studio 2012 avec le SDK Windows pour Windows 8. Pris en charge pour les applications de bureau Win32, les applications du Windows Store et les applications Windows Phone 8.

Spécifications

   
Plateforme cible Windows
En-tête directxmath.h

Voir aussi

Fonctions Quaternion de la bibliothèque DirectXMath

XMQuaternionBaryCentricV