def test_calculate_diff_axis_angle_quaternion(self): self.q2.set_rotation(bullet.btVector3(0, 0, -1), bullet.btRadians(90)) angle = bullet.btRadians(0.0) angle = bullet.btTransformUtil.calculate_diff_axis_angle_quaternion( self.q1, self.q2, self.v1) self.assertFalse(angle == 0.0) self.assertEqual(angle, bullet.btRadians(90))
def test_set_rotation(self): self.q = bullet.btQuaternion(bullet.btVector3(0, 0, -1), bullet.btRadians(90)) q1 = bullet.btQuaternion() q1.set_rotation(bullet.btVector3(0, 0, -1), bullet.btRadians(90)) self.assertEqual(self.q, q1)
def test_slerp(self): self.q = bullet.btQuaternion(bullet.btVector3(0, 0, -1), bullet.btRadians(90)) q1 = bullet.btQuaternion(bullet.btVector3(0, 0, -1), 0) q2 = self.q.slerp(q1, 0.5) expected = bullet.btQuaternion(bullet.btVector3(0, 0, -1), bullet.btRadians(45)) self.assertAlmostEqual(q2.angle(expected), 0)
def test_calculate_diff_axis_angle(self): self.v1 = bullet.btVector3(0, 0, -1) self.q1 = bullet.btQuaternion(self.v1, bullet.btRadians(90)) self.t2.set_rotation(self.q1) angle = bullet.btTransformUtil.calculate_diff_axis_angle( self.t1, self.t2, self.v2 # out val ) self.assertEqual(angle, bullet.btRadians(90)) self.assertEqual(self.v1, self.v2)
def test_calculate_diff_axis_angle_quaternion(self): self.q2.set_rotation(bullet.btVector3(0, 0, -1), bullet.btRadians(90)) angle = bullet.btRadians(0.0) angle = bullet.btTransformUtil.calculate_diff_axis_angle_quaternion( self.q1, self.q2, self.v1 ) self.assertFalse(angle == 0.0) self.assertEqual(angle, bullet.btRadians(90))
def test_rotate(self): v1 = bullet.btVector3(0, 1, 0) # up v2 = bullet.btVector3(0, 0, -1) # forward expected = bullet.btVector3(1, 0, 0) # right v = v1.rotate(v2, bullet.btRadians(90)) self.assertAlmostEqual(v.x, expected.x) self.assertAlmostEqual(v.y, expected.y) self.assertAlmostEqual(v.z, expected.z)
def test_calculate_velocity_quaternion(self): self.q2.set_euler(0, bullet.btRadians(90), 0) lin_vel = bullet.btVector3(0, 0, 0) ang_vel = bullet.btVector3(0, 0, 0) bullet.btTransformUtil.calculate_velocity_quaternion( self.v1, self.v2 * self.step, self.q1, self.q2, self.step, lin_vel, # out param ang_vel # out param ) print('lin_vel', lin_vel) print('ang_vel', ang_vel) print('ang_vel.x degrees', bullet.btRadians(ang_vel.x)) self.assertEqual(lin_vel, self.v2)
def test_calculate_velocity_quaternion(self): self.q2.set_euler(0, bullet.btRadians(90), 0) lin_vel = bullet.btVector3(0, 0, 0) ang_vel = bullet.btVector3(0, 0, 0) bullet.btTransformUtil.calculate_velocity_quaternion( self.v1, self.v2*self.step, self.q1, self.q2, self.step, lin_vel, # out param ang_vel # out param ) print('lin_vel', lin_vel) print('ang_vel', ang_vel) print('ang_vel.x degrees', bullet.btRadians(ang_vel.x)) self.assertEqual(lin_vel, self.v2)
def test_angle(self): self.q = bullet.btQuaternion(bullet.btVector3(0, 0, -1), bullet.btRadians(90)) q1 = bullet.btQuaternion(bullet.btVector3(0, 0, -1), bullet.btRadians(0)) angle = self.q.angle(q1) expected = bullet.btRadians(45) self.assertAlmostEqual(angle, expected) angle = self.q.angle_shortest_path(q1) expected = bullet.btRadians(90) self.assertAlmostEqual(angle, expected) angle = self.q.get_angle() self.assertAlmostEqual(angle, bullet.btRadians(90)) angle = self.q.get_angle_shortest_path() self.assertAlmostEqual(angle, bullet.btRadians(270))
def test_ctors(self): self.q = bullet.btQuaternion(0, 0, 0, 1) self.q = bullet.btQuaternion(bullet.btVector3(0, 0, -1), bullet.btRadians(90)) self.q = bullet.btQuaternion(0, 0, 0)
def test_inverse(self): self.q = bullet.btQuaternion(bullet.btVector3(0, 0, 1), bullet.btRadians(90)) q1 = bullet.btQuaternion(bullet.btVector3(0, 0, -1), bullet.btRadians(90)) self.assertEqual(self.q, q1.inverse())
def test_axis(self): self.q = bullet.btQuaternion(bullet.btVector3(0, 0, -1), bullet.btRadians(90)) axis = self.q.get_axis() self.assertEqual(self.q.get_axis(), bullet.btVector3(0, 0, -1))
def test_angle(self): v1 = bullet.btVector3(1, 0, 0) v2 = bullet.btVector3(0, 1, 0) self.assertEqual(v1.angle(v2), bullet.btRadians(90))