def test_transform(self):
        transform = mut.Isometry3()
        X = np.eye(4, 4)
        self.assertTrue(np.allclose(transform.matrix(), X))
        self.assertEquals(str(transform), str(X))
        R = np.array([[0., 1, 0], [-1, 0, 0], [0, 0, 1]])
        p = np.array([1., 2, 3])
        X = np.vstack((np.hstack((R, p.reshape((-1, 1)))), [0, 0, 0, 1]))
        transform = mut.Isometry3(rotation=R, translation=p)
        self.assertTrue(np.allclose(transform.matrix(), X))
        self.assertTrue(np.allclose(transform.translation(), p))
        transform.set_translation(-p)
        self.assertTrue(np.allclose(transform.translation(), -p))
        self.assertTrue(np.allclose(transform.rotation(), R))
        transform.set_rotation(R.T)
        self.assertTrue(np.allclose(transform.rotation(), R.T))
        # - Check transactions for bad values.
        transform = mut.Isometry3(rotation=R, translation=p)
        R_bad = np.copy(R)
        R_bad[0, 0] = 10.
        with self.assertRaises(RuntimeError):
            transform.set_rotation(R_bad)
        self.assertTrue(np.allclose(R, transform.rotation()))
        X_bad = np.copy(X)
        X_bad[:3, :3] = R_bad
        with self.assertRaises(RuntimeError):
            transform.set_matrix(X_bad)
        self.assertTrue(np.allclose(X, transform.matrix()))

        # Test `type_caster`s.
        value = test_util.create_isometry()
        self.assertTrue(isinstance(value, mut.Isometry3))
        test_util.check_isometry(value)
Beispiel #2
0
 def test_transform(self):
     # - Default constructor
     transform = mut.Isometry3()
     X = np.eye(4, 4)
     self.assertTrue(np.allclose(transform.matrix(), X))
     self.assertEqual(str(transform), str(X))
     # - Constructor with (X)
     transform = mut.Isometry3(matrix=X)
     self.assertTrue(np.allclose(transform.matrix(), X))
     # - Copy constructor.
     cp = mut.Isometry3(other=transform)
     self.assertTrue(np.allclose(transform.matrix(), cp.matrix()))
     # - Identity
     transform = mut.Isometry3.Identity()
     self.assertTrue(np.allclose(transform.matrix(), X))
     # - Constructor with (R, p)
     R = np.array([
         [0., 1, 0],
         [-1, 0, 0],
         [0, 0, 1]])
     p = np.array([1., 2, 3])
     X = np.vstack((np.hstack((R, p.reshape((-1, 1)))), [0, 0, 0, 1]))
     transform = mut.Isometry3(rotation=R, translation=p)
     self.assertTrue(np.allclose(transform.matrix(), X))
     self.assertTrue(np.allclose(transform.translation(), p))
     transform.set_translation(-p)
     self.assertTrue(np.allclose(transform.translation(), -p))
     self.assertTrue(np.allclose(transform.rotation(), R))
     transform.set_rotation(R.T)
     self.assertTrue(np.allclose(transform.rotation(), R.T))
     # - Check transactions for bad values.
     transform = mut.Isometry3(rotation=R, translation=p)
     R_bad = np.copy(R)
     R_bad[0, 0] = 10.
     with self.assertRaises(RuntimeError):
         transform.set_rotation(R_bad)
     self.assertTrue(np.allclose(R, transform.rotation()))
     X_bad = np.copy(X)
     X_bad[:3, :3] = R_bad
     with self.assertRaises(RuntimeError):
         transform.set_matrix(X_bad)
     self.assertTrue(np.allclose(X, transform.matrix()))
     # Test `type_caster`s.
     value = test_util.create_isometry()
     self.assertTrue(isinstance(value, mut.Isometry3))
     test_util.check_isometry(value)
     # Operations.
     transform = mut.Isometry3(rotation=R, translation=p)
     transform_I = transform.inverse().multiply(transform)
     self.assertTrue(np.allclose(transform_I.matrix(), np.eye(4)))
     self.assertTrue((
         transform.multiply(position=[10, 20, 30]) == [21, -8, 33]).all())