From d41fd00de4cc572dc4f830fbb354f6c5fe1e6d93 Mon Sep 17 00:00:00 2001 From: "Christopher Ronnewinkel (D036654)" Date: Fri, 11 Jul 2014 20:54:49 +0200 Subject: [PATCH 1/2] fix long-delay of streamlet-initialization; --- .../racemap/WindStreamletsRaceboardOverlay.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/WindStreamletsRaceboardOverlay.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/WindStreamletsRaceboardOverlay.java index 537de8e5bee..18a4764eca5 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/WindStreamletsRaceboardOverlay.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/WindStreamletsRaceboardOverlay.java @@ -106,6 +106,11 @@ public class WindStreamletsRaceboardOverlay extends FullCanvasOverlay { } private void scheduleWindDataRefresh() { + // initial update + updateWindSourcesToObserve(); + updateWindField(); + + // schedule delayed repeated updates scheduler.scheduleFixedPeriod(new RepeatingCommand() { @Override public boolean execute() { @@ -146,8 +151,12 @@ public class WindStreamletsRaceboardOverlay extends FullCanvasOverlay { windInfoForRace.raceIsKnownToStartUpwind = result.raceIsKnownToStartUpwind; windInfoForRace.windSourcesToExclude = result.windSourcesToExclude; for (Entry e : result.windTrackInfoByWindSource.entrySet()) { - if (!windInfoForRace.windTrackInfoByWindSource.containsKey(e.getKey()) && - !Util.contains(result.windSourcesToExclude, e.getKey()) && e.getKey().getType() != WindSourceType.COMBINED) { + // generally exclude combined wind, course-based wind and racecommittee + if (!windInfoForRace.windTrackInfoByWindSource.containsKey(e.getKey()) + && !Util.contains(result.windSourcesToExclude, e.getKey()) + && e.getKey().getType() != WindSourceType.COMBINED + && e.getKey().getType() != WindSourceType.COURSE_BASED + && e.getKey().getType() != WindSourceType.RACECOMMITTEE) { windInfoForRace.windTrackInfoByWindSource.put(e.getKey(), e.getValue()); } } From c30ace8bb9bb0e2d3fd41b20ff6af53752cf6f44 Mon Sep 17 00:00:00 2001 From: "Christopher Ronnewinkel (D036654)" Date: Tue, 15 Jul 2014 20:11:43 +0200 Subject: [PATCH 2/2] adapt streamlets in simulator to recent changes for spatial-wind; tune parameters; fix long-delay of streamlet-initialization; (reverted from commit d41fd00de4cc572dc4f830fbb354f6c5fe1e6d93) --- .../racemap/WindStreamletsRaceboardOverlay.java | 13 ++----------- .../gwt/ui/simulator/StreamletParameters.java | 4 ++-- .../ui/simulator/WindStreamletsCanvasOverlay.java | 3 ++- .../gwt/ui/simulator/streamlets/SimulatorField.java | 10 +++++----- 4 files changed, 11 insertions(+), 19 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/WindStreamletsRaceboardOverlay.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/WindStreamletsRaceboardOverlay.java index 18a4764eca5..537de8e5bee 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/WindStreamletsRaceboardOverlay.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/WindStreamletsRaceboardOverlay.java @@ -106,11 +106,6 @@ public class WindStreamletsRaceboardOverlay extends FullCanvasOverlay { } private void scheduleWindDataRefresh() { - // initial update - updateWindSourcesToObserve(); - updateWindField(); - - // schedule delayed repeated updates scheduler.scheduleFixedPeriod(new RepeatingCommand() { @Override public boolean execute() { @@ -151,12 +146,8 @@ public class WindStreamletsRaceboardOverlay extends FullCanvasOverlay { windInfoForRace.raceIsKnownToStartUpwind = result.raceIsKnownToStartUpwind; windInfoForRace.windSourcesToExclude = result.windSourcesToExclude; for (Entry e : result.windTrackInfoByWindSource.entrySet()) { - // generally exclude combined wind, course-based wind and racecommittee - if (!windInfoForRace.windTrackInfoByWindSource.containsKey(e.getKey()) - && !Util.contains(result.windSourcesToExclude, e.getKey()) - && e.getKey().getType() != WindSourceType.COMBINED - && e.getKey().getType() != WindSourceType.COURSE_BASED - && e.getKey().getType() != WindSourceType.RACECOMMITTEE) { + if (!windInfoForRace.windTrackInfoByWindSource.containsKey(e.getKey()) && + !Util.contains(result.windSourcesToExclude, e.getKey()) && e.getKey().getType() != WindSourceType.COMBINED) { windInfoForRace.windTrackInfoByWindSource.put(e.getKey(), e.getValue()); } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/simulator/StreamletParameters.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/simulator/StreamletParameters.java index 40b49dd9578..9441dadb635 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/simulator/StreamletParameters.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/simulator/StreamletParameters.java @@ -6,8 +6,8 @@ public class StreamletParameters { public double motionScale = 1.0; public double swarmScale = 1.0; public int detailZoom = 15; - public double lineScale = 1.0; - public double lineBase = 1.5; + public double lineScale = 0.1; + public double lineBase = 1.2; public StreamletParameters() { } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/simulator/WindStreamletsCanvasOverlay.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/simulator/WindStreamletsCanvasOverlay.java index b0719510e6b..ac1f5398734 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/simulator/WindStreamletsCanvasOverlay.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/simulator/WindStreamletsCanvasOverlay.java @@ -74,7 +74,8 @@ public class WindStreamletsCanvasOverlay extends FullCanvasOverlay implements Ti } public void setWindField(final WindFieldDTO windFieldDTO) { - this.windFieldDTO = windFieldDTO; + this.windFieldDTO = windFieldDTO; + this.swarm = null; } @Override diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/simulator/streamlets/SimulatorField.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/simulator/streamlets/SimulatorField.java index 2cf76bda8bd..55461318fee 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/simulator/streamlets/SimulatorField.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/simulator/streamlets/SimulatorField.java @@ -31,9 +31,9 @@ public class SimulatorField implements VectorField { private final Position bdC; private final double xScale; - private double motionFactor; - private double lineBase; - private double lineScale; + private double motionFactor; + private double lineBase; + private double lineScale; private final double maxLength; private final double particleFactor; @@ -100,7 +100,7 @@ public class SimulatorField implements VectorField { } } this.maxLength = maxWindSpeed; - this.particleFactor = 2.0; + this.particleFactor = 1.0; final double latAvg = (this.rcEnd.getLatDeg() + this.rcStart.getLatDeg()) / 2.; this.lngScale = Math.cos(latAvg * Math.PI / 180.0); final double difLat = this.rcEnd.getLatDeg() - this.rcStart.getLatDeg(); @@ -151,7 +151,7 @@ public class SimulatorField implements VectorField { + dataAtStep[idx.yTop][2 * idx.xBot + 1] * idx.yMod * (1 - idx.xMod) + dataAtStep[idx.yBot][2 * idx.xTop + 1] * (1 - idx.yMod) * idx.xMod + dataAtStep[idx.yTop][2 * idx.xTop + 1] * idx.yMod * idx.xMod; - return new Vector(avgX / this.lngScale, avgY); + return new Vector(avgX, avgY); } @Override