bug6063: avoid negative leg fractions, capping to zero

This commit is contained in:
Axel Uhl
2024-11-05 16:20:06 +01:00
parent 5a1a8c29e7
commit db533240b0
@@ -113,7 +113,9 @@ public class GPSFixWithContext implements HasGPSFixContext {
public Integer getTenthOfLeg() {
final Distance windwardDistanceToGo = getTrackedLegOfCompetitorContext().getTrackedLegOfCompetitor().getWindwardDistanceToGo(getGPSFix().getTimePoint(), WindPositionMode.LEG_MIDDLE);
final Distance legWindwardDistance = getTrackedLegOfCompetitorContext().getTrackedLegOfCompetitor().getTrackedLeg().getWindwardDistance();
final double fractionSailed = legWindwardDistance.add(windwardDistanceToGo.scale(-1)).divide(legWindwardDistance);
// eliminate negative values which may result if the competitor has just entered the leg but is yet to arrive at the windward
// level of the waypoint just rounded:
final double fractionSailed = Math.max(0, legWindwardDistance.add(windwardDistanceToGo.scale(-1)).divide(legWindwardDistance));
return (int) Math.min(10, 1+10*fractionSailed);
}
}