mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-09-30 17:36:40 +00:00
deal with null positions in wind averaging and confidence handling
This commit is contained in:
1 parent
4039269568
commit
a34348b090
2 files changed
+12
-5
No files matched your search
+7
-1
@@ -26,7 +26,13 @@ public class ScalablePosition implements ScalableValue<ScalablePosition, Positio
|
||||
|
||||
@Override
|
||||
public ScalablePosition add(ScalableValue<ScalablePosition, Position> t) {
|
||||
return new ScalablePosition(x+t.getValue().x, y+t.getValue().y, z+t.getValue().z);
|
||||
ScalablePosition result;
|
||||
if (t == null) {
|
||||
result = this;
|
||||
} else {
|
||||
result = new ScalablePosition(x+t.getValue().x, y+t.getValue().y, z+t.getValue().z);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
+5
-4
@@ -19,7 +19,7 @@ public class ScalableWind implements ScalableValue<ScalableWind, Wind> {
|
||||
private final ScalableSpeedWithBearing scalableSpeedWithBearing;
|
||||
|
||||
public ScalableWind(Wind wind) {
|
||||
this.scalablePosition = new ScalablePosition(wind.getPosition());
|
||||
this.scalablePosition = wind.getPosition() == null ? null : new ScalablePosition(wind.getPosition());
|
||||
this.scaledTimePointSumInMilliseconds = wind.getTimePoint().asMillis();
|
||||
this.scalableSpeedWithBearing = new ScalableSpeedWithBearing(wind);
|
||||
}
|
||||
@@ -34,19 +34,20 @@ public class ScalableWind implements ScalableValue<ScalableWind, Wind> {
|
||||
|
||||
@Override
|
||||
public ScalableWind multiply(double factor) {
|
||||
return new ScalableWind(scalablePosition.multiply(factor), factor*scaledTimePointSumInMilliseconds, scalableSpeedWithBearing.multiply(factor));
|
||||
return new ScalableWind(scalablePosition == null ? null : scalablePosition.multiply(factor),
|
||||
factor * scaledTimePointSumInMilliseconds, scalableSpeedWithBearing.multiply(factor));
|
||||
}
|
||||
|
||||
@Override
|
||||
public ScalableWind add(ScalableValue<ScalableWind, Wind> t) {
|
||||
return new ScalableWind(scalablePosition.add(t.getValue().scalablePosition),
|
||||
return new ScalableWind(scalablePosition == null ? t.getValue().scalablePosition : scalablePosition.add(t.getValue().scalablePosition),
|
||||
scaledTimePointSumInMilliseconds+t.getValue().scaledTimePointSumInMilliseconds,
|
||||
scalableSpeedWithBearing.add(t.getValue().scalableSpeedWithBearing));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Wind divide(double divisor) {
|
||||
return new WindImpl(scalablePosition.divide(divisor), new MillisecondsTimePoint(
|
||||
return new WindImpl(scalablePosition == null ? null : scalablePosition.divide(divisor), new MillisecondsTimePoint(
|
||||
(long) (scaledTimePointSumInMilliseconds / divisor)), scalableSpeedWithBearing.divide(divisor));
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user