Esempio n. 1
0
 def test_rotmat_0(self):
     """Test rotmat when the rotation is 0 deg (singularity)."""
     v1 = Vector([1.0, 0.8, 0])
     v2 = Vector([1.0, 0.8, 0])
     rot = rotmat(v1, v2)
     v3 = v1.left_multiply(rot)
     self.assertTrue(numpy.allclose(v1.get_array(), v3.get_array()))
Esempio n. 2
0
 def test_m2rotaxis_0(self):
     """Test 0 deg rotation. Axis must be [1, 0, 0] as per Vector documentation."""
     v1 = Vector([1.0, 0.8, 0])
     v2 = Vector([1.0, 0.8, 0])
     rot = rotmat(v1, v2)
     angle, axis = m2rotaxis(rot)
     self.assertTrue(numpy.allclose(axis.get_array(), [1, 0, 0]))
     self.assertTrue(abs(angle) < 1e-5)
Esempio n. 3
0
 def test_m2rotaxis_180(self):
     """Test 180 deg rotation."""
     v1 = Vector([1.0, 0.8, 0])
     v2 = Vector([-1.0, -0.8, 0])
     rot = rotmat(v1, v2)
     angle, axis = m2rotaxis(rot)
     self.assertTrue(abs(axis * v1) < 1e-5)  # axis orthogonal to v1
     self.assertTrue(abs(angle - numpy.pi) < 1e-5)
Esempio n. 4
0
 def test_m2rotaxis_90(self):
     """Test 90 deg rotation."""
     v1 = Vector(0, 0, 1)
     v2 = Vector(0, 1, 0)
     rot = rotmat(v1, v2)
     angle, axis = m2rotaxis(rot)
     self.assertTrue(numpy.allclose(axis.get_array(), [-1.0, 0.0, 0.0]))
     self.assertTrue(abs(angle - numpy.pi / 2) < 1e-5)
Esempio n. 5
0
 def test_transform(self):
     """Transform entities (rotation and translation)."""
     for o in (self.s, self.m, self.c, self.r, self.a):
         rotation = rotmat(Vector(1,3,5), Vector(1,0,0))
         translation=numpy.array((2.4,0,1), 'f')
         oldpos = self.get_pos(o)
         o.transform(rotation, translation)
         newpos = self.get_pos(o)
         newpos_check = numpy.dot(oldpos, rotation) + translation
         for i in range(0, 3):
             self.assertAlmostEqual(newpos[i], newpos_check[i])
Esempio n. 6
0
 def test_transform(self):
     """Transform entities (rotation and translation)."""
     for o in (self.s, self.m, self.c, self.r, self.a):
         rotation = rotmat(Vector(1,3,5), Vector(1,0,0))
         translation=numpy.array((2.4,0,1), 'f')
         oldpos = self.get_pos(o)
         o.transform(rotation, translation)
         newpos = self.get_pos(o)
         newpos_check = numpy.dot(oldpos, rotation) + translation
         for i in range(0, 3):
             self.assertAlmostEqual(newpos[i], newpos_check[i])
Esempio n. 7
0
 def test_rotmat_90(self):
     """Test regular 90 deg rotation."""
     v1 = Vector(0, 0, 1)
     v2 = Vector(0, 1, 0)
     rot = rotmat(v1, v2)
     self.assertTrue(numpy.allclose(rot[0], numpy.array([1.0, 0.0, 0.0])))
     self.assertTrue(numpy.allclose(rot[1], numpy.array([0.0, 0.0, 1.0])))
     self.assertTrue(numpy.allclose(rot[2], numpy.array([0.0, -1.0, 0.0])))
     self.assertTrue(
         numpy.allclose(v1.left_multiply(rot).get_array(), [0.0, 1.0, 0.0]))
     self.assertTrue(
         numpy.allclose(
             v1.right_multiply(numpy.transpose(rot)).get_array(),
             [0.0, 1.0, 0.0]))