Distinguish metrics that depend on start of race or start of competitor by naming them accordingly.

This commit is contained in:
Leon Radeck committed 2018-04-30 14:06:57 +10:00
1 parent 5518523c49
commit 0a30ccee1d
4 files changed
+66 -50

No files matched your search

@@ -72,8 +72,8 @@ NumberOfTacks=Number of Tacks
NumberOfJibes=Number of Jibes
NumberOfPenaltyCircles=Number of Penalty Circles
RankGainsOrLosses=Rank Gains or Losses
DistanceToStarboardSideAtStart=Distance to Starboard Side (% of Length)
DistanceToStarboardSideAtStartVsRankAtFirstMark=Relative Distance to Starboard Side (X) vs. Rank at First Mark (Y)
DistanceToStarboardSideAtStartOfCompetitor=Relative Distance to Starboard Side at Start of Competitor
DistanceToStarboardSideAtStartOfCompetitorVsRankAtFirstMark=Relative Distance to Starboard Side at Start of Competitor (X) vs. Rank at First Mark (Y)
NumberOfPodiumFinish=Number of Podium Finishes
NumberOfWins=Number of Wins
RankGainsOrLossesBetweenFirstMarkAndFinish=Rank Gains or Losses (1st Mark -> Finish)
@@ -94,23 +94,24 @@ PassingSide=Passing Side
TackAtStart=Tack at Start
SpeedTenSecondsAfterStart=Speed 10s After Start
RankThirtySecondsAfterStart=Rank 30s After Start
WindwardDistanceToAdvantageousEndOfLine=Windward Distance to Advantageous End of Line
AbsoluteWindwardDistanceToStarboardSideAtStart=Absolute Windward Distance to Starboardside of Line
WindwardDistanceToAdvantageousEndOfLineAtStartOfRace=Windward Distance to Advantageous End of Line at Start of Race
WindwardDistanceToAdvantageousEndOfLineAtStartOfCompetitor=Windward Distance to Starboard Side of Line at Start of Competitor
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)
WindwardDistanceToAdvantageousEndOfLineAtStartOfRaceVsRelativeDistanceToAdvantageousEndOfLine=Windward Distance to Advantageous End of Line at Start of Race (X) vs. Relative Distance to Advantageous End of Line at Start of Race (Y)
WindSourceType=Wind Source Type
AbsoluteWindwardDistanceToStarboardSideAtStartOfCompetitor=Absolute Windward Distance to Starboardside of Line at Start of Competitor
WindSourceName=Wind Source Name
RelativeDistanceToAdvantageousEndOfLine=Relative Distance to Advantageous End of Line
RelativeDistanceToAdvantageousEndOfLineAtStartOfRace=Relative Distance to Advantageous End of Line at Start of Race
windFrom=True Wind Direction (TWD)
windSpeedKnots=True Wind Speed (kts)
speedInKnots=Speed (kts)
bearing=Direction (°T)
WindTrack=Wind Track
timeSpentFoiling=Time spent foiling
DistanceToStarboadSideAtStartVsFinalRank=Relative Distance to Starboardside at Start (X) vs. Final Rank (Y)
DistanceToStarboardSideAtStartOfCompetitorVsFinalRank=Relative Distance to Starboard Side at Start of Competitor (X) vs. Final Rank (Y)
yaw=Yaw
pitch=Pitch
heel=Heel
@@ -70,10 +70,10 @@ NumberOfTacks=Anzahl der Wenden
NumberOfJibes=Anzahl der Halsen
NumberOfPenaltyCircles=Anzahl der Straf-Kreise
RankGainsOrLosses=Positions-Verluste oder -Gewinne
DistanceToStarboardSideAtStart=Distanz zur Steuerbordseite (% der Länge)
DistanceToStarboardSideAtStartVsRankAtFirstMark=Relative Distanz zur Steuerbordseite (X) vs. Position beim ersten Wegpunkt (Y)
DistanceToStarboardSideAtStartOfCompetitor=Relative Distanz zur Steuerbordseite beim Start des Teilnehmers
DistanceToStarboardSideAtStartOfCompetitorVsRankAtFirstMark=Relative Distanz zur Steuerbordseite beim Start des Teilnehmers (X) vs. Position beim ersten Wegpunkt (Y)
NumberOfPodiumFinish=Azahl der Podium-Siege
DistanceToStarboadSideAtStartVsFinalRank=Relative Distanz zur Steuerbordseite zum Start (X) vs. finale Platzierung (Y)
DistanceToStarboardSideAtStartOfCompetitorVsFinalRank=Relative Distanz zur Steuerbordseite zum Start des Teilnehmers (X) vs. finale Platzierung (Y)
NumberOfWins=Anzahl der Siege
RankGainsOrLossesBetweenFirstMarkAndFinish=Positions-Verluste oder -Gewinne (1ter Wegpunkt -> Ziel)
IsTracked=Ist getracked
@@ -93,8 +93,9 @@ PassingSide=Passierende Seite
TackAtStart=Startbug
SpeedTenSecondsAfterStart=Geschwindigkeit 10s nach dem Startzeitpunkt
RankThirtySecondsAfterStart=Absolute Platzierung 30s nach dem Startzeitpunkt
WindwardDistanceToAdvantageousEndOfLine=Windwärtige Distanz zum Bevorteilten Ende der Startlinie
AbsoluteWindwardDistanceToStarboardSideAtStart=Absolute Windwärtige Distanz zur Steuerbordseite beim Start
WindwardDistanceToAdvantageousEndOfLineAtStartOfRace=Windwärtige Distanz zum Bevorteilten Ende der Startlinie zum Start des Rennens
WindwardDistanceToAdvantageousEndOfLineAtStartOfCompetitor=Windwärtige Distanz zum Bevorteilten Ende der Startlinie zum Start des Teilnehmers
AbsoluteWindwardDistanceToStarboardSideAtStartOfCompetitor=Absolute Windwärtige Distanz zur Steuerbordseite beim Start des Teilnehmers
RankAfterHalfOfTheFirstLeg=Platzierung nach der Hälfte des ersten Schenkels
AdvantageousEndOfLine=Bevorteiltes Ende der Startlinie
TimeSpentInSeconds=Benötigte Zeit in Sekunden
@@ -110,8 +111,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
WindwardDistanceToAdvantageousEndOfLineAtStartOfRaceVsRelativeDistanceToAdvantageousEndOfLine=Windwärtige Distanz zum Bevorteilten Ende der Startlinie zum Start des Rennens (X) vs. Relative Distanz zum Bevorteilten Ende der Startlinie zum Start des Rennens (Y)
RelativeDistanceToAdvantageousEndOfLineAtStartOfRace=Relative Distanz zum Bevorteilten Ende der Startlinie zum Start des Rennens
rideHeight=Foiling-Höhe
rideHeightPort=Foiling-Höhe Backbord-Rumpf
rideHeightStarboard=Foiling-Höhe Steuerbord-Rumpf
@@ -23,7 +23,7 @@ public interface HasRaceOfCompetitorContext {
@Dimension(messageKey="TackAtStart", ordinal=12)
public Tack getTackAtStart() throws NoWindException;
@Dimension(messageKey="DistanceToStarboardSideAtStart", ordinal=13)
@Dimension(messageKey="DistanceToStarboardSideAtStartOfCompetitor", ordinal=13)
public ClusterDTO getPercentageClusterForDistanceToStarboardSideAtStart();
@Dimension(messageKey="RelativeScoreInPercent", ordinal=14)
@@ -32,14 +32,17 @@ public interface HasRaceOfCompetitorContext {
@Statistic(messageKey="DistanceAtStart", resultDecimals=2, ordinal=0)
public Distance getDistanceToStartLineAtStart();
@Statistic(messageKey="DistanceToStarboardSideAtStart", resultDecimals=2, ordinal=1)
public Double getNormalizedDistanceToStarboardSideAtStart();
@Statistic(messageKey="DistanceToStarboardSideAtStartOfCompetitor", resultDecimals=2, ordinal=1)
public Double getNormalizedDistanceToStarboardSideAtStartOfCompetitor();
@Statistic(messageKey="DistanceToStarboardSideAtStartVsRankAtFirstMark", resultDecimals=2, ordinal=1)
public Pair<Double, Double> getNormalizedDistanceToStarboardSideAtStartVsRankAtFirstMark();
@Statistic(messageKey="DistanceToStarboardSideAtStartOfCompetitorVsRankAtFirstMark", resultDecimals=2, ordinal=1)
public Pair<Double, Double> getNormalizedDistanceToStarboardSideAtStartOfCompetitorVsRankAtFirstMark();
@Statistic(messageKey="WindwardDistanceToAdvantageousEndOfLine", resultDecimals=2, ordinal=2)
public Distance getWindwardDistanceToAdvantageousLineEndAtStart();
@Statistic(messageKey="WindwardDistanceToAdvantageousEndOfLineAtStartOfRace", resultDecimals=2, ordinal=2)
public Distance getWindwardDistanceToAdvantageousLineEndAtStartofRace();
@Statistic(messageKey="WindwardDistanceToAdvantageousEndOfLineAtStartOfCompetitor", resultDecimals=2, ordinal=2)
public Distance getWindwardDistanceToAdvantageousLineEndAtStartofCompetitor();
@Connector(messageKey="SpeedWhenStarting", ordinal=3)
public Speed getSpeedWhenStarting();
@@ -48,10 +51,10 @@ public interface HasRaceOfCompetitorContext {
public Speed getSpeedTenSecondsBeforeStart();
@Connector(messageKey="SpeedTenSecondsAfterStart", ordinal=5)
public Speed getSpeedTenSecondsAfterStart();
public Speed getSpeedTenSecondsAfterStartOfRace();
@Statistic(messageKey="RankThirtySecondsAfterStart", resultDecimals=2, ordinal=6)
public Double getRankThirtySecondsAfterStart();
public Double getRankThirtySecondsAfterStartOfRace();
@Statistic(messageKey="RankAfterHalfOfTheFirstLeg", resultDecimals=2, ordinal=7)
public Double getRankAfterHalfOfTheFirstLeg();
@@ -80,15 +83,15 @@ public interface HasRaceOfCompetitorContext {
@Statistic(messageKey="LineLengthAtStart", resultDecimals=1)
public Distance getLineLengthAtStart();
@Statistic(messageKey="AbsoluteWindwardDistanceToStarboardSideAtStart", resultDecimals=2)
Distance getAbsoluteWindwardDistanceToStarboardSideAtStart();
@Statistic(messageKey="AbsoluteWindwardDistanceToStarboardSideAtStartOfCompetitor", resultDecimals=2)
Distance getAbsoluteWindwardDistanceToStarboardSideAtStartOfCompetitor();
@Statistic(messageKey="DistanceToStarboadSideAtStartVsFinalRank", resultDecimals=2)
Pair<Double, Double> getRelativeDistanceToStarboardSideAtStartVsFinalRank();
@Statistic(messageKey="DistanceToStarboardSideAtStartOfCompetitorVsFinalRank", resultDecimals=2)
Pair<Double, Double> getRelativeDistanceToStarboardSideAtStartOfCompetitorVsFinalRank();
@Statistic(messageKey="WindwardDistanceToAdvantageousEndOfLineVsRelativeDistanceToAdvantageousEndOfLine", resultDecimals=2)
Pair<Double, Double> getWindwardDistanceToAdvantageousEndOfLineVsRelativeDistanceToAdvantageousEndOfLine();
@Statistic(messageKey="WindwardDistanceToAdvantageousEndOfLineAtStartOfRaceVsRelativeDistanceToAdvantageousEndOfLine", resultDecimals=2)
Pair<Double, Double> getWindwardDistanceToAdvantageousEndOfLineAtStartOfRaceVsRelativeDistanceToAdvantageousEndOfLineAtStartOfRace();
@Statistic(messageKey="RelativeDistanceToAdvantageousEndOfLine", resultDecimals=2)
Double getRelativeDistanceToAdvantageousEndOfLine();
@Statistic(messageKey="RelativeDistanceToAdvantageousEndOfLineAtStartOfRace", resultDecimals=2)
Double getRelativeDistanceToAdvantageousEndOfLineAtStartOfRace();
}
@@ -64,7 +64,7 @@ public class RaceOfCompetitorWithContext implements HasRaceOfCompetitorContext {
@Override
public ClusterDTO getPercentageClusterForDistanceToStarboardSideAtStart() {
Double normalizedDistance = getNormalizedDistanceToStarboardSideAtStart();
Double normalizedDistance = getNormalizedDistanceToStarboardSideAtStartOfCompetitor();
if (normalizedDistance == null) {
return null;
}
@@ -80,7 +80,7 @@ public class RaceOfCompetitorWithContext implements HasRaceOfCompetitorContext {
}
@Override
public Double getNormalizedDistanceToStarboardSideAtStart() {
public Double getNormalizedDistanceToStarboardSideAtStartOfCompetitor() {
TrackedRace trackedRace = getTrackedRace();
TrackedLegOfCompetitor firstTrackedLegOfCompetitor = trackedRace.getTrackedLeg(competitor, trackedRace.getRace().getCourse().getFirstLeg());
TimePoint competitorStartTime = firstTrackedLegOfCompetitor.getStartTime();
@@ -94,15 +94,16 @@ public class RaceOfCompetitorWithContext implements HasRaceOfCompetitorContext {
}
@Override
public Pair<Double, Double> getNormalizedDistanceToStarboardSideAtStartVsRankAtFirstMark(){
return new Pair<Double, Double> (getNormalizedDistanceToStarboardSideAtStart(), getRankAtFirstMark());
public Pair<Double, Double> getNormalizedDistanceToStarboardSideAtStartOfCompetitorVsRankAtFirstMark(){
return new Pair<Double, Double> (getNormalizedDistanceToStarboardSideAtStartOfCompetitor(), getRankAtFirstMark());
}
@Override
public Distance getWindwardDistanceToAdvantageousLineEndAtStart() {
public Distance getWindwardDistanceToAdvantageousLineEndAtStartOf(TimePoint timepoint) {
if(timepoint == null) {
return null;
}
TrackedRace trackedRace = getTrackedRace();
TimePoint startOfRace = trackedRace.getStartOfRace();
LineDetails startLine = trackedRace.getStartLine(startOfRace);
LineDetails startLine = trackedRace.getStartLine(timepoint);
Mark advantageousMark = null;
switch (startLine.getAdvantageousSideWhileApproachingLine()) {
case PORT:
@@ -117,17 +118,27 @@ public class RaceOfCompetitorWithContext implements HasRaceOfCompetitorContext {
}
GPSFixTrack<Mark, GPSFix> advantageousMarkTrack = trackedRace.getOrCreateTrack(advantageousMark);
Position advantageousMarkPosition = advantageousMarkTrack.getEstimatedPosition(startOfRace, false);
Position advantageousMarkPosition = advantageousMarkTrack.getEstimatedPosition(timepoint, false);
GPSFixTrack<Competitor, GPSFixMoving> competitorTrack = trackedRace.getTrack(getCompetitor());
Position competitorPosition = competitorTrack.getEstimatedPosition(startOfRace, false);
Position competitorPosition = competitorTrack.getEstimatedPosition(timepoint, false);
TrackedLeg trackedLeg = trackedRace.getTrackedLeg(trackedRace.getRace().getCourse().getFirstLeg());
Distance distance = trackedLeg.getWindwardDistance(competitorPosition, advantageousMarkPosition, startOfRace, WindPositionMode.LEG_MIDDLE);
Distance distance = trackedLeg.getWindwardDistance(competitorPosition, advantageousMarkPosition, timepoint, WindPositionMode.LEG_MIDDLE);
return distance;
}
@Override
public Distance getAbsoluteWindwardDistanceToStarboardSideAtStart() {
public Distance getWindwardDistanceToAdvantageousLineEndAtStartofRace() {
return getWindwardDistanceToAdvantageousLineEndAtStartOf(getTrackedRace().getStartOfRace());
}
@Override
public Distance getWindwardDistanceToAdvantageousLineEndAtStartofCompetitor() {
return getWindwardDistanceToAdvantageousLineEndAtStartOf(getTrackedRace().getTrackedLeg(getCompetitor(), getTrackedRace().getRace().getCourse().getFirstLeg()).getStartTime());
}
@Override
public Distance getAbsoluteWindwardDistanceToStarboardSideAtStartOfCompetitor() {
TrackedLegOfCompetitor firstTrackedLegOfCompetitor = getTrackedRace().getTrackedLeg(competitor, getTrackedRace().getRace().getCourse().getFirstLeg());
TimePoint competitorStartTime = firstTrackedLegOfCompetitor.getStartTime();
if(competitorStartTime == null) {
@@ -176,7 +187,7 @@ public class RaceOfCompetitorWithContext implements HasRaceOfCompetitorContext {
}
@Override
public Speed getSpeedTenSecondsAfterStart() {
public Speed getSpeedTenSecondsAfterStartOfRace() {
TimePoint startOfRace = getTrackedRace().getStartOfRace();
if (startOfRace == null) {
return null;
@@ -185,7 +196,7 @@ public class RaceOfCompetitorWithContext implements HasRaceOfCompetitorContext {
}
@Override
public Double getRankThirtySecondsAfterStart() {
public Double getRankThirtySecondsAfterStartOfRace() {
TimePoint startOfRace = getTrackedRace().getStartOfRace();
if (startOfRace == null) {
return null;
@@ -288,17 +299,17 @@ public class RaceOfCompetitorWithContext implements HasRaceOfCompetitorContext {
}
@Override
public Pair<Double, Double> getRelativeDistanceToStarboardSideAtStartVsFinalRank(){
return new Pair<>(getNormalizedDistanceToStarboardSideAtStart(), getTrackedRaceContext().getRankAtFinishForCompetitor(getCompetitor()));
public Pair<Double, Double> getRelativeDistanceToStarboardSideAtStartOfCompetitorVsFinalRank(){
return new Pair<>(getNormalizedDistanceToStarboardSideAtStartOfCompetitor(), getTrackedRaceContext().getRankAtFinishForCompetitor(getCompetitor()));
}
@Override
public Pair<Double, Double> getWindwardDistanceToAdvantageousEndOfLineVsRelativeDistanceToAdvantageousEndOfLine(){
return new Pair<>(getWindwardDistanceToAdvantageousLineEndAtStart().getMeters(), getRelativeDistanceToAdvantageousEndOfLine());
public Pair<Double, Double> getWindwardDistanceToAdvantageousEndOfLineAtStartOfRaceVsRelativeDistanceToAdvantageousEndOfLineAtStartOfRace(){
return new Pair<>(getWindwardDistanceToAdvantageousLineEndAtStartofRace().getMeters(), getRelativeDistanceToAdvantageousEndOfLineAtStartOfRace());
}
@Override
public Double getRelativeDistanceToAdvantageousEndOfLine() {
public Double getRelativeDistanceToAdvantageousEndOfLineAtStartOfRace() {
TrackedRace trackedRace = getTrackedRace();
TimePoint startOfRace = trackedRace.getStartOfRace();
LineDetails startLine = trackedRace.getStartLine(startOfRace);