mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-09-21 21:25:38 +00:00
bug6066: implement additional metrics for signed/unsigned relative XTE;
the value is computed relative to half the leg length (computed as great circle distance between its from/to waypoints)
This commit is contained in:
+4
-2
@@ -249,8 +249,10 @@ TotalDistanceToNeighboursPerpendicularToStarLineAtStartOfRace=Sum of absolute di
|
||||
TotalWindwardDistanceToNeighboursAtStartOfRace=Sum of absolute windward distances to start line neighbors at race start
|
||||
TotalDistanceToNeighboursProjectedToStartLineAtStartOfRace=Sum of along-line distances to start line neighbors (or end of line, respectively) at race start
|
||||
IRM=IRM Code (OCS, DNC, DNF, etc.)
|
||||
XTE=Cross-Track Error
|
||||
AbsoluteXTE=Absolute Cross-Track Error
|
||||
XTE=Cross-Track Error, signed (- = left, + = right)
|
||||
AbsoluteXTE=Absolute Cross-Track Error, unsigned
|
||||
XTERelativeSigned=Relative Cross-Track Error, signed (-1 = 1/2 leg length left, 0 = middle, +1 = 1/2 leg length right)
|
||||
XTERelativeUnsigned=Relative Cross-Track Error, unsigned (0 = middle, 1 = 1/2 leg length out)
|
||||
Day=Day
|
||||
CompetitorDay=Competitor Day
|
||||
CompetitorDaySailingDomainRetrieverChain=Competitor-Day for race
|
||||
|
||||
+4
-2
@@ -252,8 +252,10 @@ TotalDistanceToNeighboursPerpendicularToStarLineAtStartOfRace=Summe der absolute
|
||||
TotalWindwardDistanceToNeighboursAtStartOfRace=Summe der windwärtigen absoluten Abstände zu beiden Startlinien-Nachbarn
|
||||
TotalDistanceToNeighboursProjectedToStartLineAtStartOfRace=Summe der Abstände zu beiden Startlinien-Nachbarn bzw. den Enden der Linie, projiziert auf die Startlinie
|
||||
IRM=IRM Code (OCS, DNC, DNF etc.)
|
||||
XTE=Querabweichung
|
||||
AbsoluteXTE=Absolute Querabweichung
|
||||
XTE=Absolute Querabweichung, vorzeichenbehaftet (- = links, + = rechts)
|
||||
AbsoluteXTE=Absolute Querabweichung, ohne Vorzeichen
|
||||
XTERelativeSigned=Relative Querabweichung, mit Vorzeichen (-1 = 1/2 Schenkellänge links, 0 = Mitte, +1 = 1/2 Schenkellänge rechts)
|
||||
XTERelativeUnsigned=Relative Querabweichung, ohne Vorzeichen (0 = Mitte, 1 = ganz aussen)
|
||||
Day=Tag
|
||||
CompetitorDay=Teilnehmer-Tag
|
||||
CompetitorDaySailingDomainRetrieverChain=Teilnehmer-Tag für Wettfahrt
|
||||
|
||||
+6
@@ -36,6 +36,12 @@ public interface HasGPSFixContext {
|
||||
@Statistic(messageKey = "AbsoluteXTE", resultDecimals = 2)
|
||||
Distance getAbsoluteXTE();
|
||||
|
||||
@Statistic(messageKey = "XTERelativeSigned", resultDecimals = 2)
|
||||
Double getRelativeXTESigned();
|
||||
|
||||
@Statistic(messageKey = "XTERelativeUnsigned", resultDecimals = 2)
|
||||
Double getRelativeXTEUnsigned();
|
||||
|
||||
@Statistic(messageKey = "SmoothedSpeed", resultDecimals = 2)
|
||||
Speed getSmoothedSpeed();
|
||||
|
||||
|
||||
+17
@@ -93,6 +93,23 @@ public class GPSFixWithContext implements HasGPSFixContext {
|
||||
return getTrackedLegOfCompetitorContext().getTrackedLegOfCompetitor().getAbsoluteCrossTrackError(getTimePoint());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Double getRelativeXTESigned() {
|
||||
// The XTE is calculated relative to half the leg length
|
||||
return getTrackedLegOfCompetitorContext().getTrackedLegOfCompetitor().getSignedCrossTrackError(getTimePoint())
|
||||
.divide(getTrackedLegOfCompetitorContext().getTrackedLegContext().getTrackedLeg().getGreatCircleDistance(getTimePoint()))
|
||||
* 2.0; // half the leg length
|
||||
}
|
||||
|
||||
@Override
|
||||
public Double getRelativeXTEUnsigned() {
|
||||
// The XTE is calculated relative to the leg length
|
||||
return getTrackedLegOfCompetitorContext().getTrackedLegOfCompetitor().getAbsoluteCrossTrackError(getTimePoint())
|
||||
.divide(getTrackedLegOfCompetitorContext().getTrackedLegContext().getTrackedLeg().getGreatCircleDistance(getTimePoint()))
|
||||
* 2.0; // half the leg length
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public TackType getTackType() throws NoWindException {
|
||||
return getTrackedLegOfCompetitorContext().getTrackedLegOfCompetitor().getTackType(getTimePoint());
|
||||
|
||||
Reference in New Issue
Block a user