public PowerZone(Rider rider, IMaxHeartRateStrategy maxHrStrategy, PowerZoneDefinition zoneDefinition) { Definition = zoneDefinition; WattsLow = Definition.WattsLowPercent * rider.FunctionalThresholdPowerWatts; WattsHigh = Definition.WattsHighPercent * rider.FunctionalThresholdPowerWatts; HeartRateLow = Utilities.CalculateHeartRate(maxHrStrategy, rider, Definition.HeartRateLowPercent); HeartRateHigh = Utilities.CalculateHeartRate(maxHrStrategy, rider, Definition.HeartRateHighPercent); }
public static double?CalculateHeartRate(IMaxHeartRateStrategy maxHrStrategy, Rider rider, double?targetPercent) { if (targetPercent.HasValue == false) { return(new double?()); } return(((maxHrStrategy.Calculate(rider) - rider.RestingHeartRateBpm) * targetPercent) + rider.RestingHeartRateBpm); }
public PowerChart(Rider rider, IMaxHeartRateStrategy maxHrStrategy, IEnumerable <PowerZoneDefinition> zoneDefinitions) { Rider = rider; Zones = new List <PowerZone>(); foreach (var powerZoneDef in zoneDefinitions.OrderBy(x => x.Zone)) { Zones.Add(new PowerZone(rider, maxHrStrategy, powerZoneDef)); } }