public TimeSpan Race(int trackLengthInMeters) { // Oohh boy, you shouldn't have missed the PHYSICS class in high school. var acceleration = this.Acceleration; var topSpeed = this.TopSpeed; foreach (var tunningPart in this.TunningParts) { acceleration += tunningPart.Acceleration; topSpeed += tunningPart.TopSpeed; } var topSpeedInMetersPS = MetricUnitsConverter.GetMetersPerSecondFrom(topSpeed); var decAcceleration = (double)acceleration; var decTopSpeedInMPS = (double)topSpeedInMetersPS; var timeToMaxSpeed = decTopSpeedInMPS / decAcceleration; var distanceTravelledToTopSpeed = (decAcceleration * timeToMaxSpeed * timeToMaxSpeed) / 2; var distanceRemaining = trackLengthInMeters - distanceTravelledToTopSpeed; if (distanceRemaining < 0) { //timeToMaxSpeed += distanceRemaining*acceleration; //todo: decrement time return(TimeSpan.FromSeconds((double)timeToMaxSpeed)); } timeToMaxSpeed += distanceRemaining / topSpeedInMetersPS; return(TimeSpan.FromSeconds((double)timeToMaxSpeed)); }
public TimeSpan Race(int trackLengthInMeters) { var topSpeedInMetersPerSecond = MetricUnitsConverter.GetMetersPerSecondFrom(this.TopSpeed); var accelerationInMetersPerSecondSquared = this.Acceleration; var timeRequiredToReachTopSpeedInSeconds = (topSpeedInMetersPerSecond / accelerationInMetersPerSecondSquared); var distanceTravelledWhileReachingTopSpeedInMeters = accelerationInMetersPerSecondSquared * Math.Pow(timeRequiredToReachTopSpeedInSeconds, 2); if (trackLengthInMeters == distanceTravelledWhileReachingTopSpeedInMeters) { return(TimeSpan.FromSeconds(timeRequiredToReachTopSpeedInSeconds)); } else if (trackLengthInMeters > distanceTravelledWhileReachingTopSpeedInMeters) { var remainingDistanceInMeters = trackLengthInMeters - distanceTravelledWhileReachingTopSpeedInMeters; var timeRequiredToTravelRemainingDistanceInSeconds = remainingDistanceInMeters / topSpeedInMetersPerSecond; var totalTimeInSeconds = timeRequiredToReachTopSpeedInSeconds + timeRequiredToTravelRemainingDistanceInSeconds; return(TimeSpan.FromSeconds(totalTimeInSeconds)); } else { var totalTime = Math.Sqrt((trackLengthInMeters / accelerationInMetersPerSecondSquared)); return(TimeSpan.FromSeconds(totalTime)); } }
static void Main(string[] args) { #region #metricprefix // The pressure value is set to 760 mmHg. QuantityValue <Pressure> pressure = (760).MmHg(); // Since it is a quantity value, it should be transformed to a proper measurement unit // to obtain a value for display or for comparison. // The pressure is obtained in Pascals and then converted into hectoPascals. MetricUnitsConverter prefixConverter = new MetricUnitsConverter(); double pressure_in_hPa = prefixConverter.Convert(pressure.ToPascals(), MetricPrefix.None, MetricPrefix.Hecto); Debug.WriteLine(pressure_in_hPa); #endregion #metricprefix }
/// <summary> /// /// </summary> /// <param name="trackLengthInMeters"></param> /// <returns></returns> public TimeSpan Race(int trackLengthInMeters) { var topSpeedInMetersSecDecimal = TypeCaster.IntToDecimal(MetricUnitsConverter.GetMetersPerSecondFrom(this.TopSpeed)); var accelerationDecimal = TypeCaster.IntToDecimal(this.Acceleration); var timeToMaxSpeed = topSpeedInMetersSecDecimal / accelerationDecimal; var distanceToMaxSpeed = (accelerationDecimal * (timeToMaxSpeed * timeToMaxSpeed)) / 2m; var remainingDistance = trackLengthInMeters - distanceToMaxSpeed; var timeForRemainingDistance = remainingDistance / topSpeedInMetersSecDecimal; var totalTime = timeForRemainingDistance + timeToMaxSpeed; return(new TimeSpan()); }
public TimeSpan Race(int trackLengthInMeters) { // Oohh boy, you shouldn't have missed the PHYSICS class in high school. TimeSpan output = new TimeSpan(); TimeSpan second = new TimeSpan(0, 0, 1); var acceleration = this.Acceleration; var topSpeed = this.TopSpeed; var weight = this.Weight; foreach (var tunningPart in TunningParts) { acceleration += tunningPart.Acceleration; topSpeed += tunningPart.TopSpeed; weight += tunningPart.Weight; } var topSpeedInMetersPS = MetricUnitsConverter.GetMetersPerSecondFrom(topSpeed); var currentSpeed = 0; var distanceTravelled = 0; double secondsElapsed = topSpeed / acceleration; TimeSpan timeToTopSpeed = TimeSpan.FromSeconds(secondsElapsed); return(output); }