Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }