mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-02 10:23:51 +00:00
Merge remote-tracking branch 'origin/simulator_dev' into simulator_dev
This commit is contained in:
commit
7c7e423ca6
4 files changed
+163
-52
No files matched your search
+46
-41
@@ -623,51 +623,56 @@ public class SimulatorMainPanel extends SplitLayoutPanel {
|
||||
|
||||
Label legLabel = new Label(this.stringMessages.legLabel());
|
||||
legLabel.getElement().setClassName("boatClassLabel");
|
||||
HorizontalPanel hp2 = new HorizontalPanel();
|
||||
hp2.getElement().setClassName("boatClassPanel");
|
||||
hp2.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_LEFT);
|
||||
hp2.add(legLabel);
|
||||
|
||||
this.simulatorSvc.getLegs(3, new AsyncCallback<LegsNamesDTO>() {
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable error) {
|
||||
errorReporter.reportError("Failed to read legs information!\r\n" + error.getMessage());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(LegsNamesDTO response) {
|
||||
|
||||
String notificationMessage = response.notificationMessage;
|
||||
if (notificationMessage != "" && notificationMessage.length() != 0 && warningAlreadyShown == false) {
|
||||
errorReporter.reportNotification(notificationMessage);
|
||||
warningAlreadyShown = true;
|
||||
}
|
||||
|
||||
for (String legName : response.legsNames) {
|
||||
legSelector.addItem(legName);
|
||||
}
|
||||
|
||||
legSelector.setItemSelected(0, true); // first leg
|
||||
loadLegData(0);
|
||||
}
|
||||
});
|
||||
|
||||
this.legSelector.addChangeHandler(new ChangeHandler() {
|
||||
|
||||
@Override
|
||||
public void onChange(ChangeEvent arg0) {
|
||||
loadLegData(legSelector.getSelectedIndex());
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
hp2.add(this.legSelector);
|
||||
|
||||
sailingPanel.add(hp);
|
||||
sailingPanel.add(hp2);
|
||||
// hp.setSize("80%", "10%");
|
||||
// hp.setWidth("80%");
|
||||
|
||||
if (this.mode == SailingSimulatorUtil.measured) {
|
||||
|
||||
HorizontalPanel hp2 = new HorizontalPanel();
|
||||
hp2.getElement().setClassName("boatClassPanel");
|
||||
hp2.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_LEFT);
|
||||
hp2.add(legLabel);
|
||||
|
||||
this.simulatorSvc.getLegs(3, new AsyncCallback<LegsNamesDTO>() {
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable error) {
|
||||
errorReporter.reportError("Failed to read legs information!\r\n" + error.getMessage());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(LegsNamesDTO response) {
|
||||
|
||||
String notificationMessage = response.notificationMessage;
|
||||
if (notificationMessage != "" && notificationMessage.length() != 0 && warningAlreadyShown == false) {
|
||||
errorReporter.reportNotification(notificationMessage);
|
||||
warningAlreadyShown = true;
|
||||
}
|
||||
|
||||
for (String legName : response.legsNames) {
|
||||
legSelector.addItem(legName);
|
||||
}
|
||||
|
||||
legSelector.setItemSelected(0, true); // first leg
|
||||
loadLegData(0);
|
||||
}
|
||||
});
|
||||
|
||||
this.legSelector.addChangeHandler(new ChangeHandler() {
|
||||
|
||||
@Override
|
||||
public void onChange(ChangeEvent arg0) {
|
||||
loadLegData(legSelector.getSelectedIndex());
|
||||
}
|
||||
});
|
||||
|
||||
hp2.add(this.legSelector);
|
||||
sailingPanel.add(hp2);
|
||||
|
||||
} // endif in "measured mode"
|
||||
|
||||
Panel raceDirection = createRaceDirectionSelector();
|
||||
sailingPanel.add(raceDirection);
|
||||
// raceDirection.setWidth("80%");
|
||||
|
||||
+57
@@ -0,0 +1,57 @@
|
||||
Event, Race, Competitor, Leg#, Leg, GPS time, 49er, 49er rBethwaite, 49er ORC, 49er STG, 505 STG, Avg Wind Speed, Avg Wind Bearing, Avg Boat Speed, Avg Boat Bearing
|
||||
Internationale Deutche Meisterschaft (49er), 49er Race4, Ramm+Lewin, 1, G1 Start-Finish -> G1 Mark 1, 690.0, 385, -9223372036854442, 385, 634, 654, 4.5, 350.0°, 2.30831884057971, 164.99141545227297
|
||||
Internationale Deutche Meisterschaft (49er), 49er Race4, Ramm+Lewin, 2, G1 Mark 1 -> G1 Mark 4, 322.0, 484, 242, 484, 404, 491, 4.5, 350.0°, 3.807701863354037, 192.52055315704777
|
||||
Internationale Deutche Meisterschaft (49er), 49er Race4, Ramm+Lewin, 3, G1 Mark 4 -> G1 Mark 1, 464.0, 324, -9223372036854428, 324, 503, 521, 4.5, 350.0°, 2.9852586206896548, 168.73325201256068
|
||||
Internationale Deutche Meisterschaft (49er), 49er Race4, Ramm+Lewin, 4, G1 Mark 1 -> G1 Start-Finish, 298.0, 248, 111, 248, 183, 267, 4.5, 350.0°, 2.9946308724832216, 189.88238215140265
|
||||
Internationale Deutche Meisterschaft (49er), 49er Race4, Heil+Plössel, 1, G1 Start-Finish -> G1 Mark 1, 659.0, 325, 352, 325, 532, 581, 4.5, 350.0°, 1.907617602427921, 141.02088776951308
|
||||
Internationale Deutche Meisterschaft (49er), 49er Race4, Heil+Plössel, 2, G1 Mark 1 -> G1 Mark 4, 308.0, 360, 166, 360, 253, 399, 4.5, 350.0°, 4.616948051948052, 158.29918446072466
|
||||
Internationale Deutche Meisterschaft (49er), 49er Race4, Heil+Plössel, 3, G1 Mark 4 -> G1 Mark 1, 474.0, 351, -9223372036853438, 351, 573, 576, 4.5, 350.0°, 3.1760337552742617, 170.61896336007285
|
||||
Internationale Deutche Meisterschaft (49er), 49er Race4, Heil+Plössel, 4, G1 Mark 1 -> G1 Start-Finish, 274.0, 266, 138, 266, 214, 307, 4.5, 350.0°, 4.00036496350365, 124.72424840343501
|
||||
Internationale Deutche Meisterschaft (49er), 49er Race4, Kramer+Kramer, 1, G1 Start-Finish -> G1 Mark 1, 723.0, 434, -9223372036854468, 434, 605, 641, 4.5, 350.0°, 2.001715076071923, 137.81919736524074
|
||||
Internationale Deutche Meisterschaft (49er), 49er Race4, Kramer+Kramer, 2, G1 Mark 1 -> G1 Mark 4, 345.0, 351, 153, 351, 248, 374, 4.5, 350.0°, 3.7113043478260868, 125.78659912675285
|
||||
Internationale Deutche Meisterschaft (49er), 49er Race4, Kramer+Kramer, 3, G1 Mark 4 -> G1 Mark 1, 519.0, 406, 305, 406, 679, 648, 4.5, 350.0°, 3.326782273603083, 176.67893210376354
|
||||
Internationale Deutche Meisterschaft (49er), 49er Race4, Kramer+Kramer, 4, G1 Mark 1 -> G1 Start-Finish, 195.0, 247, 117, 247, 188, 269, 4.5, 350.0°, 4.715692307692307, 203.19761117441396
|
||||
Internationale Deutche Meisterschaft (49er), 49er Race4, Lange+Lange, 1, G1 Start-Finish -> G1 Mark 1, 729.0, 502, 331, 502, 631, 711, 4.5, 350.0°, 2.6558573388203017, 160.71139284056488
|
||||
Internationale Deutche Meisterschaft (49er), 49er Race4, Lange+Lange, 2, G1 Mark 1 -> G1 Mark 4, 318.0, 355, 155, 355, 251, 379, 4.5, 350.0°, 4.105723270440251, 169.4270501779451
|
||||
Internationale Deutche Meisterschaft (49er), 49er Race4, Lange+Lange, 3, G1 Mark 4 -> G1 Mark 1, 501.0, 581, 296, 581, 1277, 1350, 4.5, 350.0°, 3.3611177644710577, 169.11962743562026
|
||||
Internationale Deutche Meisterschaft (49er), 49er Race4, Lange+Lange, 4, G1 Mark 1 -> G1 Start-Finish, 206.0, 237, 109, 237, 174, 256, 4.5, 350.0°, 4.190776699029127, 204.9129939333082
|
||||
Internationale Deutche Meisterschaft (49er), 49er Race4, Briesenick-Pudenz+Dethleffsen, 1, G1 Start-Finish -> G1 Mark 1, 631.0, 262, 233, 262, 381, 365, 4.5, 350.0°, 1.801648177496038, 175.2668356435274
|
||||
Internationale Deutche Meisterschaft (49er), 49er Race4, Briesenick-Pudenz+Dethleffsen, 2, G1 Mark 1 -> G1 Mark 4, 327.0, 361, 169, 361, 263, 398, 4.5, 350.0°, 4.230030581039755, 164.32233553219044
|
||||
Internationale Deutche Meisterschaft (49er), 49er Race4, Briesenick-Pudenz+Dethleffsen, 3, G1 Mark 4 -> G1 Mark 1, 505.0, 364, 319, 364, 582, 550, 4.5, 350.0°, 3.107841584158416, 173.1987764617303
|
||||
Internationale Deutche Meisterschaft (49er), 49er Race4, Briesenick-Pudenz+Dethleffsen, 4, G1 Mark 1 -> G1 Start-Finish, 289.0, 271, 141, 271, 220, 313, 4.5, 350.0°, 3.732318339100346, 132.54261079636325
|
||||
Internationale Deutche Meisterschaft (49er), 49er Race4, Schmidt+Boehme, 1, G1 Start-Finish -> G1 Mark 1, 698.0, 350, -9223372036854464, 350, 564, 546, 4.5, 350.0°, 2.045616045845272, 178.63445604769763
|
||||
Internationale Deutche Meisterschaft (49er), 49er Race4, Schmidt+Boehme, 2, G1 Mark 1 -> G1 Mark 4, 325.0, 528, 251, 528, 450, 532, 4.5, 350.0°, 3.9695384615384612, 182.3541453533746
|
||||
Internationale Deutche Meisterschaft (49er), 49er Race4, Schmidt+Boehme, 3, G1 Mark 4 -> G1 Mark 1, 498.0, 475, -9223372036854438, 475, 983, 1033, 4.5, 350.0°, 2.898313253012048, 172.75468521214268
|
||||
Internationale Deutche Meisterschaft (49er), 49er Race4, Schmidt+Boehme, 4, G1 Mark 1 -> G1 Start-Finish, 252.0, 285, 158, 285, 228, 296, 4.5, 350.0°, 3.3796031746031745, 163.3767432144467
|
||||
Internationale Deutche Meisterschaft (49er), 49er Race4, Müller+Wiedemann, 1, G1 Start-Finish -> G1 Mark 1, 726.0, 565, 319, 565, 999, 1093, 4.5, 350.0°, 2.4904683195592288, 154.50270284431437
|
||||
Internationale Deutche Meisterschaft (49er), 49er Race4, Müller+Wiedemann, 2, G1 Mark 1 -> G1 Mark 4, 345.0, 355, 152, 355, 248, 377, 4.5, 350.0°, 3.84063768115942, 165.5824457609693
|
||||
Internationale Deutche Meisterschaft (49er), 49er Race4, Müller+Wiedemann, 3, G1 Mark 4 -> G1 Mark 1, 504.0, 339, -9223372036854430, 339, 555, 573, 4.5, 350.0°, 2.702142857142857, 168.36344597454698
|
||||
Internationale Deutche Meisterschaft (49er), 49er Race4, Müller+Wiedemann, 4, G1 Mark 1 -> G1 Start-Finish, 240.0, 242, 145, 242, 181, 258, 4.5, 350.0°, 3.7749166666666665, 180.7707894426221
|
||||
Internationale Deutche Meisterschaft (49er), 49er Race4, Marten+Kampen, 1, G1 Start-Finish -> G1 Mark 1, 651.0, 988, -9223372036854440, 988, 2551, 2900, 4.5, 350.0°, 2.5002457757296463, 150.0629837158625
|
||||
Internationale Deutche Meisterschaft (49er), 49er Race4, Marten+Kampen, 2, G1 Mark 1 -> G1 Mark 4, 357.0, 389, -9223372036854592, 389, 319, 469, 4.5, 350.0°, 4.1408403361344535, 155.03900906753174
|
||||
Internationale Deutche Meisterschaft (49er), 49er Race4, Marten+Kampen, 3, G1 Mark 4 -> G1 Mark 1, 462.0, 350, -9223372036854464, 350, 559, 536, 4.5, 350.0°, 3.1577489177489175, 170.66222660186685
|
||||
Internationale Deutche Meisterschaft (49er), 49er Race4, Marten+Kampen, 4, G1 Mark 1 -> G1 Start-Finish, 252.0, 249, 119, 249, 184, 277, 4.5, 350.0°, 3.8646031746031744, 191.41945670008937
|
||||
Internationale Deutche Meisterschaft (49er), 49er Race4, Hinzpeter+Reisenauer, 1, G1 Start-Finish -> G1 Mark 1, 701.0, 317, -9223372036854480, 317, 474, 486, 4.5, 350.0°, 1.9040228245363764, 154.43037367279223
|
||||
Internationale Deutche Meisterschaft (49er), 49er Race4, Hinzpeter+Reisenauer, 2, G1 Mark 1 -> G1 Mark 4, 336.0, 358, 155, 358, 251, 382, 4.5, 350.0°, 3.983928571428571, 163.19900833975908
|
||||
Internationale Deutche Meisterschaft (49er), 49er Race4, Hinzpeter+Reisenauer, 3, G1 Mark 4 -> G1 Mark 1, 522.0, 489, -9223372036854450, 489, 996, 1049, 4.5, 350.0°, 3.0958237547892717, 171.39121975263524
|
||||
Internationale Deutche Meisterschaft (49er), 49er Race4, Hinzpeter+Reisenauer, 4, G1 Mark 1 -> G1 Start-Finish, 266.0, 251, 124, 251, 193, 283, 4.5, 350.0°, 3.7341353383458644, 171.28401715372297
|
||||
Internationale Deutche Meisterschaft (49er), 49er Race4, Müller+Janich, 1, G1 Start-Finish -> G1 Mark 1, 684.0, 363, 275, 363, 614, 617, 4.5, 350.0°, 1.9711988304093566, 169.10061050268158
|
||||
Internationale Deutche Meisterschaft (49er), 49er Race4, Müller+Janich, 2, G1 Mark 1 -> G1 Mark 4, 306.0, 350, 157, 350, 256, 371, 4.5, 350.0°, 4.0892156862745095, 141.24720001192026
|
||||
Internationale Deutche Meisterschaft (49er), 49er Race4, Müller+Janich, 3, G1 Mark 4 -> G1 Mark 1, 506.0, 351, -9223372036854436, 351, 544, 522, 4.5, 350.0°, 3.032687747035573, 175.59766331908347
|
||||
Internationale Deutche Meisterschaft (49er), 49er Race4, Müller+Janich, 4, G1 Mark 1 -> G1 Start-Finish, 300.0, 300, 157, 300, 245, 313, 4.5, 350.0°, 2.8906, 166.45256325942958
|
||||
Internationale Deutche Meisterschaft (49er), 49er Race4, Gerngross+Reifferscheidt, 1, G1 Start-Finish -> G1 Mark 1, 683.0, 327, 252, 327, 494, 485, 4.5, 350.0°, 1.9485212298682284, 155.00461710922613
|
||||
Internationale Deutche Meisterschaft (49er), 49er Race4, Gerngross+Reifferscheidt, 2, G1 Mark 1 -> G1 Mark 4, 327.0, 358, 161, 358, 252, 390, 4.5, 350.0°, 4.182568807339449, 156.53944596853387
|
||||
Internationale Deutche Meisterschaft (49er), 49er Race4, Gerngross+Reifferscheidt, 3, G1 Mark 4 -> G1 Mark 1, 494.0, 330, -9223372036854444, 330, 477, 453, 4.5, 350.0°, 2.894291497975708, 175.39903544724453
|
||||
Internationale Deutche Meisterschaft (49er), 49er Race4, Gerngross+Reifferscheidt, 4, G1 Mark 1 -> G1 Start-Finish, 363.0, 271, 151, 271, 223, 321, 4.5, 350.0°, 3.0195592286501376, 124.76571964789896
|
||||
Internationale Deutche Meisterschaft (49er), 49er Race4, Holzapfel+Meggendorfer, 1, G1 Start-Finish -> G1 Mark 1, 611.0, 375, -9223372036854540, 375, 621, 655, 4.5, 350.0°, 2.2003600654664486, 203.57796063553843
|
||||
Internationale Deutche Meisterschaft (49er), 49er Race4, Holzapfel+Meggendorfer, 2, G1 Mark 1 -> G1 Mark 4, 329.0, 348, 155, 348, 248, 370, 4.5, 350.0°, 3.7561702127659573, 146.50895844816066
|
||||
Internationale Deutche Meisterschaft (49er), 49er Race4, Holzapfel+Meggendorfer, 3, G1 Mark 4 -> G1 Mark 1, 492.0, 375, 305, 375, 620, 604, 4.5, 350.0°, 3.1071544715447152, 175.84420672748217
|
||||
Internationale Deutche Meisterschaft (49er), 49er Race4, Holzapfel+Meggendorfer, 4, G1 Mark 1 -> G1 Start-Finish, 233.0, 236, 144, 236, 172, 252, 4.5, 350.0°, 3.472017167381974, 202.82378707874176
|
||||
Internationale Deutche Meisterschaft (49er), 49er Race4, Erichsen+Lutz, 1, G1 Start-Finish -> G1 Mark 1, 685.0, 420, -9223372036854496, 420, 668, 705, 4.5, 350.0°, 2.393138686131387, 134.73244185885812
|
||||
Internationale Deutche Meisterschaft (49er), 49er Race4, Erichsen+Lutz, 2, G1 Mark 1 -> G1 Mark 4, 304.0, 353, 150, 353, 248, 373, 4.5, 350.0°, 4.28203947368421, 153.40855546723014
|
||||
Internationale Deutche Meisterschaft (49er), 49er Race4, Erichsen+Lutz, 3, G1 Mark 4 -> G1 Mark 1, 486.0, 364, 302, 364, 543, 495, 4.5, 350.0°, 3.3930041152263373, 175.70167750741126
|
||||
Internationale Deutche Meisterschaft (49er), 49er Race4, Erichsen+Lutz, 4, G1 Mark 1 -> G1 Start-Finish, 297.0, 258, 134, 258, 198, 297, 4.5, 350.0°, 3.4815488215488215, 137.85783701706768
|
||||
Internationale Deutche Meisterschaft (49er), 49er Race4, Rein+Baumann, 1, G1 Start-Finish -> G1 Mark 1, 660.0, 375, 274, 375, 559, 577, 4.5, 350.0°, 2.2192424242424242, 131.10877140235456
|
||||
Internationale Deutche Meisterschaft (49er), 49er Race4, Rein+Baumann, 2, G1 Mark 1 -> G1 Mark 4, 300.0, 404, 215, 404, 311, 417, 4.5, 350.0°, 4.778866666666667, 161.47214937577294
|
||||
Internationale Deutche Meisterschaft (49er), 49er Race4, Rein+Baumann, 3, G1 Mark 4 -> G1 Mark 1, 456.0, 374, 285, 374, 645, 635, 4.5, 350.0°, 3.2716228070175437, 173.04214433130122
|
||||
Internationale Deutche Meisterschaft (49er), 49er Race4, Rein+Baumann, 4, G1 Mark 1 -> G1 Start-Finish, 327.0, 283, 156, 283, 243, 337, 4.5, 350.0°, 3.5477675840978593, 150.07217973351166
|
||||
|
+57
-8
@@ -1,5 +1,8 @@
|
||||
package com.sap.sailing.simulator.impl;
|
||||
|
||||
import java.io.BufferedWriter;
|
||||
import java.io.FileWriter;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
@@ -32,18 +35,29 @@ public class PathGeneratorTreeGrowWind2 extends PathGeneratorBase {
|
||||
int maxTurns = 0;
|
||||
String initPathStr = "0";
|
||||
PathCand bestCand = null;
|
||||
boolean gridStore = false;
|
||||
ArrayList<List<PathCand>> gridPositions = null;
|
||||
String gridFile = null;
|
||||
|
||||
public PathGeneratorTreeGrowWind2(SimulationParameters params) {
|
||||
simulationParameters = params;
|
||||
}
|
||||
|
||||
public void setEvaluationParameters(String startDirection, int maxTurns) {
|
||||
public void setEvaluationParameters(String startDirection, int maxTurns, String gridFile) {
|
||||
if (startDirection != null) {
|
||||
this.initPathStr = "0" + startDirection;
|
||||
} else {
|
||||
this.initPathStr = "0";
|
||||
}
|
||||
this.maxTurns = maxTurns;
|
||||
this.gridFile = gridFile;
|
||||
if (this.gridFile != null) {
|
||||
this.gridStore = true;
|
||||
this.gridPositions = new ArrayList<List<PathCand>>();
|
||||
} else {
|
||||
this.gridStore = false;
|
||||
this.gridPositions = null;
|
||||
}
|
||||
}
|
||||
|
||||
class SortPathCandsHorizontally implements Comparator<PathCand> {
|
||||
@@ -103,7 +117,7 @@ public class PathGeneratorTreeGrowWind2 extends PathGeneratorBase {
|
||||
// extended: M - wide left, S - wide right
|
||||
Pair<TimedPosition,Wind> getStep(TimedPosition pos, long timeStep, long turnLoss, boolean sameBaseDirection, char nextDirection) {
|
||||
|
||||
double offDeg = 5.0;
|
||||
double offDeg = 3.0;
|
||||
WindFieldGenerator wf = simulationParameters.getWindField();
|
||||
TimePoint curTime = pos.getTimePoint();
|
||||
Position curPosition = pos.getPosition();
|
||||
@@ -122,10 +136,10 @@ public class PathGeneratorTreeGrowWind2 extends PathGeneratorBase {
|
||||
travelBearing = pd.optimalDirectionsUpwind()[1];
|
||||
} else if (nextDirection == 'M') {
|
||||
tmpBearing = pd.optimalDirectionsUpwind()[0];
|
||||
travelBearing = tmpBearing.add(new DegreeBearingImpl(+offDeg));
|
||||
travelBearing = tmpBearing.add(new DegreeBearingImpl(-offDeg));
|
||||
} else if (nextDirection == 'S') {
|
||||
tmpBearing = pd.optimalDirectionsUpwind()[1];
|
||||
travelBearing = tmpBearing.add(new DegreeBearingImpl(-offDeg));
|
||||
travelBearing = tmpBearing.add(new DegreeBearingImpl(+offDeg));
|
||||
}
|
||||
|
||||
// determine beat-speed left and right
|
||||
@@ -188,7 +202,7 @@ public class PathGeneratorTreeGrowWind2 extends PathGeneratorBase {
|
||||
//Position posHeightWind = pathPos.getPosition().projectToLineThrough(posRef, posWind.getBearing());
|
||||
|
||||
// calculate vertical distance as distance of height-position to start
|
||||
//double vrtDist = tgtHeight - Math.round(posHeight.getDistance(posEnd).getMeters()*100.0)/100.0;
|
||||
//double vrtDist = Math.round(posHeightTrgt.getDistance(posStart).getMeters()*100.0)/100.0;
|
||||
double vrtDist = Math.round(posHeight.getDistance(posStart).getMeters()*100.0)/100.0;
|
||||
|
||||
/*if (vrtDist > tgtHeight) {
|
||||
@@ -424,7 +438,7 @@ public class PathGeneratorTreeGrowWind2 extends PathGeneratorBase {
|
||||
tstPosition = this.getStep(new TimedPositionImpl(startTime, startPos), timeStep, turnLoss, true, 'R').getA();
|
||||
double tstDist2 = startPos.getDistance(tstPosition.getPosition()).getMeters();
|
||||
|
||||
double hrzBinSize = (tstDist1 + tstDist2)/4; // horizontal bin size in meters
|
||||
double hrzBinSize = (tstDist1 + tstDist2)/2.0; // horizontal bin size in meters
|
||||
if (debugMsgOn) {
|
||||
System.out.println("Horizontal Bin Size: "+hrzBinSize);
|
||||
}
|
||||
@@ -454,6 +468,18 @@ public class PathGeneratorTreeGrowWind2 extends PathGeneratorBase {
|
||||
|
||||
allPaths = nextPaths;
|
||||
|
||||
if (this.gridStore) {
|
||||
|
||||
/*ArrayList<TimedPosition> isoChrone = new ArrayList<TimedPosition>();
|
||||
for(PathCand curCand : allPaths) {
|
||||
isoChrone.add(curCand.pos);
|
||||
}
|
||||
this.gridPositions.add(isoChrone);*/
|
||||
|
||||
this.gridPositions.add(allPaths);
|
||||
|
||||
}
|
||||
|
||||
// check if there are still paths in the regatta-area
|
||||
if (allPaths.size() > 0) {
|
||||
|
||||
@@ -461,7 +487,7 @@ public class PathGeneratorTreeGrowWind2 extends PathGeneratorBase {
|
||||
// terminate path-search if paths are found that are close enough to target
|
||||
if ((curPath.vrt > distStartEndMeters)) {
|
||||
int curBin = (int)Math.round(Math.floor( (curPath.hrz + hrzBinSize/2.0) / hrzBinSize ));
|
||||
if ((Math.abs(curBin) <= 3)) {
|
||||
if ((Math.abs(curBin) <= 2)) {
|
||||
reachedEnd = true;
|
||||
trgPaths.add(curPath); // add path to list of target-paths
|
||||
}
|
||||
@@ -475,7 +501,30 @@ public class PathGeneratorTreeGrowWind2 extends PathGeneratorBase {
|
||||
|
||||
}
|
||||
|
||||
|
||||
if (this.gridStore) {
|
||||
|
||||
BufferedWriter outputCSV;
|
||||
try {
|
||||
outputCSV = new BufferedWriter(new FileWriter(this.gridFile));
|
||||
outputCSV.write("step; lat; lng; time; side\n");
|
||||
int stepCount = 0;
|
||||
for(List<PathCand> isoChrone : this.gridPositions) {
|
||||
stepCount++;
|
||||
for(PathCand isoPos : isoChrone) {
|
||||
|
||||
outputCSV.write(""+stepCount+"; "+isoPos.pos.getPosition().getLatDeg()+"; "+isoPos.pos.getPosition().getLngDeg()+"; "+(isoPos.pos.getTimePoint().asMillis()/1000)+"; "+isoPos.sid+"\n");
|
||||
|
||||
}
|
||||
}
|
||||
outputCSV.close();
|
||||
} catch (IOException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
// if no target-paths were found, return empty path
|
||||
if (trgPaths.size() == 0) {
|
||||
//trgPaths = allPaths; // TODO: only for testing; remove lateron
|
||||
|
||||
+3
-3
@@ -171,7 +171,7 @@ public class SailingSimulatorImpl implements SailingSimulator {
|
||||
PathGeneratorTreeGrowWind2 genTreeGrow = new PathGeneratorTreeGrowWind2(this.simulationParameters);
|
||||
|
||||
// search best left-starting 1-turner
|
||||
genTreeGrow.setEvaluationParameters("L", 1);
|
||||
genTreeGrow.setEvaluationParameters("L", 1, null);
|
||||
Path leftPath = genTreeGrow.getPath();
|
||||
PathCand leftBestCand = genTreeGrow.getBestCand();
|
||||
int left1TurnMiddle = 1000;
|
||||
@@ -180,7 +180,7 @@ public class SailingSimulatorImpl implements SailingSimulator {
|
||||
}
|
||||
|
||||
// search best right-starting 1-turner
|
||||
genTreeGrow.setEvaluationParameters("R", 1);
|
||||
genTreeGrow.setEvaluationParameters("R", 1, null);
|
||||
Path rightPath = genTreeGrow.getPath();
|
||||
PathCand rightBestCand = genTreeGrow.getBestCand();
|
||||
int right1TurnMiddle = 1000;
|
||||
@@ -189,7 +189,7 @@ public class SailingSimulatorImpl implements SailingSimulator {
|
||||
}
|
||||
|
||||
// search best multi-turn course
|
||||
genTreeGrow.setEvaluationParameters(null, 0);
|
||||
genTreeGrow.setEvaluationParameters(null, 0, null);
|
||||
Path optPath = genTreeGrow.getPath();
|
||||
|
||||
|
||||
|
||||
Reference in new issue
Block a user