]> gitweb.fperrin.net Git - GpsPrune.git/blobdiff - tim/prune/data/Distance.java
Version 14, October 2012
[GpsPrune.git] / tim / prune / data / Distance.java
index 5425873102aa752833c9953c91e967705d0ad75b..83864a59e890216548957711513ae188c5ba8571 100644 (file)
@@ -1,34 +1,58 @@
 package tim.prune.data;
 
+import tim.prune.config.Config;
+
 /**
  * Class to provide distance constants and functions
  */
 public abstract class Distance
 {
-       // distance formats
-       public static final int UNITS_KILOMETRES = 1;
-       public static final int UNITS_MILES      = 2;
-
        // Geographical constants
-       private static final double EARTH_RADIUS_KM = 6372.795;
-       private static final double EARTH_RADIUS_MILES = 3959.8712255;
-       // Conversion constants
-       //private static final double CONVERT_KM_TO_MILES = 1.609344;
-       //private static final double CONVERT_MILES_TO_KM = 0.621371192;
+       /** Earth radius in metres */
+       private static final double EARTH_RADIUS_M = 6372795.0;
+
 
+       /**
+        * Convert the given angle in radians into a distance
+        * @param inAngDist angular distance in radians
+        * @return distance in currently configured distance units
+        */
+       public static double convertRadiansToDistance(double inAngDist)
+       {
+               return convertRadiansToDistance(inAngDist, Config.getUnitSet().getDistanceUnit());
+       }
 
        /**
         * Convert the given angle in radians into a distance
         * @param inAngDist angular distance in radians
-        * @param inUnits desired units, miles or km
-        * @return distance in specified format
+        * @param inUnit distance units
+        * @return distance in specified distance units
         */
-       public static double convertRadians(double inAngDist, int inUnits)
+       public static double convertRadiansToDistance(double inAngDist, Unit inUnit)
        {
                // Multiply by appropriate factor
-               if (inUnits == UNITS_MILES)
-                       return inAngDist * EARTH_RADIUS_MILES;
-               return inAngDist * EARTH_RADIUS_KM;
+               return inAngDist * EARTH_RADIUS_M * inUnit.getMultFactorFromStd();
        }
 
+       /**
+        * Convert the given distance into an angle in radians
+        * @param inDist distance to convert in the current distance units
+        * @return angular distance in radians
+        */
+       public static double convertDistanceToRadians(double inDist)
+       {
+               return convertDistanceToRadians(inDist, Config.getUnitSet().getDistanceUnit());
+       }
+
+       /**
+        * Convert the given distance into an angle in radians
+        * @param inDist distance to convert in the current distance units
+        * @param inUnit distance unit
+        * @return angular distance in radians
+        */
+       public static double convertDistanceToRadians(double inDist, Unit inUnit)
+       {
+               // Divide by appropriate factor
+               return inDist / EARTH_RADIUS_M / inUnit.getMultFactorFromStd();
+       }
 }