mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-09-23 14:08:40 +00:00
moved confidence stuff to com.sap.sailing.domain.common to enable its use in GWT, e.g., for a spatial wind field interpolation on the client side
This commit is contained in:
@@ -7,6 +7,8 @@ Bundle-Vendor: SAP
|
||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
|
||||
Bundle-ActivationPolicy: lazy
|
||||
Export-Package: com.sap.sailing.domain.common,
|
||||
com.sap.sailing.domain.common.confidence,
|
||||
com.sap.sailing.domain.common.confidence.impl,
|
||||
com.sap.sailing.domain.common.configuration,
|
||||
com.sap.sailing.domain.common.dto,
|
||||
com.sap.sailing.domain.common.impl,
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.sap.sailing.domain.confidence;
|
||||
package com.sap.sailing.domain.common.confidence;
|
||||
|
||||
public interface ConfidenceBasedAverager<ValueType, BaseType, RelativeTo> {
|
||||
/**
|
||||
+44
@@ -0,0 +1,44 @@
|
||||
package com.sap.sailing.domain.common.confidence;
|
||||
|
||||
import com.sap.sailing.domain.common.Distance;
|
||||
import com.sap.sailing.domain.common.Position;
|
||||
import com.sap.sailing.domain.common.TimePoint;
|
||||
import com.sap.sailing.domain.common.confidence.impl.ConfidenceBasedAveragerFactoryImpl;
|
||||
|
||||
public interface ConfidenceFactory {
|
||||
ConfidenceFactory INSTANCE = new ConfidenceBasedAveragerFactoryImpl();
|
||||
|
||||
/**
|
||||
* @param weigher
|
||||
* used to determine the confidence of the elements to be averaged, relative to the reference point given
|
||||
* as parameter to {@link ConfidenceBasedAverager#getAverage(Iterable, Object)}. If <code>null</code>,
|
||||
* 1.0 will be assumed as default confidence for all values provided, regardless the reference point
|
||||
* relative to which the average is to be computed
|
||||
*/
|
||||
<ValueType, BaseType, RelativeTo> ConfidenceBasedAverager<ValueType, BaseType, RelativeTo> createAverager(Weigher<RelativeTo> weigher);
|
||||
|
||||
<RelativeTo> Weigher<RelativeTo> createConstantWeigher(double constantConfidence);
|
||||
|
||||
/**
|
||||
* Creates a weigher for time points. With increasing time difference the weight/confidence decreases exponentially.
|
||||
* It is halved every <code>halfConfidenceAfterMilliseconds</code> milliseconds.
|
||||
*/
|
||||
Weigher<TimePoint> createExponentialTimeDifferenceWeigher(long halfConfidenceAfterMilliseconds);
|
||||
|
||||
/**
|
||||
* Like {@link #createExponentialTimeDifferenceWeigher(long)}, only that additionally a minimum confidence value is defined.
|
||||
* This can be useful for averagers that have trouble with values scaled down with 0.0.
|
||||
*/
|
||||
Weigher<TimePoint> createExponentialTimeDifferenceWeigher(long halfConfidenceAfterMilliseconds, double minimumConfidence);
|
||||
|
||||
Weigher<TimePoint> createHyperbolicTimeDifferenceWeigher(long halfConfidenceAfterMilliseconds);
|
||||
|
||||
Weigher<TimePoint> createHyperbolicSquaredTimeDifferenceWeigher(long halfConfidenceAfterMilliseconds);
|
||||
|
||||
/**
|
||||
* Constructs a weigher that determines a confidence based on a distance. A {@link Distance#NULL zero distance}
|
||||
* will yield a confidence of 1; a distance of <code>halfConfidence</code> will return a confidence of .5, and the
|
||||
* confidence will decrease hyperbolically with increasing distance.
|
||||
*/
|
||||
Weigher<Position> createHyperbolicDistanceWeigher(Distance halfConfidence);
|
||||
}
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.sap.sailing.domain.confidence;
|
||||
package com.sap.sailing.domain.common.confidence;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.sap.sailing.domain.confidence;
|
||||
package com.sap.sailing.domain.common.confidence;
|
||||
|
||||
import com.sap.sailing.domain.common.scalablevalue.IsScalable;
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.sap.sailing.domain.confidence;
|
||||
package com.sap.sailing.domain.common.confidence;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
+4
-10
@@ -1,12 +1,11 @@
|
||||
package com.sap.sailing.domain.confidence.impl;
|
||||
package com.sap.sailing.domain.common.confidence.impl;
|
||||
|
||||
import com.sap.sailing.domain.common.Distance;
|
||||
import com.sap.sailing.domain.common.Position;
|
||||
import com.sap.sailing.domain.common.TimePoint;
|
||||
import com.sap.sailing.domain.confidence.ConfidenceBasedAverager;
|
||||
import com.sap.sailing.domain.confidence.ConfidenceBasedWindAverager;
|
||||
import com.sap.sailing.domain.confidence.ConfidenceFactory;
|
||||
import com.sap.sailing.domain.confidence.Weigher;
|
||||
import com.sap.sailing.domain.common.confidence.ConfidenceBasedAverager;
|
||||
import com.sap.sailing.domain.common.confidence.ConfidenceFactory;
|
||||
import com.sap.sailing.domain.common.confidence.Weigher;
|
||||
|
||||
public class ConfidenceBasedAveragerFactoryImpl implements ConfidenceFactory {
|
||||
@Override
|
||||
@@ -26,11 +25,6 @@ public class ConfidenceBasedAveragerFactoryImpl implements ConfidenceFactory {
|
||||
return new ConfidenceBasedAveragerImpl<ValueType, BaseType, RelativeTo>(weigher);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <RelativeTo> ConfidenceBasedWindAverager<RelativeTo> createWindAverager(Weigher<RelativeTo> weigher) {
|
||||
return new ConfidenceBasedWindAveragerImpl<RelativeTo>(weigher);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Weigher<TimePoint> createHyperbolicTimeDifferenceWeigher(long halfConfidenceAfterMilliseconds) {
|
||||
return new HyperbolicTimeDifferenceWeigher(halfConfidenceAfterMilliseconds);
|
||||
+5
-6
@@ -1,11 +1,10 @@
|
||||
package com.sap.sailing.domain.confidence.impl;
|
||||
package com.sap.sailing.domain.common.confidence.impl;
|
||||
|
||||
import com.sap.sailing.domain.base.impl.HasConfidenceImpl;
|
||||
import com.sap.sailing.domain.common.confidence.ConfidenceBasedAverager;
|
||||
import com.sap.sailing.domain.common.confidence.HasConfidence;
|
||||
import com.sap.sailing.domain.common.confidence.HasConfidenceAndIsScalable;
|
||||
import com.sap.sailing.domain.common.confidence.Weigher;
|
||||
import com.sap.sailing.domain.common.scalablevalue.ScalableValue;
|
||||
import com.sap.sailing.domain.confidence.ConfidenceBasedAverager;
|
||||
import com.sap.sailing.domain.confidence.HasConfidence;
|
||||
import com.sap.sailing.domain.confidence.HasConfidenceAndIsScalable;
|
||||
import com.sap.sailing.domain.confidence.Weigher;
|
||||
import com.sap.sse.common.Util;
|
||||
|
||||
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
package com.sap.sailing.domain.confidence.impl;
|
||||
package com.sap.sailing.domain.common.confidence.impl;
|
||||
|
||||
import com.sap.sailing.domain.common.TimePoint;
|
||||
import com.sap.sailing.domain.confidence.Weigher;
|
||||
import com.sap.sailing.domain.common.confidence.Weigher;
|
||||
|
||||
/**
|
||||
* The weigher computes an exponentially-decreasing weight based on the time difference of two {@link TimePoint}s.
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
package com.sap.sailing.domain.base.impl;
|
||||
package com.sap.sailing.domain.common.confidence.impl;
|
||||
|
||||
import com.sap.sailing.domain.confidence.HasConfidence;
|
||||
import com.sap.sailing.domain.common.confidence.HasConfidence;
|
||||
|
||||
public class HasConfidenceImpl<ValueType, BaseType, RelativeTo> implements HasConfidence<ValueType, BaseType, RelativeTo> {
|
||||
private static final long serialVersionUID = -1635823148449693024L;
|
||||
+2
-2
@@ -1,8 +1,8 @@
|
||||
package com.sap.sailing.domain.confidence.impl;
|
||||
package com.sap.sailing.domain.common.confidence.impl;
|
||||
|
||||
import com.sap.sailing.domain.common.Distance;
|
||||
import com.sap.sailing.domain.common.Position;
|
||||
import com.sap.sailing.domain.confidence.Weigher;
|
||||
import com.sap.sailing.domain.common.confidence.Weigher;
|
||||
|
||||
public class HyperbolicDistanceWeigher implements Weigher<Position> {
|
||||
private static final long serialVersionUID = 5521299690322077224L;
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
package com.sap.sailing.domain.confidence.impl;
|
||||
package com.sap.sailing.domain.common.confidence.impl;
|
||||
|
||||
import com.sap.sailing.domain.common.TimePoint;
|
||||
import com.sap.sailing.domain.confidence.Weigher;
|
||||
import com.sap.sailing.domain.common.confidence.Weigher;
|
||||
|
||||
public class HyperbolicSquaredTimeDifferenceWeigher implements Weigher<TimePoint> {
|
||||
private static final long serialVersionUID = 4378168079868145134L;
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
package com.sap.sailing.domain.confidence.impl;
|
||||
package com.sap.sailing.domain.common.confidence.impl;
|
||||
|
||||
import com.sap.sailing.domain.common.TimePoint;
|
||||
import com.sap.sailing.domain.confidence.Weigher;
|
||||
import com.sap.sailing.domain.common.confidence.Weigher;
|
||||
|
||||
public class HyperbolicTimeDifferenceWeigher implements Weigher<TimePoint> {
|
||||
private static final long serialVersionUID = 4378168079868145134L;
|
||||
+3
-3
@@ -1,10 +1,10 @@
|
||||
package com.sap.sailing.domain.confidence.impl;
|
||||
package com.sap.sailing.domain.common.confidence.impl;
|
||||
|
||||
import com.sap.sailing.domain.common.Distance;
|
||||
import com.sap.sailing.domain.common.Position;
|
||||
import com.sap.sailing.domain.common.TimePoint;
|
||||
import com.sap.sailing.domain.confidence.ConfidenceFactory;
|
||||
import com.sap.sailing.domain.confidence.Weigher;
|
||||
import com.sap.sailing.domain.common.confidence.ConfidenceFactory;
|
||||
import com.sap.sailing.domain.common.confidence.Weigher;
|
||||
import com.sap.sse.common.Util;
|
||||
|
||||
/**
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.sap.sailing.domain.confidence.impl;
|
||||
package com.sap.sailing.domain.common.confidence.impl;
|
||||
|
||||
import com.sap.sailing.domain.common.scalablevalue.AbstractScalarValue;
|
||||
import com.sap.sailing.domain.common.scalablevalue.ScalableValue;
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
package com.sap.sailing.domain.confidence.impl;
|
||||
package com.sap.sailing.domain.common.confidence.impl;
|
||||
|
||||
import com.sap.sailing.domain.confidence.HasConfidenceAndIsScalable;
|
||||
import com.sap.sailing.domain.common.confidence.HasConfidenceAndIsScalable;
|
||||
|
||||
public class ScalableDoubleWithConfidence<RelativeTo> extends ScalableDouble implements HasConfidenceAndIsScalable<Double, Double, RelativeTo> {
|
||||
private static final long serialVersionUID = 1042652394404557792L;
|
||||
@@ -14,13 +14,13 @@ import com.sap.sailing.domain.base.impl.BearingWithConfidenceImpl;
|
||||
import com.sap.sailing.domain.base.impl.PositionWithConfidenceImpl;
|
||||
import com.sap.sailing.domain.common.Bearing;
|
||||
import com.sap.sailing.domain.common.Position;
|
||||
import com.sap.sailing.domain.common.confidence.ConfidenceBasedAverager;
|
||||
import com.sap.sailing.domain.common.confidence.ConfidenceFactory;
|
||||
import com.sap.sailing.domain.common.confidence.HasConfidence;
|
||||
import com.sap.sailing.domain.common.impl.DegreeBearingImpl;
|
||||
import com.sap.sailing.domain.common.impl.DegreePosition;
|
||||
import com.sap.sailing.domain.common.impl.RadianBearingImpl;
|
||||
import com.sap.sailing.domain.common.scalablevalue.impl.ScalablePosition;
|
||||
import com.sap.sailing.domain.confidence.ConfidenceBasedAverager;
|
||||
import com.sap.sailing.domain.confidence.ConfidenceFactory;
|
||||
import com.sap.sailing.domain.confidence.HasConfidence;
|
||||
import com.sap.sailing.domain.tracking.impl.BearingCluster;
|
||||
import com.sap.sailing.domain.tracking.impl.BearingWithConfidenceCluster;
|
||||
|
||||
|
||||
+6
-6
@@ -18,6 +18,12 @@ import com.sap.sailing.domain.base.impl.PositionWithConfidenceImpl;
|
||||
import com.sap.sailing.domain.common.Bearing;
|
||||
import com.sap.sailing.domain.common.Position;
|
||||
import com.sap.sailing.domain.common.TimePoint;
|
||||
import com.sap.sailing.domain.common.confidence.ConfidenceBasedAverager;
|
||||
import com.sap.sailing.domain.confidence.ConfidenceFactory;
|
||||
import com.sap.sailing.domain.common.confidence.HasConfidence;
|
||||
import com.sap.sailing.domain.common.confidence.HasConfidenceAndIsScalable;
|
||||
import com.sap.sailing.domain.common.confidence.Weigher;
|
||||
import com.sap.sailing.domain.common.confidence.impl.ScalableDoubleWithConfidence;
|
||||
import com.sap.sailing.domain.common.impl.DegreeBearingImpl;
|
||||
import com.sap.sailing.domain.common.impl.DegreePosition;
|
||||
import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl;
|
||||
@@ -27,13 +33,7 @@ import com.sap.sailing.domain.common.impl.NauticalMileDistance;
|
||||
import com.sap.sailing.domain.common.impl.RadianBearingImpl;
|
||||
import com.sap.sailing.domain.common.scalablevalue.ScalableValue;
|
||||
import com.sap.sailing.domain.common.scalablevalue.impl.ScalablePosition;
|
||||
import com.sap.sailing.domain.confidence.ConfidenceBasedAverager;
|
||||
import com.sap.sailing.domain.confidence.ConfidenceBasedWindAverager;
|
||||
import com.sap.sailing.domain.confidence.ConfidenceFactory;
|
||||
import com.sap.sailing.domain.confidence.HasConfidence;
|
||||
import com.sap.sailing.domain.confidence.HasConfidenceAndIsScalable;
|
||||
import com.sap.sailing.domain.confidence.Weigher;
|
||||
import com.sap.sailing.domain.confidence.impl.ScalableDoubleWithConfidence;
|
||||
import com.sap.sailing.domain.tracking.Wind;
|
||||
import com.sap.sailing.domain.tracking.WindWithConfidence;
|
||||
import com.sap.sailing.domain.tracking.impl.BearingWithConfidenceCluster;
|
||||
|
||||
@@ -37,15 +37,15 @@ import com.sap.sailing.domain.common.Color;
|
||||
import com.sap.sailing.domain.common.Position;
|
||||
import com.sap.sailing.domain.common.ScoringSchemeType;
|
||||
import com.sap.sailing.domain.common.TimePoint;
|
||||
import com.sap.sailing.domain.confidence.ConfidenceFactory;
|
||||
import com.sap.sailing.domain.common.confidence.Weigher;
|
||||
import com.sap.sailing.domain.common.confidence.impl.PositionAndTimePointWeigher;
|
||||
import com.sap.sailing.domain.common.impl.DegreeBearingImpl;
|
||||
import com.sap.sailing.domain.common.impl.DegreePosition;
|
||||
import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl;
|
||||
import com.sap.sailing.domain.common.impl.MeterDistance;
|
||||
import com.sap.sailing.domain.common.impl.MillisecondsTimePoint;
|
||||
import com.sap.sailing.domain.confidence.ConfidenceBasedWindAverager;
|
||||
import com.sap.sailing.domain.confidence.ConfidenceFactory;
|
||||
import com.sap.sailing.domain.confidence.Weigher;
|
||||
import com.sap.sailing.domain.confidence.impl.PositionAndTimePointWeigher;
|
||||
import com.sap.sailing.domain.racelog.impl.EmptyRaceLogStore;
|
||||
import com.sap.sailing.domain.racelog.tracking.EmptyGPSFixStore;
|
||||
import com.sap.sailing.domain.tracking.DynamicTrackedRace;
|
||||
|
||||
@@ -9,7 +9,6 @@ Bundle-ClassPath: .
|
||||
Export-Package: com.sap.sailing.domain.base,
|
||||
com.sap.sailing.domain.base.impl,
|
||||
com.sap.sailing.domain.confidence,
|
||||
com.sap.sailing.domain.confidence.impl;x-friends:="com.sap.sailing.domain.test",
|
||||
com.sap.sailing.domain.leaderboard,
|
||||
com.sap.sailing.domain.leaderboard.caching,
|
||||
com.sap.sailing.domain.leaderboard.impl,
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@ package com.sap.sailing.domain.base;
|
||||
|
||||
import com.sap.sailing.domain.common.Bearing;
|
||||
import com.sap.sailing.domain.common.DoublePair;
|
||||
import com.sap.sailing.domain.confidence.HasConfidenceAndIsScalable;
|
||||
import com.sap.sailing.domain.common.confidence.HasConfidenceAndIsScalable;
|
||||
|
||||
|
||||
public interface BearingWithConfidence<RelativeTo> extends HasConfidenceAndIsScalable<DoublePair, Bearing, RelativeTo> {
|
||||
|
||||
+1
-1
@@ -1,8 +1,8 @@
|
||||
package com.sap.sailing.domain.base;
|
||||
|
||||
import com.sap.sailing.domain.common.Position;
|
||||
import com.sap.sailing.domain.common.confidence.HasConfidenceAndIsScalable;
|
||||
import com.sap.sailing.domain.common.scalablevalue.impl.ScalablePosition;
|
||||
import com.sap.sailing.domain.confidence.HasConfidenceAndIsScalable;
|
||||
|
||||
/**
|
||||
* A position with a confidence attached. The scalable intermediate type represents the x/y/z coordinate of the
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@ package com.sap.sailing.domain.base;
|
||||
|
||||
import com.sap.sailing.domain.common.Speed;
|
||||
import com.sap.sailing.domain.common.SpeedWithBearing;
|
||||
import com.sap.sailing.domain.confidence.HasConfidence;
|
||||
import com.sap.sailing.domain.common.confidence.HasConfidence;
|
||||
import com.sap.sse.common.Util;
|
||||
|
||||
public interface SpeedWithBearingWithConfidence<RelativeTo> extends
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
package com.sap.sailing.domain.base;
|
||||
|
||||
import com.sap.sailing.domain.common.Speed;
|
||||
import com.sap.sailing.domain.confidence.HasConfidenceAndIsScalable;
|
||||
import com.sap.sailing.domain.common.confidence.HasConfidenceAndIsScalable;
|
||||
|
||||
public interface SpeedWithConfidence<RelativeTo> extends HasConfidenceAndIsScalable<Double, Speed, RelativeTo> {
|
||||
}
|
||||
|
||||
+1
@@ -3,6 +3,7 @@ package com.sap.sailing.domain.base.impl;
|
||||
import com.sap.sailing.domain.base.BearingWithConfidence;
|
||||
import com.sap.sailing.domain.common.Bearing;
|
||||
import com.sap.sailing.domain.common.DoublePair;
|
||||
import com.sap.sailing.domain.common.confidence.impl.HasConfidenceImpl;
|
||||
import com.sap.sailing.domain.common.scalablevalue.IsScalable;
|
||||
import com.sap.sailing.domain.common.scalablevalue.ScalableValue;
|
||||
import com.sap.sailing.domain.common.scalablevalue.impl.ScalableBearing;
|
||||
|
||||
+1
@@ -2,6 +2,7 @@ package com.sap.sailing.domain.base.impl;
|
||||
|
||||
import com.sap.sailing.domain.base.PositionWithConfidence;
|
||||
import com.sap.sailing.domain.common.Position;
|
||||
import com.sap.sailing.domain.common.confidence.impl.HasConfidenceImpl;
|
||||
import com.sap.sailing.domain.common.scalablevalue.IsScalable;
|
||||
import com.sap.sailing.domain.common.scalablevalue.impl.ScalablePosition;
|
||||
|
||||
|
||||
+1
@@ -3,6 +3,7 @@ package com.sap.sailing.domain.base.impl;
|
||||
import com.sap.sailing.domain.base.SpeedWithBearingWithConfidence;
|
||||
import com.sap.sailing.domain.common.Speed;
|
||||
import com.sap.sailing.domain.common.SpeedWithBearing;
|
||||
import com.sap.sailing.domain.common.confidence.impl.HasConfidenceImpl;
|
||||
import com.sap.sailing.domain.common.scalablevalue.IsScalable;
|
||||
import com.sap.sailing.domain.common.scalablevalue.ScalableValue;
|
||||
import com.sap.sailing.domain.common.scalablevalue.impl.ScalableSpeedWithBearing;
|
||||
|
||||
+1
@@ -2,6 +2,7 @@ package com.sap.sailing.domain.base.impl;
|
||||
|
||||
import com.sap.sailing.domain.base.SpeedWithConfidence;
|
||||
import com.sap.sailing.domain.common.Speed;
|
||||
import com.sap.sailing.domain.common.confidence.impl.HasConfidenceImpl;
|
||||
import com.sap.sailing.domain.common.scalablevalue.ScalableValue;
|
||||
import com.sap.sailing.domain.common.scalablevalue.impl.ScalableSpeed;
|
||||
|
||||
|
||||
+2
@@ -1,5 +1,7 @@
|
||||
package com.sap.sailing.domain.confidence;
|
||||
|
||||
import com.sap.sailing.domain.common.confidence.ConfidenceBasedAverager;
|
||||
import com.sap.sailing.domain.common.confidence.HasConfidenceAndIsScalable;
|
||||
import com.sap.sailing.domain.tracking.Wind;
|
||||
import com.sap.sailing.domain.tracking.WindWithConfidence;
|
||||
import com.sap.sailing.domain.tracking.impl.ScalableWind;
|
||||
|
||||
+18
-53
@@ -1,53 +1,18 @@
|
||||
package com.sap.sailing.domain.confidence;
|
||||
|
||||
import com.sap.sailing.domain.common.Distance;
|
||||
import com.sap.sailing.domain.common.Position;
|
||||
import com.sap.sailing.domain.common.TimePoint;
|
||||
import com.sap.sailing.domain.confidence.impl.ConfidenceBasedAveragerFactoryImpl;
|
||||
import com.sap.sailing.domain.tracking.WindWithConfidence;
|
||||
|
||||
public interface ConfidenceFactory {
|
||||
ConfidenceFactory INSTANCE = new ConfidenceBasedAveragerFactoryImpl();
|
||||
|
||||
/**
|
||||
* @param weigher
|
||||
* used to determine the confidence of the elements to be averaged, relative to the reference point given
|
||||
* as parameter to {@link ConfidenceBasedAverager#getAverage(Iterable, Object)}. If <code>null</code>,
|
||||
* 1.0 will be assumed as default confidence for all values provided, regardless the reference point
|
||||
* relative to which the average is to be computed
|
||||
*/
|
||||
<ValueType, BaseType, RelativeTo> ConfidenceBasedAverager<ValueType, BaseType, RelativeTo> createAverager(Weigher<RelativeTo> weigher);
|
||||
|
||||
/**
|
||||
* Produces a specialized averaged which can deal with the special case that {@link WindWithConfidence} objects
|
||||
* have an internal <code>useSpeed</code> flag which may, when set to <code>false</code> suppress the consideration
|
||||
* of the wind fix's speed (not the bearing) in computing the average. For this to work, the averager has to maintain
|
||||
* a separate confidence sum for the speed values considered.
|
||||
*/
|
||||
<RelativeTo> ConfidenceBasedWindAverager<RelativeTo> createWindAverager(Weigher<RelativeTo> weigher);
|
||||
|
||||
<RelativeTo> Weigher<RelativeTo> createConstantWeigher(double constantConfidence);
|
||||
|
||||
/**
|
||||
* Creates a weigher for time points. With increasing time difference the weight/confidence decreases exponentially.
|
||||
* It is halved every <code>halfConfidenceAfterMilliseconds</code> milliseconds.
|
||||
*/
|
||||
Weigher<TimePoint> createExponentialTimeDifferenceWeigher(long halfConfidenceAfterMilliseconds);
|
||||
|
||||
/**
|
||||
* Like {@link #createExponentialTimeDifferenceWeigher(long)}, only that additionally a minimum confidence value is defined.
|
||||
* This can be useful for averagers that have trouble with values scaled down with 0.0.
|
||||
*/
|
||||
Weigher<TimePoint> createExponentialTimeDifferenceWeigher(long halfConfidenceAfterMilliseconds, double minimumConfidence);
|
||||
|
||||
Weigher<TimePoint> createHyperbolicTimeDifferenceWeigher(long halfConfidenceAfterMilliseconds);
|
||||
|
||||
Weigher<TimePoint> createHyperbolicSquaredTimeDifferenceWeigher(long halfConfidenceAfterMilliseconds);
|
||||
|
||||
/**
|
||||
* Constructs a weigher that determines a confidence based on a distance. A {@link Distance#NULL zero distance}
|
||||
* will yield a confidence of 1; a distance of <code>halfConfidence</code> will return a confidence of .5, and the
|
||||
* confidence will decrease hyperbolically with increasing distance.
|
||||
*/
|
||||
Weigher<Position> createHyperbolicDistanceWeigher(Distance halfConfidence);
|
||||
}
|
||||
package com.sap.sailing.domain.confidence;
|
||||
|
||||
import com.sap.sailing.domain.common.confidence.Weigher;
|
||||
import com.sap.sailing.domain.confidence.impl.ConfidenceFactoryImpl;
|
||||
import com.sap.sailing.domain.tracking.WindWithConfidence;
|
||||
|
||||
public interface ConfidenceFactory extends com.sap.sailing.domain.common.confidence.ConfidenceFactory {
|
||||
ConfidenceFactory INSTANCE = new ConfidenceFactoryImpl();
|
||||
|
||||
/**
|
||||
* Produces a specialized averaged which can deal with the special case that {@link WindWithConfidence} objects have
|
||||
* an internal <code>useSpeed</code> flag which may, when set to <code>false</code> suppress the consideration of
|
||||
* the wind fix's speed (not the bearing) in computing the average. For this to work, the averager has to maintain a
|
||||
* separate confidence sum for the speed values considered.
|
||||
*/
|
||||
<RelativeTo> ConfidenceBasedWindAverager<RelativeTo> createWindAverager(Weigher<RelativeTo> weigher);
|
||||
|
||||
}
|
||||
|
||||
+3
-2
@@ -3,10 +3,11 @@ package com.sap.sailing.domain.confidence.impl;
|
||||
import com.sap.sailing.domain.common.Speed;
|
||||
import com.sap.sailing.domain.common.WindSource;
|
||||
import com.sap.sailing.domain.common.WindSourceType;
|
||||
import com.sap.sailing.domain.common.confidence.HasConfidenceAndIsScalable;
|
||||
import com.sap.sailing.domain.common.confidence.Weigher;
|
||||
import com.sap.sailing.domain.common.confidence.impl.ConfidenceBasedAveragerImpl;
|
||||
import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl;
|
||||
import com.sap.sailing.domain.confidence.ConfidenceBasedWindAverager;
|
||||
import com.sap.sailing.domain.confidence.HasConfidenceAndIsScalable;
|
||||
import com.sap.sailing.domain.confidence.Weigher;
|
||||
import com.sap.sailing.domain.tracking.Wind;
|
||||
import com.sap.sailing.domain.tracking.WindWithConfidence;
|
||||
import com.sap.sailing.domain.tracking.impl.ScalableWind;
|
||||
|
||||
Executable
+13
@@ -0,0 +1,13 @@
|
||||
package com.sap.sailing.domain.confidence.impl;
|
||||
|
||||
import com.sap.sailing.domain.common.confidence.Weigher;
|
||||
import com.sap.sailing.domain.confidence.ConfidenceBasedWindAverager;
|
||||
import com.sap.sailing.domain.confidence.ConfidenceFactory;
|
||||
|
||||
public class ConfidenceFactoryImpl extends
|
||||
com.sap.sailing.domain.common.confidence.impl.ConfidenceBasedAveragerFactoryImpl implements ConfidenceFactory {
|
||||
@Override
|
||||
public <RelativeTo> ConfidenceBasedWindAverager<RelativeTo> createWindAverager(Weigher<RelativeTo> weigher) {
|
||||
return new ConfidenceBasedWindAveragerImpl<RelativeTo>(weigher);
|
||||
}
|
||||
}
|
||||
@@ -9,7 +9,7 @@ import com.sap.sailing.domain.common.Position;
|
||||
import com.sap.sailing.domain.common.Speed;
|
||||
import com.sap.sailing.domain.common.SpeedWithBearing;
|
||||
import com.sap.sailing.domain.common.TimePoint;
|
||||
import com.sap.sailing.domain.confidence.Weigher;
|
||||
import com.sap.sailing.domain.common.confidence.Weigher;
|
||||
import com.sap.sse.common.Util;
|
||||
|
||||
/**
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@ package com.sap.sailing.domain.tracking;
|
||||
|
||||
import com.sap.sailing.domain.common.Position;
|
||||
import com.sap.sailing.domain.common.TimePoint;
|
||||
import com.sap.sailing.domain.confidence.HasConfidenceAndIsScalable;
|
||||
import com.sap.sailing.domain.common.confidence.HasConfidenceAndIsScalable;
|
||||
import com.sap.sailing.domain.tracking.impl.ScalableWind;
|
||||
|
||||
/**
|
||||
|
||||
+4
-4
@@ -8,10 +8,10 @@ import com.sap.sailing.domain.base.BearingWithConfidence;
|
||||
import com.sap.sailing.domain.base.impl.BearingWithConfidenceImpl;
|
||||
import com.sap.sailing.domain.common.Bearing;
|
||||
import com.sap.sailing.domain.common.DoublePair;
|
||||
import com.sap.sailing.domain.confidence.ConfidenceBasedAverager;
|
||||
import com.sap.sailing.domain.confidence.ConfidenceFactory;
|
||||
import com.sap.sailing.domain.confidence.HasConfidence;
|
||||
import com.sap.sailing.domain.confidence.Weigher;
|
||||
import com.sap.sailing.domain.common.confidence.ConfidenceBasedAverager;
|
||||
import com.sap.sailing.domain.common.confidence.ConfidenceFactory;
|
||||
import com.sap.sailing.domain.common.confidence.HasConfidence;
|
||||
import com.sap.sailing.domain.common.confidence.Weigher;
|
||||
import com.sap.sse.common.Util;
|
||||
|
||||
/**
|
||||
|
||||
+4
-4
@@ -14,11 +14,11 @@ import com.sap.sailing.domain.common.Bearing;
|
||||
import com.sap.sailing.domain.common.Speed;
|
||||
import com.sap.sailing.domain.common.SpeedWithBearing;
|
||||
import com.sap.sailing.domain.common.TimePoint;
|
||||
import com.sap.sailing.domain.common.confidence.ConfidenceBasedAverager;
|
||||
import com.sap.sailing.domain.common.confidence.ConfidenceFactory;
|
||||
import com.sap.sailing.domain.common.confidence.HasConfidence;
|
||||
import com.sap.sailing.domain.common.confidence.Weigher;
|
||||
import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl;
|
||||
import com.sap.sailing.domain.confidence.ConfidenceBasedAverager;
|
||||
import com.sap.sailing.domain.confidence.ConfidenceFactory;
|
||||
import com.sap.sailing.domain.confidence.HasConfidence;
|
||||
import com.sap.sailing.domain.confidence.Weigher;
|
||||
import com.sap.sailing.domain.tracking.DynamicGPSFixTrack;
|
||||
import com.sap.sailing.domain.tracking.GPSFixMoving;
|
||||
|
||||
|
||||
+4
-4
@@ -30,14 +30,14 @@ import com.sap.sailing.domain.common.Position;
|
||||
import com.sap.sailing.domain.common.Speed;
|
||||
import com.sap.sailing.domain.common.SpeedWithBearing;
|
||||
import com.sap.sailing.domain.common.TimePoint;
|
||||
import com.sap.sailing.domain.common.confidence.ConfidenceBasedAverager;
|
||||
import com.sap.sailing.domain.common.confidence.ConfidenceFactory;
|
||||
import com.sap.sailing.domain.common.confidence.HasConfidence;
|
||||
import com.sap.sailing.domain.common.confidence.Weigher;
|
||||
import com.sap.sailing.domain.common.impl.KnotSpeedImpl;
|
||||
import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl;
|
||||
import com.sap.sailing.domain.common.impl.MillisecondsTimePoint;
|
||||
import com.sap.sailing.domain.common.impl.NauticalMileDistance;
|
||||
import com.sap.sailing.domain.confidence.ConfidenceBasedAverager;
|
||||
import com.sap.sailing.domain.confidence.ConfidenceFactory;
|
||||
import com.sap.sailing.domain.confidence.HasConfidence;
|
||||
import com.sap.sailing.domain.confidence.Weigher;
|
||||
import com.sap.sailing.domain.tracking.GPSFix;
|
||||
import com.sap.sailing.domain.tracking.GPSFixMoving;
|
||||
import com.sap.sailing.domain.tracking.GPSFixTrack;
|
||||
|
||||
+2
-2
@@ -22,13 +22,13 @@ import com.sap.sailing.domain.common.TimePoint;
|
||||
import com.sap.sailing.domain.common.TrackedRaceStatusEnum;
|
||||
import com.sap.sailing.domain.common.WindSource;
|
||||
import com.sap.sailing.domain.common.WindSourceType;
|
||||
import com.sap.sailing.domain.common.confidence.ConfidenceFactory;
|
||||
import com.sap.sailing.domain.common.confidence.Weigher;
|
||||
import com.sap.sailing.domain.common.impl.AbstractTimePoint;
|
||||
import com.sap.sailing.domain.common.impl.DegreeBearingImpl;
|
||||
import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl;
|
||||
import com.sap.sailing.domain.common.impl.MillisecondsTimePoint;
|
||||
import com.sap.sailing.domain.common.impl.SerializableComparator;
|
||||
import com.sap.sailing.domain.confidence.ConfidenceFactory;
|
||||
import com.sap.sailing.domain.confidence.Weigher;
|
||||
import com.sap.sailing.domain.tracking.GPSFix;
|
||||
import com.sap.sailing.domain.tracking.GPSFixMoving;
|
||||
import com.sap.sailing.domain.tracking.MarkPassing;
|
||||
|
||||
+5
-5
@@ -66,6 +66,11 @@ import com.sap.sailing.domain.common.TimingConstants;
|
||||
import com.sap.sailing.domain.common.TrackedRaceStatusEnum;
|
||||
import com.sap.sailing.domain.common.WindSource;
|
||||
import com.sap.sailing.domain.common.WindSourceType;
|
||||
import com.sap.sailing.domain.confidence.ConfidenceFactory;
|
||||
import com.sap.sailing.domain.common.confidence.HasConfidence;
|
||||
import com.sap.sailing.domain.common.confidence.Weigher;
|
||||
import com.sap.sailing.domain.common.confidence.impl.HyperbolicTimeDifferenceWeigher;
|
||||
import com.sap.sailing.domain.common.confidence.impl.PositionAndTimePointWeigher;
|
||||
import com.sap.sailing.domain.common.impl.CentralAngleDistance;
|
||||
import com.sap.sailing.domain.common.impl.KnotSpeedImpl;
|
||||
import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl;
|
||||
@@ -76,11 +81,6 @@ import com.sap.sailing.domain.common.impl.WindSourceImpl;
|
||||
import com.sap.sailing.domain.common.racelog.tracking.NoCorrespondingServiceRegisteredException;
|
||||
import com.sap.sailing.domain.common.racelog.tracking.TransformationException;
|
||||
import com.sap.sailing.domain.confidence.ConfidenceBasedWindAverager;
|
||||
import com.sap.sailing.domain.confidence.ConfidenceFactory;
|
||||
import com.sap.sailing.domain.confidence.HasConfidence;
|
||||
import com.sap.sailing.domain.confidence.Weigher;
|
||||
import com.sap.sailing.domain.confidence.impl.HyperbolicTimeDifferenceWeigher;
|
||||
import com.sap.sailing.domain.confidence.impl.PositionAndTimePointWeigher;
|
||||
import com.sap.sailing.domain.racelog.RaceLog;
|
||||
import com.sap.sailing.domain.racelog.analyzing.impl.StartTimeFinder;
|
||||
import com.sap.sailing.domain.racelog.tracking.GPSFixStore;
|
||||
|
||||
+2
-2
@@ -19,10 +19,10 @@ import com.sap.sailing.domain.common.Position;
|
||||
import com.sap.sailing.domain.common.Speed;
|
||||
import com.sap.sailing.domain.common.SpeedWithBearing;
|
||||
import com.sap.sailing.domain.common.TimePoint;
|
||||
import com.sap.sailing.domain.confidence.ConfidenceFactory;
|
||||
import com.sap.sailing.domain.common.confidence.impl.PositionAndTimePointWeigher;
|
||||
import com.sap.sailing.domain.common.impl.MeterDistance;
|
||||
import com.sap.sailing.domain.confidence.ConfidenceBasedWindAverager;
|
||||
import com.sap.sailing.domain.confidence.ConfidenceFactory;
|
||||
import com.sap.sailing.domain.confidence.impl.PositionAndTimePointWeigher;
|
||||
import com.sap.sailing.domain.tracking.Wind;
|
||||
import com.sap.sailing.domain.tracking.WindListener;
|
||||
import com.sap.sailing.domain.tracking.WindTrack;
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
package com.sap.sailing.domain.tracking.impl;
|
||||
|
||||
import com.sap.sailing.domain.base.impl.HasConfidenceImpl;
|
||||
import com.sap.sailing.domain.common.confidence.impl.HasConfidenceImpl;
|
||||
import com.sap.sailing.domain.tracking.Wind;
|
||||
import com.sap.sailing.domain.tracking.WindWithConfidence;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user