diff --git a/src/main/java/ch/inf3/horizoncut/cli/Cli.java b/src/main/java/ch/inf3/horizoncut/cli/Cli.java index d1cc6d2..4bf2a2d 100644 --- a/src/main/java/ch/inf3/horizoncut/cli/Cli.java +++ b/src/main/java/ch/inf3/horizoncut/cli/Cli.java @@ -1,7 +1,5 @@ package ch.inf3.horizoncut.cli; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; import ch.inf3.horizoncut.data.DisplayCalculator; import ch.inf3.horizoncut.data.DistanceLayer; import ch.inf3.horizoncut.data.GeoJsonExport; @@ -10,6 +8,8 @@ import ch.inf3.horizoncut.data.Position; import ch.inf3.horizoncut.data.Tile; import ch.inf3.horizoncut.data.TileMap; import ch.inf3.horizoncut.data.TileReader; +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; @@ -144,7 +144,7 @@ public class Cli { Collection feature; int txtPosition; boolean displayInvisible; - + if (i == 0) { feature = peaks; txtPosition = 150; @@ -154,9 +154,9 @@ public class Cli { txtPosition = height - 50; displayInvisible = true; } - + for (Peak peak : feature) { - double peakBearing = DisplayCalculator.radToDeg(Position.bearing(c, peak.position)); + double peakBearing = Math.toDegrees(Position.bearing(c, peak.position)); if (!dc.isVisible(peakBearing)) { LOG.info("Peak {} is not visible at bearing {}", peak.name, peakBearing); continue; @@ -176,7 +176,7 @@ public class Cli { LOG.info("Peak {} is not visible, hidden behind terrain.", peak.name); continue; } - + if (visibleAngle < minVertAngle) { LOG.info("Peak {} is not visible, too low.", peak.name); continue; @@ -238,10 +238,10 @@ public class Cli { return output; } - + public static Collection readFeatures(String fileName) throws IOException { Collection peaks = new ArrayList<>(); - + try ( FileReader fr = new FileReader(fileName)) { Gson gson = new GsonBuilder().create(); GeoJsonExport export = gson.fromJson(fr, GeoJsonExport.class); @@ -259,7 +259,7 @@ public class Cli { peaks.add(peak); } } - + return peaks; } diff --git a/src/main/java/ch/inf3/horizoncut/data/DisplayCalculator.java b/src/main/java/ch/inf3/horizoncut/data/DisplayCalculator.java index 7b02fa4..59a4812 100644 --- a/src/main/java/ch/inf3/horizoncut/data/DisplayCalculator.java +++ b/src/main/java/ch/inf3/horizoncut/data/DisplayCalculator.java @@ -68,18 +68,9 @@ public class DisplayCalculator { } else if (eyeHeight < targetVisibleHeight) { double op = targetVisibleHeight - eyeHeight; double ad = targetDistance; - return radToDeg(Math.atan(op / ad)) + 90; + return Math.toDegrees(Math.atan(op / ad)) + 90; } else { - return radToDeg(Math.atan(targetDistance / (eyeHeight - targetVisibleHeight))); + return Math.toDegrees(Math.atan(targetDistance / (eyeHeight - targetVisibleHeight))); } } - - public static double degToRad(double angleDeg) { - return Math.PI * angleDeg / 180.0; - } - - public static double radToDeg(double angleDeg) { - return angleDeg * 180.0 / Math.PI; - } - } diff --git a/src/main/java/ch/inf3/horizoncut/data/Position.java b/src/main/java/ch/inf3/horizoncut/data/Position.java index 89d99eb..a5b737d 100644 --- a/src/main/java/ch/inf3/horizoncut/data/Position.java +++ b/src/main/java/ch/inf3/horizoncut/data/Position.java @@ -38,7 +38,7 @@ public class Position { double λ2 = λ1 + Math.atan2(Math.sin(angleRad) * Math.sin(rDistance) * Math.cos(φ1), Math.cos(rDistance) - Math.sin(φ1) * Math.sin(φ2)); - return new Position(radToDeg(φ2), radToDeg(λ2)); + return new Position(Math.toDegrees(φ2), Math.toDegrees(λ2)); } public int distanceToUnits(Position other) { @@ -57,8 +57,8 @@ public class Position { public int distanceToMeters(Position other) { final double R = 6371 * 1000; - double dLat = degToRad(other.getLatitude() - this.getLatitude()); - double dLon = degToRad(other.getLongitude()- this.getLongitude()); + double dLat = Math.toRadians(other.getLatitude() - this.getLatitude()); + double dLon = Math.toRadians(other.getLongitude()- this.getLongitude()); double a = Math.sin(dLat / 2) * Math.sin(dLat / 2) + Math.cos(this.getLatitude() * (Math.PI / 180.0)) * Math.cos(other.getLatitude() * (Math.PI / 180.0)) @@ -70,19 +70,19 @@ public class Position { } public static double bearing(Position a, Position b) { - + double φ1 = a.getLatitudeRad(); double φ2 = b.getLatitudeRad(); - + double λ1 = a.getLongitudeRad(); double λ2 = b.getLongitudeRad(); - + double y = Math.sin(λ2 - λ1) * Math.cos(φ2); double x = Math.cos(φ1) * Math.sin(φ2) - Math.sin(φ1) * Math.cos(φ2) * Math.cos(λ2 - λ1); double θ = Math.atan2(y, x); double brng = (θ + 2 * Math.PI) % (2 * Math.PI); - + return brng; } @@ -109,11 +109,11 @@ public class Position { } public double getLatitudeRad() { - return degToRad(getLatitude()); + return Math.toRadians(getLatitude()); } public double getLongitudeRad() { - return degToRad(getLongitude()); + return Math.toRadians(getLongitude()); } public String getLatLon() { @@ -163,13 +163,4 @@ public class Position { return "Position[gridLat=" + gridLat + ", gridLon=" + gridLon + ", col=" + col + ", row=" + row + "]"; } - static double degToRad(double angleDeg) { - return Math.PI * angleDeg / 180.0; - } - - static double radToDeg(double angleDeg) { - return angleDeg * 180.0 / Math.PI; - } - - }