private void Calc() { LapCount = Laps.Count; if (LapCount == 0) { TotalRot = 0; MaxRot = 0; AverageRot = 0; } else { TotalRot = Laps.Sum(x => x.Rot); MaxRot = Laps.Max(x => x.Rot); AverageRot = (double)TotalRot / LapCount; } }
private void analyseLaps() { var lDist = Laps.Sum(l => l.DistanceMeters); var lapsWithTrackPoints = Laps.Where(l => l.TrackPoints != null && l.TrackPoints.Any()).ToList(); if (lapsWithTrackPoints.Any()) { var tDist = lapsWithTrackPoints.SelectMany(l => l.TrackPoints).Max(t => t.DistanceMeters); if (lDist != tDist) { Debugger.Log(1, "", $"Laps inconsistent: trackpoints cover {100.0 * tDist / lDist}% of lap distance ({tDist} vs {lDist})\r\n"); } } TrackPoint lastTrackPoint = null; var totalDistance = 0.0; foreach (var lap in Laps) { totalDistance += lap.DistanceMeters; foreach (var trackpoint in lap.TrackPoints) { if (lastTrackPoint != null) { var interval = trackpoint.Time - lastTrackPoint.Time; var intervalS = interval.TotalSeconds; var distanceCovered = trackpoint.DistanceMeters - lastTrackPoint.DistanceMeters; lastTrackPoint.Interval = interval; trackpoint.DistanceCoveredMeters = distanceCovered; } lastTrackPoint = trackpoint; } } if (lastTrackPoint != null) { lastTrackPoint.Interval = EndTime - lastTrackPoint.Time; } }
public decimal GetAvarageSpeed() { var sum = Laps.Sum(l => l.AvarageSpeed); return(sum / Laps.Count()); }