From 3828d180c700c073360828681eca7372e5f027b7 Mon Sep 17 00:00:00 2001 From: "Christopher Ronnewinkel (D036654)" Date: Tue, 29 Jul 2014 19:53:43 +0200 Subject: [PATCH] avoid rounding of race times in tree-grow by improving sorting of candidates; --- .../src/com/sap/sailing/simulator/impl/PathCandidate.java | 2 +- .../sap/sailing/simulator/impl/PathGeneratorTreeGrowWind.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/impl/PathCandidate.java b/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/impl/PathCandidate.java index 3e7e5d82619..1a0c235d67f 100644 --- a/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/impl/PathCandidate.java +++ b/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/impl/PathCandidate.java @@ -26,7 +26,7 @@ public class PathCandidate implements Comparable { @Override // sort descending by time, -#turns, width public int compareTo(PathCandidate other) { - if (this.pos.getTimePoint().asMillis() == other.pos.getTimePoint().asMillis()) { + if (Math.abs(this.pos.getTimePoint().asMillis() - other.pos.getTimePoint().asMillis()) <= 1000) { if (this.trn == other.trn) { if (Math.abs(this.hrz) == Math.abs(other.hrz)) { return 0; diff --git a/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/impl/PathGeneratorTreeGrowWind.java b/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/impl/PathGeneratorTreeGrowWind.java index 4cebe76ada6..06c145f0544 100644 --- a/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/impl/PathGeneratorTreeGrowWind.java +++ b/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/impl/PathGeneratorTreeGrowWind.java @@ -226,7 +226,7 @@ public class PathGeneratorTreeGrowWind extends PathGeneratorBase { TimePoint prevTime = path.pos.getTimePoint(); double heightFrac = path.vrt / (path.vrt - vrtDist); Position newPos = prevPos.translateGreatCircle(prevPos.getBearingGreatCircle(pathPos.getPosition()), prevPos.getDistance(pathPos.getPosition()).scale(heightFrac)); - long newTimeMillis = Math.round((prevTime.asMillis() + (pathPos.getTimePoint().asMillis() - prevTime.asMillis()) * heightFrac)/2000.0)*2000; + long newTimeMillis = Math.round((prevTime.asMillis() + (pathPos.getTimePoint().asMillis() - prevTime.asMillis()) * heightFrac)/1000.0)*1000; TimePoint newTime = new MillisecondsTimePoint(newTimeMillis); pathPos = new TimedPositionImpl(newTime, newPos); reachedEnd = true;