Beispiel #1
0
        private int PerformIntervalForRunners(int runersCompleted)
        {
            foreach (Runner runner in _runners)
            {
                double drag = Formula.Drag(runner.HorseAttributes.dragCoefficient, runner.Velocity);
                double acc  = Formula.Acceleration(runner.HorseAttributes.Power, drag, runner.HorseAttributes.Mass);

                runner.Velocity     += Formula.Velocity(acc, _interval);
                runner.Displacement += Formula.Displacement(runner.Velocity, _interval, acc);

                _results.Add(runner.Id, runner.Displacement);

                if (runner.Displacement >= _raceInfo.CourseLength && runner.IsRunning)
                {
                    runner.IsRunning             = false;
                    runner.FinishingDisplacement = runner.Displacement;
                    runner.FinishingTime         = _alapsed;
                    runersCompleted++;
                }
            }

            return(runersCompleted);
        }