mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-17 01:31:01 +00:00
Merge remote-tracking branch 'origin/simulator_merge_from_master' into simulator_merge_from_master
This commit is contained in:
commit
4c55ab33f7
5 files changed
+150
-251
No files matched your search
+3
-73
@@ -13,84 +13,14 @@ import com.sap.sailing.domain.common.Bearing;
|
||||
import com.sap.sailing.domain.common.Speed;
|
||||
import com.sap.sailing.domain.common.impl.DegreeBearingImpl;
|
||||
import com.sap.sailing.simulator.PolarDiagram;
|
||||
import com.sap.sailing.simulator.impl.PolarDiagram49;
|
||||
import com.sap.sailing.simulator.impl.PolarDiagramBase;
|
||||
|
||||
public class PolarDiagram49Test {
|
||||
|
||||
@Test
|
||||
public void testPolarDiagram49_1() throws IOException {
|
||||
|
||||
// read PolarDiagram from csv file
|
||||
/*
|
||||
String inputFile = "C:\\Users\\i059829\\Desktop\\new.csv";
|
||||
FileReader fr = new FileReader(inputFile);
|
||||
BufferedReader bfr = new BufferedReader(fr);
|
||||
|
||||
List<Speed> velocity = new ArrayList<Speed>();
|
||||
List<Bearing> beatAngles = new ArrayList<Bearing>();
|
||||
List<Speed> beatVMG = new ArrayList<Speed>();
|
||||
Map<Bearing, List<Speed>> speeds = new HashMap<Bearing, List<Speed>>();
|
||||
List<Speed> runVMG = new ArrayList<Speed>();
|
||||
List<Bearing> gybeAngles = new ArrayList<Bearing>();
|
||||
|
||||
String line = "";
|
||||
while (line != null) {
|
||||
line = bfr.readLine();
|
||||
String[] elements = line.split(",");
|
||||
elements[0] = elements[0].replace(" ", "");
|
||||
elements[0] = elements[0].toLowerCase();
|
||||
switch (elements[0]) {
|
||||
case "windvelocity" :
|
||||
for (int i = 1; i < elements.length; i++)
|
||||
velocity.add(new KnotSpeedImpl(new Double(elements[i])));
|
||||
break;
|
||||
case "beatangles" :
|
||||
for (int i = 1; i < elements.length; i++)
|
||||
beatAngles.add(new DegreeBearingImpl(new Double(elements[i])));
|
||||
break;
|
||||
case "beatvmg" :
|
||||
for (int i = 1; i < elements.length; i++)
|
||||
beatVMG.add(new KnotSpeedImpl(new Double(elements[i])));
|
||||
break;
|
||||
case "runvmg" :
|
||||
for (int i = 1; i < elements.length; i++)
|
||||
runVMG.add(new KnotSpeedImpl(new Double(elements[i])));
|
||||
break;
|
||||
case "gybeangles" :
|
||||
for (int i = 1; i < elements.length; i++)
|
||||
gybeAngles.add(new DegreeBearingImpl(new Double(elements[i])));
|
||||
break;
|
||||
default:
|
||||
List<Speed> sp = new ArrayList<Speed>();
|
||||
|
||||
for (int i = 1; i< elements.length; i++)
|
||||
sp.add(new KnotSpeedImpl(new Double(elements[i])));
|
||||
speeds.put(new DegreeBearingImpl(new Double(elements[0])), sp);
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
NavigableMap<Speed, NavigableMap<Bearing, Speed>> mapSpeedTable = new TreeMap<Speed, NavigableMap<Bearing, Speed>>();
|
||||
NavigableMap<Speed, Bearing> mapBeatAngles = new TreeMap<Speed, Bearing>();
|
||||
NavigableMap<Speed, Bearing> mapGybeAngles = new TreeMap<Speed, Bearing>();
|
||||
NavigableMap<Speed, Speed> mapBeatSOG = new TreeMap<Speed, Speed>();
|
||||
NavigableMap<Speed, Speed> mapGybeSOG = new TreeMap<Speed, Speed>();
|
||||
|
||||
for (int i = 0; i < velocity.size(); i++ ) {
|
||||
NavigableMap<Bearing, Speed> speedTableLine = new TreeMap<Bearing, Speed>();
|
||||
for (Entry<Bearing, List<Speed>> e : speeds.entrySet()) {
|
||||
speedTableLine.put(e.getKey(), e.getValue().get(i));
|
||||
}
|
||||
mapSpeedTable.put(velocity.get(i), speedTableLine);
|
||||
mapBeatAngles.put(velocity.get(i), beatAngles.get(i));
|
||||
mapGybeAngles.put(velocity.get(i), gybeAngles.get(i));
|
||||
mapBeatSOG.put(velocity.get(i), beatVMG.get(i));
|
||||
mapGybeSOG.put(velocity.get(i), runVMG.get(i));
|
||||
}
|
||||
|
||||
PolarDiagram polarDiagramFromFile = new PolarDiagram49(mapSpeedTable,mapBeatAngles,mapGybeAngles,mapBeatSOG,mapGybeSOG);
|
||||
*/
|
||||
PolarDiagram polarDiagram = new PolarDiagram49();
|
||||
PolarDiagram polarDiagram = new PolarDiagramBase();
|
||||
|
||||
NavigableMap<Speed, NavigableMap<Bearing, Speed>> table = polarDiagram.polarDiagramPlot(10.0);
|
||||
|
||||
@@ -126,5 +56,5 @@ public class PolarDiagram49Test {
|
||||
assertEquals("no test",1,1);
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
package com.sap.sailing.simulator.test;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import com.sap.sailing.simulator.PolarDiagram;
|
||||
import com.sap.sailing.simulator.impl.PolarDiagramCSV;
|
||||
|
||||
public class PolarDiagramCSVTest {
|
||||
|
||||
@Test
|
||||
public void test() throws IOException {
|
||||
PolarDiagram pd = new PolarDiagramCSV("C:\\Users\\i059829\\Desktop\\test.txt");
|
||||
|
||||
assertEquals("No test",1,1);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
+2
-2
@@ -16,7 +16,7 @@ import com.sap.sailing.simulator.PolarDiagram;
|
||||
import com.sap.sailing.simulator.SimulationParameters;
|
||||
import com.sap.sailing.simulator.WindControlParameters;
|
||||
import com.sap.sailing.simulator.WindFieldGenerator;
|
||||
import com.sap.sailing.simulator.impl.PolarDiagram49;
|
||||
import com.sap.sailing.simulator.impl.PolarDiagramBase;
|
||||
import com.sap.sailing.simulator.impl.RectangularBoundary;
|
||||
import com.sap.sailing.simulator.impl.SailingSimulatorImpl;
|
||||
import com.sap.sailing.simulator.impl.SimulationParametersImpl;
|
||||
@@ -33,7 +33,7 @@ public class SimulatorTest {
|
||||
List<Position> course = new LinkedList<Position>();
|
||||
course.add(start);
|
||||
course.add(end);
|
||||
PolarDiagram pd = new PolarDiagram49();//PolarDiagram49.CreateStandard49();
|
||||
PolarDiagram pd = new PolarDiagramBase();//PolarDiagram49.CreateStandard49();
|
||||
RectangularBoundary bd = new RectangularBoundary(start, end, 0.1);
|
||||
Position[][] positions = bd.extractGrid(10, 10);
|
||||
//RectangularBoundary new_bd = new RectangularBoundary(start, end, 0.1);
|
||||
|
||||
-176
@@ -1,176 +0,0 @@
|
||||
package com.sap.sailing.simulator.impl;
|
||||
|
||||
import java.util.NavigableMap;
|
||||
import java.util.TreeMap;
|
||||
|
||||
import com.sap.sailing.domain.base.impl.KnotSpeedImpl;
|
||||
import com.sap.sailing.domain.common.Bearing;
|
||||
import com.sap.sailing.domain.common.Speed;
|
||||
import com.sap.sailing.domain.common.impl.DegreeBearingImpl;
|
||||
|
||||
public class PolarDiagram49 extends PolarDiagramBase {
|
||||
|
||||
// this constructor creates an instance with a hard-coded set of values
|
||||
public PolarDiagram49() {
|
||||
|
||||
speedTable = new TreeMap<Speed, NavigableMap<Bearing, Speed>>();
|
||||
NavigableMap<Bearing, Speed> tableRow;
|
||||
|
||||
tableRow = new TreeMap<Bearing, Speed>(PolarDiagramBase.bearingComparator);
|
||||
tableRow.put(new DegreeBearingImpl(0), Speed.NULL);
|
||||
tableRow.put(new DegreeBearingImpl(52), Speed.NULL);
|
||||
tableRow.put(new DegreeBearingImpl(60), Speed.NULL);
|
||||
tableRow.put(new DegreeBearingImpl(75), Speed.NULL);
|
||||
tableRow.put(new DegreeBearingImpl(90), Speed.NULL);
|
||||
tableRow.put(new DegreeBearingImpl(110), Speed.NULL);
|
||||
tableRow.put(new DegreeBearingImpl(120), Speed.NULL);
|
||||
tableRow.put(new DegreeBearingImpl(135), Speed.NULL);
|
||||
tableRow.put(new DegreeBearingImpl(150), Speed.NULL);
|
||||
tableRow.put(new DegreeBearingImpl(180), Speed.NULL);
|
||||
speedTable.put(Speed.NULL, tableRow);
|
||||
|
||||
tableRow = new TreeMap<Bearing, Speed>(PolarDiagramBase.bearingComparator);
|
||||
tableRow.put(new DegreeBearingImpl(0), Speed.NULL);
|
||||
tableRow.put(new DegreeBearingImpl(52), new KnotSpeedImpl(6.57));
|
||||
tableRow.put(new DegreeBearingImpl(60), new KnotSpeedImpl(7.01));
|
||||
tableRow.put(new DegreeBearingImpl(75), new KnotSpeedImpl(7.36));
|
||||
tableRow.put(new DegreeBearingImpl(90), new KnotSpeedImpl(7.31));
|
||||
tableRow.put(new DegreeBearingImpl(110), new KnotSpeedImpl(6.73));
|
||||
tableRow.put(new DegreeBearingImpl(120), new KnotSpeedImpl(6.39));
|
||||
tableRow.put(new DegreeBearingImpl(135), new KnotSpeedImpl(5.58));
|
||||
tableRow.put(new DegreeBearingImpl(150), new KnotSpeedImpl(4.62));
|
||||
tableRow.put(new DegreeBearingImpl(180), new KnotSpeedImpl(2.5));
|
||||
speedTable.put(new KnotSpeedImpl(6), tableRow);
|
||||
|
||||
tableRow = new TreeMap<Bearing, Speed>(PolarDiagramBase.bearingComparator);
|
||||
tableRow.put(new DegreeBearingImpl(0), Speed.NULL);
|
||||
tableRow.put(new DegreeBearingImpl(52), new KnotSpeedImpl(7.78));
|
||||
tableRow.put(new DegreeBearingImpl(60), new KnotSpeedImpl(8.13));
|
||||
tableRow.put(new DegreeBearingImpl(75), new KnotSpeedImpl(8.38));
|
||||
tableRow.put(new DegreeBearingImpl(90), new KnotSpeedImpl(8.31));
|
||||
tableRow.put(new DegreeBearingImpl(110), new KnotSpeedImpl(8.04));
|
||||
tableRow.put(new DegreeBearingImpl(120), new KnotSpeedImpl(7.79));
|
||||
tableRow.put(new DegreeBearingImpl(135), new KnotSpeedImpl(7));
|
||||
tableRow.put(new DegreeBearingImpl(150), new KnotSpeedImpl(5.85));
|
||||
tableRow.put(new DegreeBearingImpl(180), new KnotSpeedImpl(3));
|
||||
speedTable.put(new KnotSpeedImpl(8), tableRow);
|
||||
|
||||
tableRow = new TreeMap<Bearing, Speed>(PolarDiagramBase.bearingComparator);
|
||||
tableRow.put(new DegreeBearingImpl(0), Speed.NULL);
|
||||
tableRow.put(new DegreeBearingImpl(52), new KnotSpeedImpl(8.34));
|
||||
tableRow.put(new DegreeBearingImpl(60), new KnotSpeedImpl(8.66));
|
||||
tableRow.put(new DegreeBearingImpl(75), new KnotSpeedImpl(9.01));
|
||||
tableRow.put(new DegreeBearingImpl(90), new KnotSpeedImpl(8.95));
|
||||
tableRow.put(new DegreeBearingImpl(110), new KnotSpeedImpl(8.87));
|
||||
tableRow.put(new DegreeBearingImpl(120), new KnotSpeedImpl(8.64));
|
||||
tableRow.put(new DegreeBearingImpl(135), new KnotSpeedImpl(8.02));
|
||||
tableRow.put(new DegreeBearingImpl(150), new KnotSpeedImpl(6.97));
|
||||
tableRow.put(new DegreeBearingImpl(180), new KnotSpeedImpl(4));
|
||||
speedTable.put(new KnotSpeedImpl(10), tableRow);
|
||||
|
||||
tableRow = new TreeMap<Bearing, Speed>(PolarDiagramBase.bearingComparator);
|
||||
tableRow.put(new DegreeBearingImpl(0), Speed.NULL);
|
||||
tableRow.put(new DegreeBearingImpl(52), new KnotSpeedImpl(8.64));
|
||||
tableRow.put(new DegreeBearingImpl(60), new KnotSpeedImpl(8.95));
|
||||
tableRow.put(new DegreeBearingImpl(75), new KnotSpeedImpl(9.39));
|
||||
tableRow.put(new DegreeBearingImpl(90), new KnotSpeedImpl(9.5));
|
||||
tableRow.put(new DegreeBearingImpl(110), new KnotSpeedImpl(9.54));
|
||||
tableRow.put(new DegreeBearingImpl(120), new KnotSpeedImpl(9.3));
|
||||
tableRow.put(new DegreeBearingImpl(135), new KnotSpeedImpl(8.71));
|
||||
tableRow.put(new DegreeBearingImpl(150), new KnotSpeedImpl(7.86));
|
||||
tableRow.put(new DegreeBearingImpl(180), new KnotSpeedImpl(5));
|
||||
speedTable.put(new KnotSpeedImpl(12), tableRow);
|
||||
|
||||
tableRow = new TreeMap<Bearing, Speed>(PolarDiagramBase.bearingComparator);
|
||||
tableRow.put(new DegreeBearingImpl(0), Speed.NULL);
|
||||
tableRow.put(new DegreeBearingImpl(52), new KnotSpeedImpl(8.84));
|
||||
tableRow.put(new DegreeBearingImpl(60), new KnotSpeedImpl(9.15));
|
||||
tableRow.put(new DegreeBearingImpl(75), new KnotSpeedImpl(9.62));
|
||||
tableRow.put(new DegreeBearingImpl(90), new KnotSpeedImpl(9.98));
|
||||
tableRow.put(new DegreeBearingImpl(110), new KnotSpeedImpl(10.08));
|
||||
tableRow.put(new DegreeBearingImpl(120), new KnotSpeedImpl(9.95));
|
||||
tableRow.put(new DegreeBearingImpl(135), new KnotSpeedImpl(9.29));
|
||||
tableRow.put(new DegreeBearingImpl(150), new KnotSpeedImpl(8.57));
|
||||
tableRow.put(new DegreeBearingImpl(180), new KnotSpeedImpl(6));
|
||||
speedTable.put(new KnotSpeedImpl(14), tableRow);
|
||||
|
||||
tableRow = new TreeMap<Bearing, Speed>(PolarDiagramBase.bearingComparator);
|
||||
tableRow.put(new DegreeBearingImpl(0), Speed.NULL);
|
||||
tableRow.put(new DegreeBearingImpl(52), new KnotSpeedImpl(8.95));
|
||||
tableRow.put(new DegreeBearingImpl(60), new KnotSpeedImpl(9.28));
|
||||
tableRow.put(new DegreeBearingImpl(75), new KnotSpeedImpl(9.8));
|
||||
tableRow.put(new DegreeBearingImpl(90), new KnotSpeedImpl(10.28));
|
||||
tableRow.put(new DegreeBearingImpl(110), new KnotSpeedImpl(10.44));
|
||||
tableRow.put(new DegreeBearingImpl(120), new KnotSpeedImpl(10.72));
|
||||
tableRow.put(new DegreeBearingImpl(135), new KnotSpeedImpl(9.88));
|
||||
tableRow.put(new DegreeBearingImpl(150), new KnotSpeedImpl(9.13));
|
||||
tableRow.put(new DegreeBearingImpl(180), new KnotSpeedImpl(7));
|
||||
speedTable.put(new KnotSpeedImpl(16), tableRow);
|
||||
|
||||
tableRow = new TreeMap<Bearing, Speed>(PolarDiagramBase.bearingComparator);
|
||||
tableRow.put(new DegreeBearingImpl(0), Speed.NULL);
|
||||
tableRow.put(new DegreeBearingImpl(52), new KnotSpeedImpl(8.91));
|
||||
tableRow.put(new DegreeBearingImpl(60), new KnotSpeedImpl(9.34));
|
||||
tableRow.put(new DegreeBearingImpl(75), new KnotSpeedImpl(10.01));
|
||||
tableRow.put(new DegreeBearingImpl(90), new KnotSpeedImpl(10.67));
|
||||
tableRow.put(new DegreeBearingImpl(110), new KnotSpeedImpl(11.17));
|
||||
tableRow.put(new DegreeBearingImpl(120), new KnotSpeedImpl(11.81));
|
||||
tableRow.put(new DegreeBearingImpl(135), new KnotSpeedImpl(11.47));
|
||||
tableRow.put(new DegreeBearingImpl(150), new KnotSpeedImpl(10.26));
|
||||
tableRow.put(new DegreeBearingImpl(180), new KnotSpeedImpl(7.5));
|
||||
speedTable.put(new KnotSpeedImpl(20), tableRow);
|
||||
|
||||
beatAngles = new TreeMap<Speed, Bearing>();
|
||||
beatAngles.put(new KnotSpeedImpl(0), new DegreeBearingImpl(45));
|
||||
beatAngles.put(new KnotSpeedImpl(6), new DegreeBearingImpl(43.4));
|
||||
beatAngles.put(new KnotSpeedImpl(8), new DegreeBearingImpl(41.8));
|
||||
beatAngles.put(new KnotSpeedImpl(10), new DegreeBearingImpl(38.9));
|
||||
beatAngles.put(new KnotSpeedImpl(12), new DegreeBearingImpl(37.5));
|
||||
beatAngles.put(new KnotSpeedImpl(14), new DegreeBearingImpl(36.8));
|
||||
beatAngles.put(new KnotSpeedImpl(16), new DegreeBearingImpl(36.3));
|
||||
beatAngles.put(new KnotSpeedImpl(20), new DegreeBearingImpl(36.9));
|
||||
|
||||
double beatScale = 1.1;
|
||||
beatSOG = new TreeMap<Speed, Speed>();
|
||||
beatSOG.put(new KnotSpeedImpl(0), new KnotSpeedImpl(0));
|
||||
beatSOG.put(new KnotSpeedImpl(6), new KnotSpeedImpl(5.85 * beatScale));
|
||||
beatSOG.put(new KnotSpeedImpl(8), new KnotSpeedImpl(6.98 * beatScale));
|
||||
beatSOG.put(new KnotSpeedImpl(10), new KnotSpeedImpl(7.39 * beatScale));
|
||||
beatSOG.put(new KnotSpeedImpl(12), new KnotSpeedImpl(7.68 * beatScale));
|
||||
beatSOG.put(new KnotSpeedImpl(14), new KnotSpeedImpl(7.89 * beatScale));
|
||||
beatSOG.put(new KnotSpeedImpl(16), new KnotSpeedImpl(7.92 * beatScale));
|
||||
beatSOG.put(new KnotSpeedImpl(20), new KnotSpeedImpl(7.94 * beatScale));
|
||||
|
||||
gybeAngles = new TreeMap<Speed, Bearing>();
|
||||
gybeAngles.put(new KnotSpeedImpl(0), new DegreeBearingImpl(120));
|
||||
gybeAngles.put(new KnotSpeedImpl(6), new DegreeBearingImpl(140));
|
||||
gybeAngles.put(new KnotSpeedImpl(8), new DegreeBearingImpl(142.6));
|
||||
gybeAngles.put(new KnotSpeedImpl(10), new DegreeBearingImpl(148.4));
|
||||
gybeAngles.put(new KnotSpeedImpl(12), new DegreeBearingImpl(154.4));
|
||||
gybeAngles.put(new KnotSpeedImpl(14), new DegreeBearingImpl(162.5));
|
||||
gybeAngles.put(new KnotSpeedImpl(16), new DegreeBearingImpl(169.6));
|
||||
gybeAngles.put(new KnotSpeedImpl(20), new DegreeBearingImpl(172.3));
|
||||
|
||||
gybeSOG = new TreeMap<Speed, Speed>();
|
||||
gybeSOG.put(new KnotSpeedImpl(0), new KnotSpeedImpl(0));
|
||||
gybeSOG.put(new KnotSpeedImpl(6), new KnotSpeedImpl(5.22));
|
||||
gybeSOG.put(new KnotSpeedImpl(8), new KnotSpeedImpl(6.38));
|
||||
gybeSOG.put(new KnotSpeedImpl(10), new KnotSpeedImpl(7.09));
|
||||
gybeSOG.put(new KnotSpeedImpl(12), new KnotSpeedImpl(7.6));
|
||||
gybeSOG.put(new KnotSpeedImpl(14), new KnotSpeedImpl(7.97));
|
||||
gybeSOG.put(new KnotSpeedImpl(16), new KnotSpeedImpl(8.39));
|
||||
gybeSOG.put(new KnotSpeedImpl(20), new KnotSpeedImpl(9.38));
|
||||
|
||||
for (Speed s : speedTable.keySet()) {
|
||||
|
||||
if (beatAngles.containsKey(s) && !speedTable.get(s).containsKey(beatAngles.get(s)))
|
||||
speedTable.get(s).put(beatAngles.get(s), beatSOG.get(s));
|
||||
|
||||
if (gybeAngles.containsKey(s) && !speedTable.get(s).containsKey(gybeAngles.get(s)))
|
||||
speedTable.get(s).put(gybeAngles.get(s), gybeSOG.get(s));
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
+123
@@ -0,0 +1,123 @@
|
||||
package com.sap.sailing.simulator.impl;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.FileReader;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.NavigableMap;
|
||||
import java.util.TreeMap;
|
||||
|
||||
import com.sap.sailing.domain.base.impl.KnotSpeedImpl;
|
||||
import com.sap.sailing.domain.base.impl.KnotSpeedWithBearingImpl;
|
||||
import com.sap.sailing.domain.common.Bearing;
|
||||
import com.sap.sailing.domain.common.Speed;
|
||||
import com.sap.sailing.domain.common.impl.DegreeBearingImpl;
|
||||
|
||||
public class PolarDiagramCSV extends PolarDiagramBase {
|
||||
|
||||
public PolarDiagramCSV(String inputFile) throws IOException {
|
||||
|
||||
FileReader fr = new FileReader(inputFile);
|
||||
BufferedReader bfr = new BufferedReader(fr);
|
||||
|
||||
List<Speed> velocity = new ArrayList<Speed>();
|
||||
List<Bearing> beatAngles = new ArrayList<Bearing>();
|
||||
List<Speed> beatVMG = new ArrayList<Speed>();
|
||||
Map<Bearing, List<Speed>> speeds = new HashMap<Bearing, List<Speed>>();
|
||||
List<Speed> runVMG = new ArrayList<Speed>();
|
||||
List<Bearing> gybeAngles = new ArrayList<Bearing>();
|
||||
|
||||
String line = "";
|
||||
while (true) {
|
||||
line = bfr.readLine();
|
||||
if (line == null)
|
||||
break;
|
||||
// System.out.println(line);
|
||||
String[] elements = line.split(",");
|
||||
elements[0] = elements[0].replace(" ", "");
|
||||
elements[0] = elements[0].toLowerCase();
|
||||
switch (elements[0]) {
|
||||
case "windvelocity":
|
||||
for (int i = 1; i < elements.length; i++)
|
||||
velocity.add(new KnotSpeedImpl(new Double(elements[i])));
|
||||
break;
|
||||
case "beatangles":
|
||||
for (int i = 1; i < elements.length; i++)
|
||||
beatAngles.add(new DegreeBearingImpl(
|
||||
new Double(elements[i])));
|
||||
break;
|
||||
case "beatvmg":
|
||||
for (int i = 1; i < elements.length; i++)
|
||||
beatVMG.add(new KnotSpeedImpl(new Double(elements[i])));
|
||||
break;
|
||||
case "runvmg":
|
||||
for (int i = 1; i < elements.length; i++)
|
||||
runVMG.add(new KnotSpeedImpl(new Double(elements[i])));
|
||||
break;
|
||||
case "gybeangles":
|
||||
for (int i = 1; i < elements.length; i++)
|
||||
gybeAngles.add(new DegreeBearingImpl(
|
||||
new Double(elements[i])));
|
||||
break;
|
||||
default:
|
||||
List<Speed> sp = new ArrayList<Speed>();
|
||||
|
||||
for (int i = 1; i < elements.length; i++)
|
||||
sp.add(new KnotSpeedImpl(new Double(elements[i])));
|
||||
speeds.put(new DegreeBearingImpl(new Double(elements[0])), sp);
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
bfr.close();
|
||||
|
||||
NavigableMap<Speed, NavigableMap<Bearing, Speed>> mapSpeedTable = new TreeMap<Speed, NavigableMap<Bearing, Speed>>();
|
||||
NavigableMap<Speed, Bearing> mapBeatAngles = new TreeMap<Speed, Bearing>();
|
||||
NavigableMap<Speed, Bearing> mapGybeAngles = new TreeMap<Speed, Bearing>();
|
||||
NavigableMap<Speed, Speed> mapBeatSOG = new TreeMap<Speed, Speed>();
|
||||
NavigableMap<Speed, Speed> mapGybeSOG = new TreeMap<Speed, Speed>();
|
||||
|
||||
for (int i = 0; i < velocity.size(); i++) {
|
||||
NavigableMap<Bearing, Speed> speedTableLine = new TreeMap<Bearing, Speed>(
|
||||
bearingComparator);
|
||||
for (Entry<Bearing, List<Speed>> e : speeds.entrySet()) {
|
||||
speedTableLine.put(e.getKey(), e.getValue().get(i));
|
||||
}
|
||||
mapSpeedTable.put(velocity.get(i), speedTableLine);
|
||||
mapBeatAngles.put(velocity.get(i), beatAngles.get(i));
|
||||
mapGybeAngles.put(velocity.get(i), gybeAngles.get(i));
|
||||
mapBeatSOG.put(velocity.get(i), beatVMG.get(i));
|
||||
mapGybeSOG.put(velocity.get(i), runVMG.get(i));
|
||||
}
|
||||
|
||||
setWind(new KnotSpeedWithBearingImpl(0, new DegreeBearingImpl(180)));
|
||||
|
||||
super.speedTable = mapSpeedTable;
|
||||
super.beatAngles = mapBeatAngles;
|
||||
super.gybeAngles = mapGybeAngles;
|
||||
super.beatSOG = mapBeatSOG;
|
||||
super.gybeSOG = mapGybeSOG;
|
||||
|
||||
for (Speed s : super.speedTable.keySet()) {
|
||||
|
||||
if (super.beatAngles.containsKey(s)
|
||||
&& !super.speedTable.get(s).containsKey(
|
||||
super.beatAngles.get(s)))
|
||||
super.speedTable.get(s).put(super.beatAngles.get(s),
|
||||
super.beatSOG.get(s));
|
||||
|
||||
if (super.gybeAngles.containsKey(s)
|
||||
&& !super.speedTable.get(s).containsKey(
|
||||
super.gybeAngles.get(s)))
|
||||
super.speedTable.get(s).put(super.gybeAngles.get(s),
|
||||
super.gybeSOG.get(s));
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user