public void MotionVelocityCalculateExpansionTest() { // Test values. var initialLinearVelocity = new float2(3.0f, 4.0f); var initialAngularVelocity = 4.0f; var inverseMass = 0.5f; var inverseInertia = 2.0f; var angularExpansionFactor = 1.2f; var timeStep = 1.0f / 60.0f; // Expectations. var expectedLinear = initialLinearVelocity * timeStep; var expectedUniform = math.min(math.length(initialAngularVelocity) * timeStep, (float)math.PI / 2.0f) * angularExpansionFactor; var motionVelocity = new PhysicsBody.MotionVelocity() { LinearVelocity = initialLinearVelocity, AngularVelocity = initialAngularVelocity, InverseMass = inverseMass, InverseInertia = inverseInertia, AngularExpansionFactor = angularExpansionFactor }; var motionExpansion = motionVelocity.CalculateExpansion(timeStep); Assert.AreEqual(expectedLinear, motionExpansion.Linear); Assert.AreEqual(expectedUniform, motionExpansion.Uniform); }
public void MotionVelocityApplyAngularImpulseTest() { // Test values. var initialAngularVelocity = 4.0f; var inverseInertia = 2.0f; var impulse = 5.0f; // Expectations. var expectedAngularVelocity = initialAngularVelocity + impulse * inverseInertia; var motionVelocity = new PhysicsBody.MotionVelocity() { AngularVelocity = initialAngularVelocity, InverseInertia = inverseInertia }; motionVelocity.ApplyAngularImpulse(impulse); Assert.AreEqual(expectedAngularVelocity, motionVelocity.AngularVelocity); }
public void MotionVelocityApplyLinearImpulseTest() { // Test values. var initialLinearVelocity = new float2(3.0f, 4.0f); var inverseMass = 0.5f; var impulse = new float2(2.0f, 3.0f); // Expectations. var expectedLinearVelocity = initialLinearVelocity + impulse * inverseMass; var motionVelocity = new PhysicsBody.MotionVelocity() { LinearVelocity = initialLinearVelocity, InverseMass = inverseMass }; motionVelocity.ApplyLinearImpulse(impulse); Assert.AreEqual(expectedLinearVelocity, motionVelocity.LinearVelocity); }