From 44959526255d13493b53de05992d6c79f968521e Mon Sep 17 00:00:00 2001 From: quaelnix <122357328+quaelnix@users.noreply.github.com> Date: Thu, 19 Jan 2023 11:28:18 +0100 Subject: [PATCH] Fix rounding error in calcDistance --- brouter-core/src/main/java/btools/router/OsmPathElement.java | 2 +- brouter-core/src/main/java/btools/router/RoutingContext.java | 2 +- brouter-mapaccess/src/main/java/btools/mapaccess/OsmNode.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/brouter-core/src/main/java/btools/router/OsmPathElement.java b/brouter-core/src/main/java/btools/router/OsmPathElement.java index f9b2750..d721ad8 100644 --- a/brouter-core/src/main/java/btools/router/OsmPathElement.java +++ b/brouter-core/src/main/java/btools/router/OsmPathElement.java @@ -75,7 +75,7 @@ public class OsmPathElement implements OsmPos { } public final int calcDistance(OsmPos p) { - return (int) (CheapRuler.distance(ilon, ilat, p.getILon(), p.getILat()) + 1.0); + return (int) Math.max(1.0, Math.round(CheapRuler.distance(ilon, ilat, p.getILon(), p.getILat()))); } public OsmPathElement origin; diff --git a/brouter-core/src/main/java/btools/router/RoutingContext.java b/brouter-core/src/main/java/btools/router/RoutingContext.java index 120c3ce..8af9c9f 100644 --- a/brouter-core/src/main/java/btools/router/RoutingContext.java +++ b/brouter-core/src/main/java/btools/router/RoutingContext.java @@ -462,7 +462,7 @@ public final class RoutingContext { } } } - return (int) (d + 0.5); + return (int) Math.max(1.0, Math.round(d)); } public OsmPathModel pm; diff --git a/brouter-mapaccess/src/main/java/btools/mapaccess/OsmNode.java b/brouter-mapaccess/src/main/java/btools/mapaccess/OsmNode.java index 35e9f88..92a6f42 100644 --- a/brouter-mapaccess/src/main/java/btools/mapaccess/OsmNode.java +++ b/brouter-mapaccess/src/main/java/btools/mapaccess/OsmNode.java @@ -100,7 +100,7 @@ public class OsmNode extends OsmLink implements OsmPos { } public final int calcDistance(OsmPos p) { - return (int) (CheapRuler.distance(ilon, ilat, p.getILon(), p.getILat()) + 1.0); + return (int) Math.max(1.0, Math.round(CheapRuler.distance(ilon, ilat, p.getILon(), p.getILat()))); } public String toString() {