sanyaade-g2g-repos / quimeraengine

Automatically exported from code.google.com/p/quimeraengine
0 stars 1 forks source link

QDualQuaternion Correction 001 #141

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
1------------------------------------------------------------------------

QDualQuaternion QDualQuaternion::operator * (const QBaseDualQuaternion &dqQuat) 
const
{
    return QDualQuaternion (QBaseQuaternion(this->r * dqQuat.r), QBaseQuaternion(this->r * dqQuat.d + dqQuat.r * this->d));
}

DEBE SER SUSTITUIDO POR:

QDualQuaternion QDualQuaternion::operator * (const QBaseDualQuaternion &dqQuat) 
const
{
return QDualQuaternion (QBaseQuaternion(this->r * dqQuat.r), 
QBaseQuaternion(this->r * dqQuat.d + this->d * dqQuat.r));
}

2-----------------------------------------------------------------------

    template <class VectorType>
    QDualQuaternion(const QBaseQuaternion &qR, const VectorType &vD)
    {
        QDualQuaternion Rot(qR, QBaseQuaternion(QFloat::_0, QFloat::_0, QFloat::_0, QFloat::_0));
        QDualQuaternion Desp(QBaseQuaternion(QFloat::_0, QFloat::_0, QFloat::_0, QFloat::_1),
                             QBaseQuaternion(vD.x, vD.y, vD.z, QFloat::_0));

        *this = Desp * Rot;
    }

    template <class VectorType>
    QDualQuaternion(const VectorType &vD, const QBaseQuaternion &qR)
    {
        QDualQuaternion Rot(qR, QBaseQuaternion(QFloat::_0, QFloat::_0, QFloat::_0, QFloat::_0));
        QDualQuaternion Desp(QBaseQuaternion(QFloat::_0, QFloat::_0, QFloat::_0, QFloat::_1),
                                    QBaseQuaternion(vD.x, vD.y, vD.z, QFloat::_0));

        *this = Rot * Desp;
    }

DEBE SER SUSTITUIDO POR:

template <class VectorType>
QDualQuaternion(const QBaseQuaternion &qR, const VectorType &vD)
{
QDualQuaternion Rot(qR, QBaseQuaternion(QFloat::_0, QFloat::_0, QFloat::_0, 
QFloat::_0));
QDualQuaternion Desp(QBaseQuaternion(QFloat::_0, QFloat::_0, QFloat::_0, 
QFloat::_1),
QBaseQuaternion(vD.x * QFloat::_0_5, vD.y * QFloat::_0_5, vD.z * QFloat::_0_5, 
QFloat::_0));

*this = Desp * Rot;
}

template <class VectorType>
QDualQuaternion(const VectorType &vD, const QBaseQuaternion &qR)
{
QDualQuaternion Rot(qR, QBaseQuaternion(QFloat::_0, QFloat::_0, QFloat::_0, 
QFloat::_0));
QDualQuaternion Desp(QBaseQuaternion(QFloat::_0, QFloat::_0, QFloat::_0, 
QFloat::_1),
QBaseQuaternion(vD.x * QFloat::_0_5, vD.y * QFloat::_0_5, vD.z * QFloat::_0_5, 
QFloat::_0));

*this = Rot * Desp;
}

3------------------------------------------------------------------------

inline QDualQuaternion& operator*=(const QBaseDualQuaternion &dqQuat)
    {
        QDualQuaternion aux(*this);

        this->r = aux.r * dqQuat.r;
        this->d = aux.r * dqQuat.d + dqQuat.r * aux.d;

        return *this;
    }

DEBE SER SUSTITUIDO POR:

inline QDualQuaternion& operator*=(const QBaseDualQuaternion &dqQuat)
{
QDualQuaternion aux(*this);

this->r = aux.r * dqQuat.r;
this->d = aux.r * dqQuat.d + aux.d * dqQuat.r;

return *this;
}

4------------------------------------------------------------------------

template <class VectorType>
    void TransformRotationFirst(const QBaseQuaternion &qR, const VectorType &vD)
    {
        QDualQuaternion Rot(qR, QBaseQuaternion(QFloat::_0, QFloat::_0, QFloat::_0, QFloat::_0));
        QDualQuaternion Desp(QBaseQuaternion(QFloat::_0, QFloat::_0, QFloat::_0, QFloat::_1),
                                    QBaseQuaternion(vD.x, vD.y, vD.z, QFloat::_0));

        QDualQuaternion dqTransf = Desp * Rot;

        this->Transform(dqTransf);
    }

    template <class VectorType>
    void TransformTranslationFirst(const VectorType &vD, const QBaseQuaternion &qR)
    {
        QDualQuaternion Rot(qR, QBaseQuaternion(QFloat::_0, QFloat::_0, QFloat::_0, QFloat::_0));
        QDualQuaternion Desp(QBaseQuaternion(QFloat::_0, QFloat::_0, QFloat::_0, QFloat::_1),
                                    QBaseQuaternion(vD.x, vD.y, vD.z, QFloat::_0));

        QDualQuaternion dqTransf = Rot * Desp;

        this->Transform(dqTransf);
    }

DEBE SER SUSTITUIDO POR:

template <class VectorType>
void TransformRotationFirst(const QBaseQuaternion &qR, const VectorType &vD)
{
QDualQuaternion Rot(qR, QBaseQuaternion(QFloat::_0, QFloat::_0, QFloat::_0, 
QFloat::_0));
QDualQuaternion Desp(QBaseQuaternion(QFloat::_0, QFloat::_0, QFloat::_0, 
QFloat::_1),
QBaseQuaternion(vD.x * QFloat::_0_5, vD.y * QFloat::_0_5, vD.z * QFloat::_0_5, 
QFloat::_0));

QDualQuaternion dqTransf = Desp * Rot;

this->Transform(dqTransf);
}

template <class VectorType>
void TransformTranslationFirst(const VectorType &vD, const QBaseQuaternion &qR)
{
QDualQuaternion Rot(qR, QBaseQuaternion(QFloat::_0, QFloat::_0, QFloat::_0, 
QFloat::_0));
QDualQuaternion Desp(QBaseQuaternion(QFloat::_0, QFloat::_0, QFloat::_0, 
QFloat::_1),
QBaseQuaternion(vD.x * QFloat::_0_5, vD.y * QFloat::_0_5, vD.z * QFloat::_0_5, 
QFloat::_0));

QDualQuaternion dqTransf = Rot * Desp;

this->Transform(dqTransf);
}

Original issue reported on code.google.com by Lince3D@gmail.com on 30 Mar 2011 at 8:00

GoogleCodeExporter commented 9 years ago

Original comment by Lince3D@gmail.com on 30 Mar 2011 at 8:02

GoogleCodeExporter commented 9 years ago

Original comment by jwl...@gmail.com on 30 Mar 2011 at 4:02

GoogleCodeExporter commented 9 years ago
[deleted comment]
GoogleCodeExporter commented 9 years ago
[deleted comment]
GoogleCodeExporter commented 9 years ago
Resultado de la revisión: Correcta.

-No se pueden usar Forward declarations ahí, debes incluir ambas clases ya que 
se utiliza su implementación en el archivo.

Original comment by Lince3D@gmail.com on 31 Mar 2011 at 5:38