summaryrefslogtreecommitdiffstats
path: root/helper/Distance.java
diff options
context:
space:
mode:
Diffstat (limited to 'helper/Distance.java')
-rw-r--r--helper/Distance.java75
1 files changed, 75 insertions, 0 deletions
diff --git a/helper/Distance.java b/helper/Distance.java
new file mode 100644
index 0000000..680998b
--- /dev/null
+++ b/helper/Distance.java
@@ -0,0 +1,75 @@
+package helper;
+
+import DataStructure.GPScoordinate;
+
+/**
+ * @author richy
+ */
+public class Distance {
+
+ public static void main(String[] args) {
+ GPScoordinate coord1 = new GPScoordinate(null, 52.517, 'N', 13.4, 'E',
+ true);
+ GPScoordinate coord2 = new GPScoordinate(null, 35.7, 'N', 139.767, 'E',
+ true);
+ System.out.println(calc(coord1, coord2));
+
+ System.out.println(calc(52.517, 13.4, 35.7, 139.767));
+ }
+
+ /**
+ * Returns distance in kilometers. see
+ * http://de.wikipedia.org/wiki/Orthodrome
+ *
+ * @param coord1
+ * GPScoordinate Point 1
+ * @param coord2
+ * GPScoordinate Point 2
+ * @return distance in Kilometer
+ */
+ static public double calc(GPScoordinate coord1, GPScoordinate coord2) {
+ double a = DEGtoRAD(coord1.coord1);
+ double b = DEGtoRAD(coord1.coord2);
+ double c = DEGtoRAD(coord2.coord1);
+ double d = DEGtoRAD(coord2.coord2);
+
+ double angle = Math.acos(Math.sin(a) * Math.sin(c) + Math.cos(a)
+ * Math.cos(c) * Math.cos(d - b));
+ double distance = angle * 6370;
+ return distance;
+ }
+
+ /**
+ * Returns distance in kilometers
+ *
+ * @param coordN1
+ * DEC (decimal) value coordinate point 1 N/S (y-axis)
+ * @param coordE1
+ * DEC (decimal) value coordinate point 1 E/W (x-axis)
+ * @param coordN2
+ * DEC (decimal) value coordinate point 2 N/S (y-axis)
+ * @param coordE2
+ * DEC (decimal) value coordinate point 2 E/W (x-axis)
+ * @return
+ */
+
+ static public double calc(double coordN1, double coordE1, double coordN2,
+ double coordE2) {
+ GPScoordinate coord1 = new GPScoordinate(null, coordN1, 'N', coordE1,
+ 'E', true);
+ GPScoordinate coord2 = new GPScoordinate(null, coordN2, 'N', coordE2,
+ 'E', true);
+ return calc(coord1, coord2);
+ }
+
+ static private double DEGtoRAD(double deg) {
+ // see wiki http://de.wikipedia.org/wiki/Radiant_%28Einheit%29
+ return deg * 0.017453293d;
+ }
+
+ @SuppressWarnings("unused")
+ static private double RADtoDEG(double rad) {
+ // see wiki http://de.wikipedia.org/wiki/Radiant_%28Einheit%29
+ return rad * 57.29577951d;
+ }
+}