Compartir a través de


Función XMQuaternionBaryCentric (directxmath.h)

Devuelve un punto en coordenadas barycéntricas, utilizando los cuaterniones especificados.

Sintaxis

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

Parámetros

[in] Q0

Primer cuaternión del triángulo.

[in] Q1

Segundo cuaternión en el triángulo.

[in] Q2

Tercer cuaternión en el triángulo.

[in] f

Factor de ponderación. Consulte los comentarios.

[in] g

Factor de ponderación. Consulte los comentarios.

Valor devuelto

Devuelve un cuaternión en coordenadas barycéntricas.

Comentarios

El pseudocódigo siguiente muestra la operación de la función.


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;
        

Tenga en cuenta que las coordenadas Barycéntricas funcionan para superficies "planas", pero no para las "curvadas". Por lo tanto, esta función es un poco alternativa. El código siguiente proporciona un método alternativo para combinar 3 cuaterniones:


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

Requisitos de la plataforma

Microsoft Visual Studio 2010 o Microsoft Visual Studio 2012 con Windows SDK para Windows 8. Compatible con aplicaciones de escritorio Win32, aplicaciones de la Tienda Windows y Windows Phone 8 aplicaciones.

Requisitos

   
Plataforma de destino Windows
Encabezado directxmath.h

Consulte también

Funciones quaternion de la biblioteca DirectXMath

XMQuaternionBaryCentricV