mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-11-12 05:35:31 +00:00
Added WindwardDistanceToAdvantageousEndOfLineVsRelativeDistanceToAdvantageousEndOfLine and RelativeDistanceToAdvantageousEndOfLine as metrics
This commit is contained in:
1 parent
2970e72d1c
commit
907387bf43
4 files changed
+46
No files matched your search
+2
@@ -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)
|
||||
|
||||
+2
@@ -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
|
||||
|
||||
+6
@@ -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();
|
||||
}
|
||||
+36
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user