def setUp(self): self.a = bullet.btVector3Array() for i in range(10): self.a.append(bullet.btVector3(i, i+1, i+2)) self.b = bullet.btVector3Array() for i in range(10, 20): self.b.append(bullet.btVector3(i, i+1, i+2))
def test_interpolation_dynamics(self): self.v1 = bullet.btVector3(1, 0, 0) self.v2 = bullet.btVector3(0, 1, 0) self.o1.interpolation_linear_velocity = self.v1 self.o1.interpolation_angular_velocity = self.v2 self.assertEquals(self.o1.interpolation_linear_velocity, self.v1) self.assertEquals(self.o1.interpolation_angular_velocity, self.v2)
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 setUp(self): self.a = bullet.btVector3Array() for i in range(10): self.a.append(bullet.btVector3(i, i + 1, i + 2)) self.b = bullet.btVector3Array() for i in range(10, 20): self.b.append(bullet.btVector3(i, i + 1, i + 2))
def setUp(self): self.q1 = bullet.btQuaternion.identity self.q2 = bullet.btQuaternion.identity self.v1 = bullet.btVector3(0, 0, 0) self.v2 = bullet.btVector3(0, 0, 10) self.t1 = bullet.btTransform.identity self.t2 = bullet.btTransform.identity self.step = 1.0/60
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_index(self): v = [float(i) for i in range(0, 9)] self.a = bullet.btMatrix3x3(*tuple(v)) self.assertEqual(self.a[0], bullet.btVector3(*tuple(v[:3]))) self.assertEqual(self.a[1], bullet.btVector3(*tuple(v[3:-3]))) w = [4, 5, 6] self.a[0] = bullet.btVector3(*tuple(w)) self.assertEqual(self.a[0], bullet.btVector3(*tuple(w)))
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_normalize(self): v1 = bullet.btVector3(2, 2, 2) v2 = v1.normalized v1.normalize() self.assertEqual(v1, v2) v1 = bullet.btVector3(1, 0, 0) v2 = bullet.btVector3(v1) self.assertEqual(v1.normalized, v2)
def test_assignment(self): self.a[0] = bullet.btVector3(21, 22, 23) self.assertEqual(self.a[0], bullet.btVector3(21, 22, 23)) def _slice(): self.a[0:3] = bullet.btVector3() self.assertRaises(RuntimeError, _slice)
def test_local_scaling(self): self.hull.local_scaling = bullet.btVector3(2, 2, 2) self.assertEquals(self.hull.local_scaling, bullet.btVector3(2, 2, 2)) self.hull.get_aabb_non_virtual(self.t1, self.v1, self.v2) self.assertNotEquals(self.v1, self.v3) self.v3 = bullet.btVector3(2.08, 2.08, 2.08) self.assertEquals(self.v1, -self.v3) self.assertEquals(self.v2, self.v3)
def test_gravity(self): self.world.set_gravity(self.gravity) self.assertEquals(self.world.gravity, self.gravity) self.world.gravity = bullet.btVector3(0, 0, 0) self.assertEquals(self.world.get_gravity(), bullet.btVector3(0, 0, 0)) self.assertEquals(self.world.gravity, bullet.btVector3(0, 0, 0))
def test_ctors(self): self.a = bullet.btTransform(bullet.btMatrix3x3(*self.v1)) self.b = bullet.btTransform(bullet.btMatrix3x3(*self.v1), bullet.btVector3(0, 0, 0)) self.c = bullet.btTransform(bullet.btQuaternion.identity) self.d = bullet.btTransform(bullet.btQuaternion.identity, bullet.btVector3(0, 0, 0)) self.assertEqual(self.a, self.b)
def test_get_nonvirtual_aabb(self): aabb_min = bullet.btVector3() aabb_max = bullet.btVector3() trans = bullet.btTransform.identity self.hull.recalc_local_aabb() self.hull.get_nonvirtual_aabb(trans, aabb_min, aabb_max, 0.00) self.assertEquals(aabb_min, self.points[0] - self.tolerance) self.assertEquals(aabb_max, self.points[4] + self.tolerance)
def setUp(self): self.q1 = bullet.btQuaternion.identity self.q2 = bullet.btQuaternion.identity self.v1 = bullet.btVector3(0, 0, 0) self.v2 = bullet.btVector3(0, 0, 10) self.t1 = bullet.btTransform.identity self.t2 = bullet.btTransform.identity self.step = 1.0 / 60
def test_add(self): v1 = bullet.btVector3(1, 1, 1) v2 = bullet.btVector3(1, 1, 1) v = v1 + v2 self.assertIsNotNone(v) self.assertEqual(v.x, 2.0) v = bullet.btVector3(v1 + v2) v1 += v2 self.assertEqual(v, v1)
def test_dot(self): v1 = bullet.btVector3(2, 2, 2) v2 = bullet.btVector3(v1) self.assertEqual(v1.dot(v2), 12.0) v3 = bullet.btVector3(v1) v4 = bullet.btVector3(v1) v = v4.dot3(v1, v2, v3) expected = bullet.btVector3(12, 12, 12) self.assertEqual(v, expected)
def setUp(self): self.o1 = bullet.btCollisionObject() self.shape = bullet.btSphereShape(1.0) self.bp = bullet.btDbvtBroadphase() self.v1 = bullet.btVector3(0, 0, 0) self.v2 = bullet.btVector3(0, 0, 0) self.v3 = bullet.btVector3(0, 0, 0) self.t1 = bullet.btTransform.identity self.t2 = bullet.btTransform.identity
def test_mul(self): v1 = bullet.btVector3(2, 2, 2) v = v1 * 2.0 self.assertEqual(v.x, 4) v *= 2.0 self.assertEqual(v.x, 8) v2 = bullet.btVector3(2, 2, 2) v *= v2 self.assertEqual(v.x, 16)
def test_apply_force(self): self.v1.y = 10.0 self.v2.y = 20.0 self.body2.apply_force(self.v1, self.v3) self.body2.apply_torque(self.v2) self.v1 = self.body2.get_total_force() self.v2 = self.body2.get_total_torque() self.assertEquals(self.v1, bullet.btVector3(0, 10, 0)) self.assertEquals(self.v2, bullet.btVector3(0, 20, 0))
def test_sub(self): v1 = bullet.btVector3(1, 1, 1) v2 = bullet.btVector3(1, 1, 1) v = v1 - v2 self.assertIsNotNone(v) self.assertEqual(v.x, 0.0) v = bullet.btVector3(v1 - v2) v1 -= v2 self.assertEqual(v1, v)
def test_setval(self): v1 = bullet.btVector3(1, 2, 3) v2 = bullet.btVector3(2, 4, 6) v1.set_value(2, 4, 6) self.assertEqual(v1, v2) v2.set_zero() zerovec = bullet.btVector3(0, 0, 0) self.assertEqual(v2, zerovec) self.assertTrue(v2.is_zero) self.assertTrue(v2.fuzzy_zero)
def test_origin(self): self.a = bullet.btTransform(self.q) self.b = bullet.btTransform(self.q) self.vec = self.a.get_origin() self.assertEqual(self.vec, self.a.get_origin()) self.assertEqual(self.a.get_origin(), bullet.btVector3(0, 0, 0)) self.a.origin.set_value(1, 0, 0) self.assertEqual(self.a.get_origin(), bullet.btVector3(1, 0, 0)) self.a.set_origin(bullet.btVector3(0, 1, 0)) self.assertEqual(self.a.get_origin(), bullet.btVector3(0, 1, 0))
def test_interpolate(self): v1 = bullet.btVector3(0, 1, 0) v2 = bullet.btVector3(1, 0, 0) v3 = bullet.btVector3(0, 0, 0) v3.set_interpolate_3(v1, v2, 0.5) expected = bullet.btVector3(0.5, 0.5, 0) self.assertEqual(v3, expected) v3 = v1.lerp(v2, 0.5) expected = bullet.btVector3(0.5, 0.5, 0) self.assertEqual(v3, expected)
def setUp(self): self.solver = bullet.btSequentialImpulseConstraintSolver() self.cinfo = bullet.btDefaultCollisionConstructionInfo() self.collision_config = \ bullet.btDefaultCollisionConfiguration(self.cinfo) self.broadphase = bullet.btDbvtBroadphase() self.dispatcher = bullet.btCollisionDispatcher(self.collision_config) self.gravity = bullet.btVector3(0, -9.8, 0) self.time_step = 1.0 / 60 self.collision_object = bullet.btCollisionObject() self.v1 = bullet.btVector3(0, 0, 0)
def setUp(self): self.solver = bullet.btSequentialImpulseConstraintSolver() self.cinfo = bullet.btDefaultCollisionConstructionInfo() self.collision_config = \ bullet.btDefaultCollisionConfiguration(self.cinfo) self.broadphase = bullet.btDbvtBroadphase() self.dispatcher = bullet.btCollisionDispatcher(self.collision_config) self.gravity = bullet.btVector3(0, -9.8, 0) self.time_step = 1.0/60 self.collision_object = bullet.btCollisionObject() self.v1 = bullet.btVector3(0, 0, 0)
def test_add_ground(self): self.ground_shape = bullet.btStaticPlaneShape( bullet.btVector3(0, 1, 0), 1) self.ground_motion_state = bullet.btDefaultMotionState( bullet.btTransform(bullet.btQuaternion.identity, bullet.btVector3(0, -1, 0))) self.ground_rigid_body_cinfo = bullet.btRigidBodyConstructionInfo( 0, self.ground_motion_state, self.ground_shape, bullet.btVector3(0, 0, 0)) self.ground_rigid_body = \ bullet.btRigidBody(self.ground_rigid_body_cinfo) self.dynamics_world.add_rigid_body(self.ground_rigid_body)
def test_local_scaling(self): self.v1 = bullet.btVector3(2, 2, 2) self.hull1.set_local_scaling(self.v1) self.assertEquals(self.hull1.get_local_scaling(), bullet.btVector3(2, 2, 2)) self.assertEquals(self.hull1.local_scaling, bullet.btVector3(2, 2, 2)) self.hull1.local_scaling = bullet.btVector3(3, 3, 3) self.hull1.recalc_local_aabb() self.hull1.get_aabb_slow(self.t1, self.v1, self.v2) self.v3 = bullet.btVector3(3.08, 3.08, 3.08) self.assertEquals(self.v1, -self.v3) self.assertEquals(self.v2, self.v3)
def test_add_sphere(self, pos=bullet.btVector3(0, 0, 0)): self.sphere_shape = bullet.btSphereShape(1) self.sphere_motion_state = bullet.btDefaultMotionState( bullet.btTransform(bullet.btQuaternion.identity, pos)) self.sphere_mass = 1.0 self.fall_inertia = bullet.btVector3(0, 0, 0) self.sphere_shape.calculate_local_inertia(self.sphere_mass, self.fall_inertia) self.sphere_rigid_body_cinfo = bullet.btRigidBodyConstructionInfo( self.sphere_mass, self.sphere_motion_state, self.sphere_shape, self.fall_inertia) self.sphere_rigid_body = \ bullet.btRigidBody(self.sphere_rigid_body_cinfo) self.dynamics_world.add_rigid_body(self.sphere_rigid_body)
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_add_ground(self): self.ground_shape = bullet.btStaticPlaneShape( bullet.btVector3(0, 1, 0), 1 ) self.ground_motion_state = bullet.btDefaultMotionState( bullet.btTransform(bullet.btQuaternion.identity, bullet.btVector3(0, -1, 0)) ) self.ground_rigid_body_cinfo = bullet.btRigidBodyConstructionInfo( 0, self.ground_motion_state, self.ground_shape, bullet.btVector3(0, 0, 0) ) self.ground_rigid_body = \ bullet.btRigidBody(self.ground_rigid_body_cinfo) self.dynamics_world.add_rigid_body(self.ground_rigid_body)
def test_get_supporting_vertex(self): """Runtime tests only""" self.v2 = self.hull.local_get_supporting_vertex_without_margin(self.v1) self.assertGreater(self.v1.x, self.v2.x) self.assertGreater(self.v1.y, self.v2.y) self.assertGreater(self.v1.z, self.v2.z) self.v2 = self.hull.local_get_supporting_vertex_without_margin(self.v1) self.v3 = self.v2 self.assertEquals(self.v2, bullet.btVector3(-1, -1, -1)) self.v2 = \ self.hull.local_get_supporting_vertex_without_margin_non_virtual( self.v1 ) self.assertEquals(self.v2, bullet.btVector3(-1, -1, -1)) self.hull.local_get_support_vertex_non_virtual(self.v1) self.assertEquals(self.v2, self.v3)
def test_margin(self): self.hull1.margin = 0.01 self.assertEquals(self.hull1.margin, 0.01) self.hull1.get_aabb(self.t1, self.v1, self.v2) self.v3 = bullet.btVector3(1.05, 1.05, 1.05) self.assertEquals(self.v1, -self.v3) self.assertEquals(self.v2, self.v3)
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_mul(self): self.a = bullet.btTransform.identity self.b = bullet.btTransform.identity self.a.set_origin(bullet.btVector3(1, 1, 1)) self.c = self.a * self.b self.a *= self.b self.assertEqual(self.c, self.a)
def test_length(self): v1 = bullet.btVector3(2, 2, 2) length2 = (math.pow(v1.x, 2) + math.pow(v1.y, 2) + math.pow(v1.z, 2)) length = math.sqrt(length2) self.assertEqual(v1.length2, length2) self.assertEqual(v1.length, length) self.assertEqual(v1.norm, length)
def test_implemented(self): self.m = MyMotionState() t1 = bullet.btTransform(bullet.btQuaternion.identity, bullet.btVector3(0, 10, 0)) print('t1', t1) self.m.getWorldTransform(t1) self.assertEqual(t1, bullet.btTransform.identity)
def test_angular_factor(self): self.v1.x = 1.0 self.body1.angular_factor = self.v1 self.assertEquals(self.body1.angular_factor, self.v1) self.body1.set_angular_factor(1.0) self.v2 = bullet.btVector3(1, 1, 1) self.assertEquals(self.body1.angular_factor, self.v2)