mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-17 01:31:01 +00:00
added an example of a roundtrip call for SailingSimulator
This commit is contained in:
1 parent
a227f15386
commit
8d9770c7c2
1 file changed
+44
-2
+44
-2
@@ -7,11 +7,14 @@ import com.sap.sailing.domain.base.impl.MillisecondsTimePoint;
|
||||
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.impl.DegreeBearingImpl;
|
||||
import com.sap.sailing.domain.common.impl.DegreePosition;
|
||||
import com.sap.sailing.simulator.Boundary;
|
||||
import com.sap.sailing.simulator.Path;
|
||||
import com.sap.sailing.simulator.PolarDiagram;
|
||||
import com.sap.sailing.simulator.SailingSimulator;
|
||||
import com.sap.sailing.simulator.SimulationParameters;
|
||||
import com.sap.sailing.simulator.TimedPosition;
|
||||
import com.sap.sailing.simulator.TimedPositionWithSpeed;
|
||||
import com.sap.sailing.simulator.WindField;
|
||||
|
||||
@@ -19,6 +22,10 @@ public class SailingSimulatorImpl implements SailingSimulator {
|
||||
|
||||
SimulationParameters simulationParameters;
|
||||
|
||||
public SailingSimulatorImpl(SimulationParameters params) {
|
||||
simulationParameters = params;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSimulationParameters(SimulationParameters params) {
|
||||
simulationParameters = params;
|
||||
@@ -31,6 +38,13 @@ public class SailingSimulatorImpl implements SailingSimulator {
|
||||
|
||||
@Override
|
||||
public Path getOptimumPath() {
|
||||
|
||||
//calls either createDummy or createHeuristic()
|
||||
|
||||
return createDummy();
|
||||
}
|
||||
|
||||
private Path createDummy() {
|
||||
Boundary boundary = simulationParameters.getBoundaries();
|
||||
WindField wf = simulationParameters.getWindField();
|
||||
PolarDiagram pd = simulationParameters.getBoatPolarDiagram();
|
||||
@@ -46,8 +60,36 @@ public class SailingSimulatorImpl implements SailingSimulator {
|
||||
lst.add(p1);
|
||||
lst.add(p2);
|
||||
|
||||
//algorithm goes here
|
||||
|
||||
return new PathImpl(lst);
|
||||
}
|
||||
|
||||
private Path createHeuristic() {
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
//SailingSimulator roundtrip
|
||||
public static void main(String args[]) {
|
||||
Position p1 = new DegreePosition(25.045792, -91.472168);
|
||||
Position p2 = new DegreePosition(26.076521,-89.681396);
|
||||
|
||||
Boundary b = new RectangularBoundary(p1, p2);
|
||||
|
||||
System.out.println(b.getCorners());
|
||||
|
||||
WindField wf = new WindFieldImpl(b, 20, 45);
|
||||
PolarDiagram pd = new PolarDiagramImpl(1);
|
||||
List<Position> course= new ArrayList<Position>();
|
||||
course.add(p1);
|
||||
course.add(p2);
|
||||
SimulationParameters sp = new SimulationParametersImpl(course, pd, wf);
|
||||
SailingSimulator solver = new SailingSimulatorImpl(sp);
|
||||
|
||||
Path pth = solver.getOptimumPath();
|
||||
|
||||
for(TimedPosition p : pth.getEvenTimedPoints(360000)) {
|
||||
System.out.println("Position: " + p.getPosition() + " Wind: " + wf.getWind(new TimedPositionWithSpeedSimple(p.getPosition())));
|
||||
}
|
||||
//the null in the Wind output is the timestamp - this Wind is time-invariant!
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user