mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-11-15 14:56:41 +00:00
Merge remote-tracking branch 'origin/master'
This commit is contained in:
commit
83ea8ba365
4 files changed
+30
-10
No files matched your search
+17
@@ -4,6 +4,23 @@
|
||||
<div id="mainContent">
|
||||
<h4 class="articleHeadline">What's New - Strategy Simulator</h4>
|
||||
<div class="innerContent">
|
||||
<h5 class="articleSubheadline">April 2015</h5>
|
||||
<ul class="bulletList">
|
||||
<li>Algorithm extensions to support extreme wind conditions (or long distance offshore races) where the wind may shift within the full 360 degree range during a leg of the race.</li>
|
||||
</ul>
|
||||
|
||||
<h5 class="articleSubheadline">March 2015</h5>
|
||||
<ul class="bulletList">
|
||||
<li>Support race board simulation during a live race</li>
|
||||
<li>Improved polar data mining including polynomial regression models for beat and jibe angles and speeds dependent on wind speed</li>
|
||||
</ul>
|
||||
|
||||
<h5 class="articleSubheadline">February 2015</h5>
|
||||
<ul class="bulletList">
|
||||
<li>Performance improvements due to parallelization of course computations</li>
|
||||
<li>Caching of race board simulation results for each leg of a race</li>
|
||||
</ul>
|
||||
|
||||
<h5 class="articleSubheadline">October 2014</h5>
|
||||
<ul class="bulletList">
|
||||
<li>Simulation is being integrated into the race board (see What's New in Sailing Analytics)</li>
|
||||
|
||||
+5
-5
@@ -395,13 +395,13 @@ public class SimulationServiceImpl implements SimulationService {
|
||||
polarDiagram = null;
|
||||
// TODO: raise a UI message, to inform user about missing polar data resulting in unability to simulate
|
||||
}
|
||||
double simuStepSeconds = startPosition.getDistance(endPosition).getNauticalMiles()
|
||||
/ ((PolarDiagramGPS) polarDiagram).getAvgSpeed() * 3600 / 100;
|
||||
Duration simuStep = new MillisecondsDurationImpl(Math.round(simuStepSeconds) * 1000);
|
||||
SimulationParameters simulationPars = new SimulationParametersImpl(course, startLine, polarDiagram, windField,
|
||||
simuStep, SailingSimulatorConstants.ModeEvent, true, true, legType);
|
||||
Map<PathType, Path> paths = null;
|
||||
if (polarDiagram != null) {
|
||||
double simuStepSeconds = startPosition.getDistance(endPosition).getNauticalMiles()
|
||||
/ ((PolarDiagramGPS) polarDiagram).getAvgSpeed() * 3600 / 100;
|
||||
Duration simuStep = new MillisecondsDurationImpl(Math.round(simuStepSeconds) * 1000);
|
||||
SimulationParameters simulationPars = new SimulationParametersImpl(course, startLine, polarDiagram,
|
||||
windField, simuStep, SailingSimulatorConstants.ModeEvent, true, true, legType);
|
||||
paths = getAllPathsEvenTimed(simulationPars, timeStep.asMillis());
|
||||
}
|
||||
// prepare simulator-results
|
||||
|
||||
+1
-1
@@ -97,7 +97,7 @@ public class PathGeneratorOpportunistEuclidian360 extends PathGeneratorBase {
|
||||
// time-step larger than turn-loss is required (this may be removed by
|
||||
// extended handling of turn-loss)
|
||||
if (this.parameters.getSimuStep().asMillis() > 2*turnLoss) {
|
||||
timeStep = this.parameters.getSimuStep().asMillis();
|
||||
timeStep = this.parameters.getSimuStep().asMillis();
|
||||
} else {
|
||||
timeStep = 2*turnLoss;
|
||||
}
|
||||
|
||||
+7
-4
@@ -44,7 +44,10 @@ public class PolarDiagramGPS extends PolarDiagramBase {
|
||||
windSpeeds.add(new KnotSpeedImpl(12.0));
|
||||
windSpeeds.add(new KnotSpeedImpl(14.0));
|
||||
windSpeeds.add(new KnotSpeedImpl(16.0));
|
||||
windSpeeds.add(new KnotSpeedImpl(18.0));
|
||||
windSpeeds.add(new KnotSpeedImpl(20.0));
|
||||
windSpeeds.add(new KnotSpeedImpl(22.0));
|
||||
windSpeeds.add(new KnotSpeedImpl(24.0));
|
||||
|
||||
// initialize beat-angles and -speeds
|
||||
SpeedWithBearing beatPort;
|
||||
@@ -100,10 +103,6 @@ public class PolarDiagramGPS extends PolarDiagramBase {
|
||||
jibeSpeed.add(null);
|
||||
}
|
||||
}
|
||||
|
||||
if ((beatAngles.size() <= 1)||(beatSpeed.size() <= 1)||(jibeAngles.size() <= 1)||(jibeSpeed.size() <= 1)) {
|
||||
throw new SparseSimulationDataException();
|
||||
}
|
||||
|
||||
NavigableMap<Speed, NavigableMap<Bearing, Speed>> mapSpeedTable = new TreeMap<Speed, NavigableMap<Bearing, Speed>>();
|
||||
NavigableMap<Speed, Bearing> mapBeatAngles = new TreeMap<Speed, Bearing>();
|
||||
@@ -149,6 +148,10 @@ public class PolarDiagramGPS extends PolarDiagramBase {
|
||||
}
|
||||
}
|
||||
|
||||
if ((mapBeatAngles.size() <= 1)||(mapBeatSOG.size() <= 1)||(mapJibeAngles.size() <= 1)||(mapJibeSOG.size() <= 1)) {
|
||||
throw new SparseSimulationDataException();
|
||||
}
|
||||
|
||||
super.speedTable = mapSpeedTable;
|
||||
super.beatAngles = mapBeatAngles;
|
||||
super.jibeAngles = mapJibeAngles;
|
||||
|
||||
Reference in new issue
Block a user