def test_Methods(self): q = Gf.Quaternion() self.assertEqual(Gf.Quaternion.GetIdentity(), Gf.Quaternion(1, Gf.Vec3d())) self.assertTrue(Gf.Quaternion.GetIdentity().GetLength() == 1 and Gf.IsClose( Gf.Quaternion(1, Gf.Vec3d(2, 3, 4)).GetLength(), 5.4772255750516612, 0.00001)) q = Gf.Quaternion(1, Gf.Vec3d(2, 3, 4)).GetNormalized() self.assertTrue( Gf.IsClose(q.real, 0.182574, 0.00001) and Gf.IsClose( q.imaginary, Gf.Vec3d(0.365148, 0.547723, 0.730297), 0.00001)) q = Gf.Quaternion(1, Gf.Vec3d(2, 3, 4)).GetNormalized(10) self.assertEqual(q, Gf.Quaternion.GetIdentity()) q = Gf.Quaternion(1, Gf.Vec3d(2, 3, 4)).Normalize() self.assertTrue( Gf.IsClose(q.real, 0.182574, 0.00001) and Gf.IsClose( q.imaginary, Gf.Vec3d(0.365148, 0.547723, 0.730297), 0.00001)) q = Gf.Quaternion(1, Gf.Vec3d(2, 3, 4)).Normalize(10) self.assertEqual(q, Gf.Quaternion.GetIdentity()) q = Gf.Quaternion.GetIdentity() self.assertEqual(q, q.GetInverse()) q = Gf.Quaternion(1, Gf.Vec3d(1, 2, 3)).Normalize() (re, im) = (q.real, q.imaginary) self.assertTrue( Gf.IsClose(q.GetInverse().real, re, 0.00001) and Gf.IsClose(q.GetInverse().imaginary, -im, 0.00001))
def test_Constructors(self): self.assertIsInstance(Gf.Rotation(), Gf.Rotation) self.assertIsInstance(Gf.Rotation(Gf.Vec3d(), 0), Gf.Rotation) self.assertIsInstance(Gf.Rotation(Gf.Quaternion()), Gf.Rotation) self.assertIsInstance(Gf.Rotation(Gf.Vec3d(), Gf.Vec3d()), Gf.Rotation) r = Gf.Rotation() r.SetAxisAngle(Gf.Vec3d(0, 1, 0), 30) self.assertEqual(eval(repr(r)), r) self.assertTrue(r.axis == Gf.Vec3d(0, 1, 0) and r.angle == 30) q = Gf.Quaternion(1, Gf.Vec3d(1, 0, 0)).GetNormalized() r = Gf.Rotation().SetQuaternion(q) self.assertEqual(eval(repr(r)), r) self.assertTrue( Gf.IsClose(r.axis, Gf.Vec3d(1, 0, 0), 0.00001) and Gf.IsClose(r.angle, 90, 0.00001)) r = Gf.Rotation().SetRotateInto(Gf.Vec3d(1, 0, 0), Gf.Vec3d(0, 1, 0)) self.assertEqual(eval(repr(r)), r) self.assertTrue(r.axis == Gf.Vec3d(0, 0, 1) and r.angle == 90) r = Gf.Rotation().SetRotateInto(Gf.Vec3d(1, 0, 0), Gf.Vec3d(1, 0, 0)) self.assertEqual(eval(repr(r)), r) self.assertEqual(r, Gf.Rotation().SetIdentity()) r = Gf.Rotation().SetRotateInto(Gf.Vec3d(1, 0, 0), Gf.Vec3d(-1, 0, 0)) self.assertEqual(eval(repr(r)), r) r.SetIdentity() self.assertEqual(eval(repr(r)), r) self.assertTrue(r.axis == Gf.Vec3d(1, 0, 0) and r.angle == 0) r.axis = Gf.Vec3d(1, 2, 3) r.angle = 720 self.assertEqual(eval(repr(r)), r) self.assertTrue(r.axis == Gf.Vec3d(1, 2, 3).GetNormalized() and r.angle == 720) q = Gf.Quaternion(1, Gf.Vec3d(1, 0, 0)).GetNormalized() r = Gf.Rotation().SetQuaternion(q) self.assertEqual(eval(repr(r)), r) qq = r.GetQuaternion() self.assertTrue( Gf.IsClose(q.real, qq.real, 0.00001) and Gf.IsClose(q.imaginary, qq.imaginary, 0.00001)) r = Gf.Rotation(Gf.Vec3d(0, 1, 0), 720) self.assertEqual(eval(repr(r)), r) self.assertEqual(r.GetInverse(), Gf.Rotation(Gf.Vec3d(0, 1, 0), -720))
def test_Constructors(self): self.assertIsInstance(Gf.Quaternion(), Gf.Quaternion) self.assertIsInstance(Gf.Quaternion(0), Gf.Quaternion) self.assertIsInstance(Gf.Quaternion(1, Gf.Vec3d(1, 1, 1)), Gf.Quaternion) self.assertIsInstance(Gf.Quath(Gf.Quath()), Gf.Quath) self.assertIsInstance(Gf.Quatf(Gf.Quatf()), Gf.Quatf) self.assertIsInstance(Gf.Quatd(Gf.Quatd()), Gf.Quatd) # Testing conversions between Quat[h,f,d] self.assertIsInstance(Gf.Quath(Gf.Quatf()), Gf.Quath) self.assertIsInstance(Gf.Quath(Gf.Quatd()), Gf.Quath) self.assertIsInstance(Gf.Quatf(Gf.Quath()), Gf.Quatf) self.assertIsInstance(Gf.Quatf(Gf.Quatd()), Gf.Quatf) self.assertIsInstance(Gf.Quatd(Gf.Quath()), Gf.Quatd) self.assertIsInstance(Gf.Quatd(Gf.Quatf()), Gf.Quatd)
def test_Operators(self): q1 = Gf.Quaternion(1, Gf.Vec3d(2, 3, 4)) q2 = Gf.Quaternion(1, Gf.Vec3d(2, 3, 4)) self.assertEqual(q1, q2) self.assertFalse(q1 != q2) q2.real = 2 self.assertTrue(q1 != q2) q = Gf.Quaternion(1, Gf.Vec3d(2, 3, 4)) * Gf.Quaternion.GetIdentity() self.assertEqual(q, Gf.Quaternion(1, Gf.Vec3d(2, 3, 4))) q = Gf.Quaternion(1, Gf.Vec3d(2, 3, 4)) q *= Gf.Quaternion.GetIdentity() self.assertEqual(q, Gf.Quaternion(1, Gf.Vec3d(2, 3, 4))) q *= 10 self.assertEqual(q, Gf.Quaternion(10, Gf.Vec3d(20, 30, 40))) q = q * 10 self.assertEqual(q, Gf.Quaternion(100, Gf.Vec3d(200, 300, 400))) q = 10 * q self.assertEqual(q, Gf.Quaternion(1000, Gf.Vec3d(2000, 3000, 4000))) q /= 100 self.assertEqual(q, Gf.Quaternion(10, Gf.Vec3d(20, 30, 40))) q = q / 10 self.assertEqual(q, Gf.Quaternion(1, Gf.Vec3d(2, 3, 4))) q += q self.assertEqual(q, Gf.Quaternion(2, Gf.Vec3d(4, 6, 8))) q -= Gf.Quaternion(1, Gf.Vec3d(2, 3, 4)) self.assertEqual(q, Gf.Quaternion(1, Gf.Vec3d(2, 3, 4))) q = q + q self.assertEqual(q, Gf.Quaternion(2, Gf.Vec3d(4, 6, 8))) q = q - Gf.Quaternion(1, Gf.Vec3d(2, 3, 4)) self.assertEqual(q, Gf.Quaternion(1, Gf.Vec3d(2, 3, 4))) q = q * q self.assertEqual(q, Gf.Quaternion(-28, Gf.Vec3d(4, 6, 8))) q1 = Gf.Quaternion(1, Gf.Vec3d(2, 3, 4)).GetNormalized() q2 = Gf.Quaternion(4, Gf.Vec3d(3, 2, 1)).GetNormalized() self.assertEqual(Gf.Slerp(0, q1, q2), q1) self.assertEqual(Gf.Slerp(1, q1, q2), q2) self.assertEqual(Gf.Slerp(0.5, q1, q2), Gf.Quaternion(0.5, Gf.Vec3d(0.5, 0.5, 0.5))) # code coverage goodness q1 = Gf.Quaternion(0, Gf.Vec3d(1, 1, 1)) q2 = Gf.Quaternion(0, Gf.Vec3d(-1, -1, -1)) q = Gf.Slerp(0.5, q1, q2) self.assertTrue( Gf.IsClose(q.real, 0, 0.0001) and Gf.IsClose(q.imaginary, Gf.Vec3d(1, 1, 1), 0.0001)) q1 = Gf.Quaternion(0, Gf.Vec3d(1, 1, 1)) q2 = Gf.Quaternion(0, Gf.Vec3d(1, 1, 1)) q = Gf.Slerp(0.5, q1, q2) self.assertTrue( Gf.IsClose(q.real, 0, 0.0001) and Gf.IsClose(q.imaginary, Gf.Vec3d(1, 1, 1), 0.0001)) self.assertEqual(q, eval(repr(q))) self.assertTrue(len(str(Gf.Quaternion()))) for quatType in (Gf.Quatd, Gf.Quatf, Gf.Quath): q1 = quatType(1, [2, 3, 4]) q2 = quatType(2, [3, 4, 5]) self.assertTrue(Gf.IsClose(Gf.Dot(q1, q2), 40, 0.0001))
def test_Properties(self): q = Gf.Quaternion() q.real = 10 self.assertEqual(q.real, 10) q.imaginary = Gf.Vec3d(1, 2, 3) self.assertEqual(q.imaginary, Gf.Vec3d(1, 2, 3))
def test_Constructors(self): self.assertIsInstance(Gf.Quaternion(), Gf.Quaternion) self.assertIsInstance(Gf.Quaternion(0), Gf.Quaternion) self.assertIsInstance(Gf.Quaternion(1, Gf.Vec3d(1,1,1)), Gf.Quaternion)