Ejemplo n.º 1
0
    def TransLine(cls, lineDualQuaternion, dualQuaternion):
        Lb = lineDualQuaternion[0]
        Mb = lineDualQuaternion[1]
        Q = dualQuaternion[0]
        QImage = dualQuaternion[1]
        QConj = Quaternion.QuaternionConj(Q)
        t = 2 * Quaternion.QuaternionProduct(QImage, QConj)
        tConj = Quaternion.QuaternionConj(t)

        La = Quaternion.rotateByQuaternion(Q, Lb)
        Ma = Quaternion.rotateByQuaternion(Q, Mb) \
             + 0.5*(Quaternion.QuaternionProduct(La, tConj) + Quaternion.QuaternionProduct(t, La))

        return (La, Ma)
Ejemplo n.º 2
0
    def CheckNormalized(cls, dualQuaternion):
        Q = dualQuaternion[0]
        QConj = Quaternion.QuaternionConj(Q)
        QImage = dualQuaternion[1]
        QImageConj = Quaternion.QuaternionConj(QImage)
        RealPart = Quaternion.QuaternionProduct(Q, QConj)
        ImagePart = Quaternion.QuaternionProduct(
            Q, QImageConj) + Quaternion.QuaternionProduct(QImage, QConj)

        if np.linalg.norm(RealPart) == 1 and -1.0e-10 < np.linalg.norm(
                ImagePart) < 1.0e-10:
            return True
        else:
            print 'RealPart:\n', RealPart
            print 'ImagePart:\n', ImagePart
            return False