add boat-class to polar-diagram to distinguish different turn-losses (in a switch-statement, to be replaced by wind-speed-dependent fit-function determined from polar-data-mining);

This commit is contained in:
Christopher Ronnewinkel (D036654) committed 2015-03-11 09:33:06 +01:00
1 parent fdc503d53b
commit 739047f858
13 files changed
+41 -5

No files matched your search

@@ -1,3 +1,4 @@
49er
wind speed,0,6,8,10,12,14,16,20
beat angles,45,43.4,41.8,38.9,37.5,36.8,36.3,36.9
beat sog,0,6.435,7.678,8.129,8.448,8.679,8.712,8.734
1 wind speed 49er 0 6 8 10 12 14 16 20
1 49er
2 wind speed wind speed,0,6,8,10,12,14,16,20 0 6 8 10 12 14 16 20
3 beat angles beat angles,45,43.4,41.8,38.9,37.5,36.8,36.3,36.9 45 43.4 41.8 38.9 37.5 36.8 36.3 36.9
4 beat sog beat sog,0,6.435,7.678,8.129,8.448,8.679,8.712,8.734 0 6.435 7.678 8.129 8.448 8.679 8.712 8.734
@@ -1,3 +1,4 @@
49er
wind speed,0,6,9,12,25
beat angles,43,50.24,49.4,47.35,48.01
beat sog,0,7.53,9.39,11.96,13.08
1 wind speed 49er 0 6 9 12 25
1 49er
2 wind speed wind speed,0,6,9,12,25 0 6 9 12 25
3 beat angles beat angles,43,50.24,49.4,47.35,48.01 43 50.24 49.4 47.35 48.01
4 beat sog beat sog,0,7.53,9.39,11.96,13.08 0 7.53 9.39 11.96 13.08
@@ -1,3 +1,4 @@
49er
wind speed,0,6,8,10,12,14,16,20
beat angles,45,43.4,41.8,38.9,37.5,36.8,36.3,36.9
beat sog,0,6.435,7.678,8.129,8.448,8.679,8.712,8.734
1 wind speed 49er 0 6 8 10 12 14 16 20
1 49er
2 wind speed wind speed,0,6,8,10,12,14,16,20 0 6 8 10 12 14 16 20
3 beat angles beat angles,45,43.4,41.8,38.9,37.5,36.8,36.3,36.9 45 43.4 41.8 38.9 37.5 36.8 36.3 36.9
4 beat sog beat sog,0,6.435,7.678,8.129,8.448,8.679,8.712,8.734 0 6.435 7.678 8.129 8.448 8.679 8.712 8.734
@@ -1,3 +1,4 @@
49er
wind speed,0,6,8,10,12,14,16,20
beat angles,43,43,43,43,44,45,45.6,47
beat sog,0,4.5,6.25,8,8.5,9,9.3,10
1 wind speed 49er 0 6 8 10 12 14 16 20
1 49er
2 wind speed wind speed,0,6,8,10,12,14,16,20 0 6 8 10 12 14 16 20
3 beat angles beat angles,43,43,43,43,44,45,45.6,47 43 43 43 43 44 45 45.6 47
4 beat sog beat sog,0,4.5,6.25,8,8.5,9,9.3,10 0 4.5 6.25 8 8.5 9 9.3 10
@@ -1,3 +1,4 @@
5O5
wind speed,0,6,8,10,12,14,16,20
beat angles,44,44,46.5,50,52,54,55,56
beat sog,0,5,5.3,5.6,6,6.5,7,7
1 wind speed 5O5 0 6 8 10 12 14 16 20
1 5O5
2 wind speed wind speed,0,6,8,10,12,14,16,20 0 6 8 10 12 14 16 20
3 beat angles beat angles,44,44,46.5,50,52,54,55,56 44 44 46.5 50 52 54 55 56
4 beat sog beat sog,0,5,5.3,5.6,6,6.5,7,7 0 5 5.3 5.6 6 6.5 7 7
@@ -3,6 +3,7 @@ package com.sap.sailing.simulator.impl;
import java.util.NavigableMap;
import java.util.TreeMap;
import com.sap.sailing.domain.base.DomainFactory;
import com.sap.sailing.domain.common.Bearing;
import com.sap.sailing.domain.common.Speed;
import com.sap.sailing.domain.common.impl.DegreeBearingImpl;
@@ -14,6 +15,7 @@ public class PolarDiagram49 extends PolarDiagramBase {
// this constructor creates an instance with a hard-coded set of values
public PolarDiagram49() {
boatClass = DomainFactory.INSTANCE.getOrCreateBoatClass("49er", /* typicallyStartsUpwind */true);
speedTable = new TreeMap<Speed, NavigableMap<Bearing, Speed>>();
NavigableMap<Bearing, Speed> tableRow;
@@ -3,6 +3,7 @@ package com.sap.sailing.simulator.impl;
import java.util.NavigableMap;
import java.util.TreeMap;
import com.sap.sailing.domain.base.DomainFactory;
import com.sap.sailing.domain.common.Bearing;
import com.sap.sailing.domain.common.Speed;
import com.sap.sailing.domain.common.impl.DegreeBearingImpl;
@@ -15,6 +16,7 @@ public class PolarDiagram49Bethwaite extends PolarDiagramBase {
// this constructor creates an instance with a hard-coded set of values
public PolarDiagram49Bethwaite() {
boatClass = DomainFactory.INSTANCE.getOrCreateBoatClass("49er", /* typicallyStartsUpwind */true);
beatAngles = new TreeMap<Speed, Bearing>();
beatAngles.put(new KnotSpeedImpl(0), new DegreeBearingImpl(43.0));
beatAngles.put(new KnotSpeedImpl(6), new DegreeBearingImpl(50.24));
@@ -3,6 +3,7 @@ package com.sap.sailing.simulator.impl;
import java.util.NavigableMap;
import java.util.TreeMap;
import com.sap.sailing.domain.base.DomainFactory;
import com.sap.sailing.domain.common.Bearing;
import com.sap.sailing.domain.common.Speed;
import com.sap.sailing.domain.common.impl.DegreeBearingImpl;
@@ -15,6 +16,7 @@ public class PolarDiagram49ORC extends PolarDiagramBase {
// this constructor creates an instance with a hard-coded set of values
public PolarDiagram49ORC() {
boatClass = DomainFactory.INSTANCE.getOrCreateBoatClass("49er", /* typicallyStartsUpwind */true);
speedTable = new TreeMap<Speed, NavigableMap<Bearing, Speed>>();
NavigableMap<Bearing, Speed> tableRow;
@@ -3,6 +3,7 @@ package com.sap.sailing.simulator.impl;
import java.util.NavigableMap;
import java.util.TreeMap;
import com.sap.sailing.domain.base.DomainFactory;
import com.sap.sailing.domain.common.Bearing;
import com.sap.sailing.domain.common.Speed;
import com.sap.sailing.domain.common.impl.DegreeBearingImpl;
@@ -15,6 +16,8 @@ public class PolarDiagram49STG extends PolarDiagramBase {
// this constructor creates an instance with a hard-coded set of values
public PolarDiagram49STG() {
boatClass = DomainFactory.INSTANCE.getOrCreateBoatClass("49er", /* typicallyStartsUpwind */true);
speedTable = new TreeMap<Speed, NavigableMap<Bearing, Speed>>();
NavigableMap<Bearing, Speed> tableRow;
@@ -3,6 +3,7 @@ package com.sap.sailing.simulator.impl;
import java.util.NavigableMap;
import java.util.TreeMap;
import com.sap.sailing.domain.base.DomainFactory;
import com.sap.sailing.domain.common.Bearing;
import com.sap.sailing.domain.common.Speed;
import com.sap.sailing.domain.common.impl.DegreeBearingImpl;
@@ -14,6 +15,9 @@ public class PolarDiagram505STG extends PolarDiagramBase {
// this constructor creates an instance with a hard-coded set of values
public PolarDiagram505STG() {
boatClass = DomainFactory.INSTANCE.getOrCreateBoatClass("505", /* typicallyStartsUpwind */true);
speedTable = new TreeMap<Speed, NavigableMap<Bearing, Speed>>();
NavigableMap<Bearing, Speed> tableRow;
@@ -11,7 +11,9 @@ import java.util.Set;
import java.util.TreeMap;
import java.util.TreeSet;
import com.sap.sailing.domain.base.BoatClass;
import com.sap.sailing.domain.common.Bearing;
import com.sap.sailing.domain.common.BoatClassMasterdata;
import com.sap.sailing.domain.common.Speed;
import com.sap.sailing.domain.common.SpeedWithBearing;
import com.sap.sailing.domain.common.impl.DegreeBearingImpl;
@@ -23,6 +25,7 @@ public class PolarDiagramBase implements PolarDiagram, Serializable {
private static final long serialVersionUID = 7465253094290674423L;
protected BoatClass boatClass;
// the current speed and direction of the wind
protected SpeedWithBearing windprev = new KnotSpeedWithBearingImpl(6, new DegreeBearingImpl(180));
protected SpeedWithBearing wind = new KnotSpeedWithBearingImpl(6, new DegreeBearingImpl(180));
@@ -88,10 +91,10 @@ public class PolarDiagramBase implements PolarDiagram, Serializable {
// this constructor creates an instance with a hard-coded set of values
public PolarDiagramBase() {
// do nothing
}
public PolarDiagramBase(PolarDiagramBase pd) {
boatClass = pd.boatClass;
speedTable = pd.speedTable;
beatAngles = pd.beatAngles;
beatSOG = pd.beatSOG;
@@ -107,6 +110,7 @@ public class PolarDiagramBase implements PolarDiagram, Serializable {
wind = new KnotSpeedWithBearingImpl(0, new DegreeBearingImpl(180));
boatClass = null;
speedTable = speeds;
beatAngles = beats;
jibeAngles = jibes;
@@ -806,8 +810,16 @@ public class PolarDiagramBase implements PolarDiagram, Serializable {
@Override
public long getTurnLoss() {
// TODO Auto-generated method stub
return 4000;
// TODO: retrieve values from polar data mining
int turnLoss;
if (this.boatClass.getDisplayName().equals(BoatClassMasterdata.EXTREME_40.getDisplayName())) {
turnLoss = 1000;
} else if (this.boatClass.getDisplayName().equals(BoatClassMasterdata._5O5.getDisplayName())) {
turnLoss = 5000;
} else {
turnLoss = 4000; // default value
}
return turnLoss;
}
@Override
@@ -12,6 +12,7 @@ import java.util.Map.Entry;
import java.util.NavigableMap;
import java.util.TreeMap;
import com.sap.sailing.domain.base.DomainFactory;
import com.sap.sailing.domain.common.Bearing;
import com.sap.sailing.domain.common.Speed;
import com.sap.sailing.domain.common.impl.DegreeBearingImpl;
@@ -35,13 +36,19 @@ public class PolarDiagramCSV extends PolarDiagramBase {
List<Bearing> jibeAngles = new ArrayList<Bearing>();
String line = "";
line = bfr.readLine();
if (line != null) {
this.boatClass = DomainFactory.INSTANCE.getOrCreateBoatClass(line, /* typicallyStartsUpwind */true);
}
String[] elements = null;
while (true) {
while (line != null) {
line = bfr.readLine();
if (line == null) {
break;
}
elements = line.split(",");
elements[0] = elements[0].replace(" ", "");
elements[0] = elements[0].toLowerCase();
@@ -22,7 +22,6 @@ import com.sap.sailing.polars.regression.NotEnoughDataHasBeenAddedException;
public class PolarDiagramGPS extends PolarDiagramBase {
private static final long serialVersionUID = -9219705955440602679L;
private final BoatClass boatClass;
private final PolarDataService polarData;
private double avgSpeed;