public void DragIsZeroAtZeroVelocity() { var forceCalculator = new VehicleForces(constants.Object); var vel = Vector2.Zero; var force = forceCalculator.GetDragForce(vel); Assert.True(force.Length() < float.Epsilon); }
public void DragIsProportionalToSpeed(Vector2 vel0, Vector2 vel1) { var forceCalculator = new VehicleForces(constants.Object); var force0 = forceCalculator.GetDragForce(vel0); var force1 = forceCalculator.GetDragForce(vel1); Assert.True(force0.Length() < force1.Length()); }
public void GetTractiveForceThrowsWhenGearIndexIsLessThanZero() { var forceCalculator = new VehicleForces(constants.Object); var wheelDirection = new Vector2(0, 1); var gasPedal = 1.0f; var gearIdx = -1; Assert.Throws <ArgumentException>( () => forceCalculator.GetTractiveForce(gasPedal, wheelDirection, gearIdx) ); }
public void GetTractiveForceThrowsWhenGearIndexIsOutOfBounds() { var forceCalculator = new VehicleForces(constants.Object); var wheelDirection = new Vector2(0, 1); var gasPedal = 1.0f; var gearIdx = constants.Object.NumberOfGears; Assert.Throws <ArgumentException>( () => forceCalculator.GetTractiveForce(gasPedal, wheelDirection, gearIdx) ); }
public void BrakingForceIsProportionalToVelocity(Vector2 velocity0, Vector2 velocity1) { var forceCalculator = new VehicleForces(constants.Object); var brakePedal = 1.0f; var force0 = forceCalculator.GetBrakingForce(brakePedal, velocity0); var force1 = forceCalculator.GetBrakingForce(brakePedal, velocity1); var ratio = force1.Length() / force0.Length(); Assert.True(ratio >= 1); }
public void TractiveForceIsProportionalToCurrentGear(int gearIdx0, int gearIdx1) { var forceCalculator = new VehicleForces(constants.Object); var wheelDirection = new Vector2(0, 1); var gasPedal = 1.0f; var force0 = forceCalculator.GetTractiveForce(gasPedal, wheelDirection, gearIdx0); var force1 = forceCalculator.GetTractiveForce(gasPedal, wheelDirection, gearIdx1); var ratio = force1.Length() / force0.Length(); Assert.True(ratio >= 1); }
public void DragPointsInTheOppositeDirectionOfTheVelocityVector() { var forceCalculator = new VehicleForces(constants.Object); var vel = new Vector2(0, 28); var force = forceCalculator.GetDragForce(vel); // NOTE(danielm): dot product of two units vectors is -1 if the // angle between them is 180deg. var dot = Vector2.Dot(Vector2.Normalize(force), Vector2.Normalize(vel)); var diff = Math.Abs(-1 - dot); Assert.True(diff < float.Epsilon); }
public void TractiveForcePointsInTheReverseDirectionInReverseGear() { var forceCalculator = new VehicleForces(constants.Object); var wheelDirection = new Vector2(0, 1); var gasPedal = 1.0f; var force = forceCalculator.GetTractiveForceInReverse(gasPedal, wheelDirection); // NOTE(danielm): dot product of two units vectors is -1 if the // angle between them is 180deg. var dot = Vector2.Dot(Vector2.Normalize(force), Vector2.Normalize(wheelDirection)); var diff = Math.Abs(-1 - dot); Assert.True(diff < float.Epsilon); }
public void TractiveForcePointsInTheDirectionOfTheWheels() { var forceCalculator = new VehicleForces(constants.Object); var gear = 1; var wheelDirection = new Vector2(0, 1); var gasPedal = 1.0f; var force = forceCalculator.GetTractiveForce(gasPedal, wheelDirection, gear); // NOTE(danielm): dot product of two unit vectors is 1 if the // angle between them is 0 degrees. var dot = Vector2.Dot(Vector2.Normalize(force), wheelDirection); var diff = Math.Abs(1 - dot); Assert.True(diff < float.Epsilon); }
public void BrakingForceIsProportionalToBrakePedal(float brakePedal0, float brakePedal1) { var forceCalculator = new VehicleForces(constants.Object); var velocity = new Vector2(0, 28); var force0 = forceCalculator.GetBrakingForce(brakePedal0, velocity); var force1 = forceCalculator.GetBrakingForce(brakePedal1, velocity); var ratio = force1.Length() / force0.Length(); var ratioIsGreaterThanOne = ratio > 1; var ratioEqualsOne = Math.Abs(1 - ratio) < float.Epsilon; var brakePedalRatiosAreEqual = Math.Abs(brakePedal1 - brakePedal0) < float.Epsilon; // The ratio is either greater than one OR the ratio is one if and // only if the brake pedal ratios are equal. Assert.True(ratioIsGreaterThanOne || ((ratioEqualsOne && brakePedalRatiosAreEqual) || (!ratioEqualsOne && !brakePedalRatiosAreEqual))); }