Exemple #1
0
    def testBasicRotationMatrices(self):
        'Test the basic rotation matrices.'
        m = Matrix.rotationMatrixForZ(45)

        v = m.multv(Vector(1.0, 0.0, 0.0))
        assert v.round(6) == [ 0.707107, 0.707107, 0.000000 ]
        v = m.multv(m.multv(Vector(1.0, 0.0, 0.0)))
        assert v.round(6) == [ 0.0, 1.0, 0.0 ]

        i = 0
        v = Vector(1.0, 0.0, 0.0)
        while (i < 8):
            v = m.multv(v)
            i += 1

        assert v.norm() == 1.0
        assert v.round(5) == [1.0, 0.0, 0.0], v

        assert m.multv(Vector(0, 0, 1)) == [0, 0, 1]

        m = Matrix.rotationMatrixForX(120)
        
        v = m.multv(Vector(0.0, 1.0, 0.0))
        assert round(v.norm(), 6) == 1.0, v
        assert v.round(6) == [ 0.0, -0.5, 0.866025 ]

        v = m.multv(Vector(0.0, 1.0, 0.0))
        v = m.multv(v)
        v = m.multv(v)

        assert abs(v.norm() - 1.0) < 0.000000000000001, v.norm() 
        assert round(v.norm(), 6) == 1.0, v.norm()
        assert v.round(6) == [ 0.0, 1.0, 0.0 ]

        m = Matrix.rotationMatrixForY(60)
        
        v = m.multv(Vector(0.0, 0.0, 1.0))
        assert abs(v.norm()) == 1.0, v.norm()
        assert v.round(6) == [ 0.866025, 0.0, 0.5 ], v

        v = m.multv(Vector(0.0, 0.0, 1.0))
        v = m.multv(v)
        v = m.multv(v)
        v = m.multv(v)
        v = m.multv(v)
        v = m.multv(v)

        assert abs(v.norm() - 1.0) < 0.000000000000001, v.norm() 
        assert round(v.norm(), 6) == 1.0, v.norm()
        assert v.round(6) == [ 0.0, 0.0, 1.0 ]