Added WindwardDistanceToAdvantageousEndOfLineVsRelativeDistanceToAdvantageousEndOfLine and RelativeDistanceToAdvantageousEndOfLine as metrics

This commit is contained in:
Leon Radeck committed 2018-04-20 14:17:09 +10:00
1 parent 2970e72d1c
commit 907387bf43
4 files changed
+46

No files matched your search

@@ -98,8 +98,10 @@ RankAfterHalfOfTheFirstLeg=Rank after the half of the first leg
AdvantageousEndOfLine=Advantageous End of Line
TimeSpentInSeconds=Time Spent in Seconds
MedalRace=Medal Race
WindwardDistanceToAdvantageousEndOfLineVsRelativeDistanceToAdvantageousEndOfLine=Windward Distance to Advantageous End of Line (X) vs. Relative Distance to Advantageous End of Line (Y)
WindSourceType=Wind Source Type
WindSourceName=Wind Source Name
RelativeDistanceToAdvantageousEndOfLine=Relative Distance to Advantageous End of Line
windFrom=True Wind Direction (TWD)
windSpeedKnots=True Wind Speed (kts)
speedInKnots=Speed (kts)
@@ -110,6 +110,8 @@ timeSpentFoiling=Zeit auf Foils
yaw=Gierung
pitch=Neigung
heel=Krängung
WindwardDistanceToAdvantageousEndOfLineVsRelativeDistanceToAdvantageousEndOfLine=Windwärtige Distanz zum Bevorteilten Ende der Startlinie (X) vs. Relative Distanz zum Bevorteilten Ende der Startlinie (Y)
RelativeDistanceToAdvantageousEndOfLine=Relative Distanz zum Bevorteilten Ende der Startlinie
rideHeight=Foiling-Höhe
rideHeightPort=Foiling-Höhe Backbord-Rumpf
rideHeightStarboard=Foiling-Höhe Steuerbord-Rumpf
@@ -85,4 +85,10 @@ public interface HasRaceOfCompetitorContext {
@Statistic(messageKey="DistanceToStarboadSideAtStartVsFinalRank", resultDecimals=2)
Pair<Double, Double> getRelativeDistanceToStarboardSideAtStartVsFinalRank();
@Statistic(messageKey="WindwardDistanceToAdvantageousEndOfLineVsRelativeDistanceToAdvantageousEndOfLine", resultDecimals=2)
Pair<Double, Double> getWindwardDistanceToAdvantageousEndOfLineVsRelativeDistanceToAdvantageousEndOfLine();
@Statistic(messageKey="RelativeDistanceToAdvantageousEndOfLine", resultDecimals=2)
Double getRelativeDistanceToAdvantageousEndOfLine();
}
@@ -292,4 +292,40 @@ public class RaceOfCompetitorWithContext implements HasRaceOfCompetitorContext {
return new Pair<>(getNormalizedDistanceToStarboardSideAtStart(), getTrackedRaceContext().getRankAtFinishForCompetitor(getCompetitor()));
}
@Override
public Pair<Double, Double> getWindwardDistanceToAdvantageousEndOfLineVsRelativeDistanceToAdvantageousEndOfLine(){
return new Pair<>(getWindwardDistanceToAdvantageousLineEndAtStart().getMeters(), getRelativeDistanceToAdvantageousEndOfLine());
}
@Override
public Double getRelativeDistanceToAdvantageousEndOfLine() {
TrackedRace trackedRace = getTrackedRace();
TimePoint startOfRace = trackedRace.getStartOfRace();
LineDetails startLine = trackedRace.getStartLine(startOfRace);
Mark advantageousMark = null;
switch (startLine.getAdvantageousSideWhileApproachingLine()) {
case PORT:
advantageousMark = startLine.getPortMarkWhileApproachingLine();
break;
case STARBOARD:
advantageousMark = startLine.getStarboardMarkWhileApproachingLine();
break;
}
if (advantageousMark == null) {
return null;
}
GPSFixTrack<Mark, GPSFix> advantageousMarkTrack = trackedRace.getOrCreateTrack(advantageousMark);
Position advantageousMarkPosition = advantageousMarkTrack.getEstimatedPosition(startOfRace, false);
GPSFixTrack<Competitor, GPSFixMoving> competitorTrack = trackedRace.getTrack(getCompetitor());
Position competitorPosition = competitorTrack.getEstimatedPosition(startOfRace, false);
Double distance = competitorPosition.getDistance(advantageousMarkPosition).getMeters();
TrackedLegOfCompetitor firstTrackedLegOfCompetitor = getTrackedRace().getTrackedLeg(competitor, trackedRace.getRace().getCourse().getFirstLeg());
TimePoint competitorStartTime = firstTrackedLegOfCompetitor.getStartTime();
Double length = trackedRace.getStartLine(competitorStartTime).getLength().getMeters();
return distance / length;
}
}