def test_transform(self): """ Test the Transform class. """ pos = Vec3(1, 2, 3.5) rot = Quaternion(0, 1, 0, 0) t = Transform(rot, pos) assert t.getOrigin() == pos assert t.getRotation() == rot # Set to identity. t.setIdentity() assert t.getOrigin() == Vec3(0, 0, 0) assert t.getRotation() == Quaternion(0, 0, 0, 1) # Set the position and rotation. pos = Vec3(1, 2, 3.5) rot = Quaternion(0, 1, 0, 0) t.setOrigin(pos) t.setRotation(rot) assert t.getOrigin() == pos assert t.getRotation() == rot # Repeat with different values. pos = Vec3(-1, 2.5, 3.5) rot = Quaternion(0, 0, 0, 1) t.setOrigin(pos) t.setRotation(rot) assert t.getOrigin() == pos assert t.getRotation() == rot
def test_ConstructionInfo_to_RigidBody(self): """ Verify that the initial motion state is transferred correctly to the RigidBody. """ mass = 10 pos = Vec3(1, 2, 3) rot = Quaternion(0, 1, 0, 0) t = Transform(rot, pos) ms = DefaultMotionState(t) cs = EmptyShape() inert = Vec3(1, 2, 4) # Compile the Rigid Body parameters. ci = RigidBodyConstructionInfo(mass, ms, cs, Vec3(2, 4, 6)) assert ci.localInertia == Vec3(2, 4, 6) ci.localInertia = inert assert ci.localInertia == inert # Construct the rigid body and delete the construction info. body = RigidBody(ci) del ci # Verify that the object is at the correct position and has the correct # mass and inertia. t = body.getMotionState().getWorldTransform() assert t.getOrigin() == pos assert t.getRotation() == rot assert body.getInvMass() == 1 / mass assert body.getInvInertiaDiagLocal() == Vec3(1, 0.5, 0.25)
def test_centerOfMassTransform(self): """ Get/set the centerOfMassTransform. """ # Get RigidBody object. body = getRB() # Create a new Transform. pos = Vec3(1, 2, 3.5) rot = Quaternion(0, 1, 0, 0) t1 = Transform() t1.setOrigin(pos) t1.setRotation(rot) # Apply the Transform to the body. body.setCenterOfMassTransform(t1) t2 = body.getCenterOfMassTransform() # Verify the result. assert t1.getOrigin() == t2.getOrigin() assert t1.getRotation() == t2.getRotation()