diff --git a/java/com.sap.sailing.datamining/resources/stringmessages/Sailing_StringMessages.properties b/java/com.sap.sailing.datamining/resources/stringmessages/Sailing_StringMessages.properties index 926b3a5b2ea..901b8a9802b 100644 --- a/java/com.sap.sailing.datamining/resources/stringmessages/Sailing_StringMessages.properties +++ b/java/com.sap.sailing.datamining/resources/stringmessages/Sailing_StringMessages.properties @@ -93,6 +93,7 @@ TackAtStart=Tack at Start SpeedTenSecondsAfterStart=Speed 10s After Start RankThirtySecondsAfterStart=Rank 30s After Start WindwardDistanceToAdvantageousEndOfLine=Windward Distance to Advantageous End of Line +WindwardDistanceToStarboardSideAtStart=Windward Distance to Starboardside of Line RankAfterHalfOfTheFirstLeg=Rank after the half of the first leg AdvantageousEndOfLine=Advantageous End of Line TimeSpentInSeconds=Time Spent in Seconds diff --git a/java/com.sap.sailing.datamining/resources/stringmessages/Sailing_StringMessages_de.properties b/java/com.sap.sailing.datamining/resources/stringmessages/Sailing_StringMessages_de.properties index 48374a53bcd..88b1e5c9806 100644 --- a/java/com.sap.sailing.datamining/resources/stringmessages/Sailing_StringMessages_de.properties +++ b/java/com.sap.sailing.datamining/resources/stringmessages/Sailing_StringMessages_de.properties @@ -93,6 +93,7 @@ TackAtStart=Startbug SpeedTenSecondsAfterStart=Geschwindigkeit 10s nach dem Startzeitpunkt RankThirtySecondsAfterStart=Absolute Platzierung 30s nach dem Startzeitpunkt WindwardDistanceToAdvantageousEndOfLine=Windwärtige Distanz zum Bevorteilten Ende der Startlinie +WindwardDistanceToStarboardSideAtStart=Windwärtige Distanz zur Steuerbordseite beim Start RankAfterHalfOfTheFirstLeg=Platzierung nach der Hälfte des ersten Schenkels AdvantageousEndOfLine=Bevorteiltes Ende der Startlinie TimeSpentInSeconds=Benötigte Zeit in Sekunden diff --git a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasRaceOfCompetitorContext.java b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasRaceOfCompetitorContext.java index fa1db182fa2..c4ad0a89d64 100644 --- a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasRaceOfCompetitorContext.java +++ b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasRaceOfCompetitorContext.java @@ -79,4 +79,7 @@ public interface HasRaceOfCompetitorContext { @Statistic(messageKey="LineLengthAtStart", resultDecimals=1) public Distance getLineLengthAtStart(); + + @Statistic(messageKey="WindwardDistanceToStarboardSideAtStart", resultDecimals=2) + Distance getWindwardDistanceToStarboardSideAtStart(); } diff --git a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/data/RaceOfCompetitorWithContext.java b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/data/RaceOfCompetitorWithContext.java index dae7f393690..5099942592c 100644 --- a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/data/RaceOfCompetitorWithContext.java +++ b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/data/RaceOfCompetitorWithContext.java @@ -126,6 +126,26 @@ public class RaceOfCompetitorWithContext implements HasRaceOfCompetitorContext { return distance; } + @Override + public Distance getWindwardDistanceToStarboardSideAtStart() { + TrackedRace trackedRace = getTrackedRace(); + TimePoint startOfRace = trackedRace.getStartOfRace(); + LineDetails startLine = trackedRace.getStartLine(startOfRace); + Mark starboardMark = startLine.getStarboardMarkWhileApproachingLine(); + if (starboardMark == null) { + return null; + } + + GPSFixTrack starboardMarkTrack = trackedRace.getOrCreateTrack(starboardMark); + Position advantageousMarkPosition = starboardMarkTrack.getEstimatedPosition(startOfRace, false); + GPSFixTrack competitorTrack = trackedRace.getTrack(getCompetitor()); + Position competitorPosition = competitorTrack.getEstimatedPosition(startOfRace, false); + + TrackedLeg trackedLeg = trackedRace.getTrackedLeg(trackedRace.getRace().getCourse().getFirstLeg()); + Distance distance = trackedLeg.getWindwardDistance(competitorPosition, advantageousMarkPosition, startOfRace, WindPositionMode.LEG_MIDDLE); + return distance; + } + @Override public ClusterDTO getPercentageClusterForRelativeScore() { Double relativeScore = getTrackedRaceContext().getRelativeScoreForCompetitor(getCompetitor());