1 package tim.prune.data;
4 * Class to provide distance constants and functions
6 public abstract class Distance
21 // Geographical constants
22 private static final double EARTH_RADIUS_KM = 6372.795;
23 // Conversion constants
24 private static final double CONVERT_KM_TO_MILES = 0.621371192;
28 * Convert the given angle in radians into a distance
29 * @param inAngDist angular distance in radians
30 * @param inUnits desired units, eg miles or km
31 * @return distance in specified format
33 public static double convertRadiansToDistance(double inAngDist, Units inUnits)
35 // Multiply by appropriate factor
36 if (inUnits == Units.MILES)
37 return inAngDist * EARTH_RADIUS_KM * CONVERT_KM_TO_MILES;
38 else if (inUnits == Units.METRES)
39 return inAngDist * EARTH_RADIUS_KM * 1000;
41 return inAngDist * EARTH_RADIUS_KM;
45 * Convert the given distance into an angle in radians
46 * @param inDist distance to convert
47 * @param inUnits units, eg miles or km
48 * @return angular distance in radians
50 public static double convertDistanceToRadians(double inDist, Units inUnits)
52 // Divide by appropriate factor
53 if (inUnits == Units.MILES)
54 return inDist / EARTH_RADIUS_KM / CONVERT_KM_TO_MILES;
55 else if (inUnits == Units.METRES)
56 return inDist / EARTH_RADIUS_KM / 1000;
58 return inDist / EARTH_RADIUS_KM;
62 * Convert the given distance from metres to miles
63 * @param inMetres number of metres
64 * @return number of miles
66 public static double convertMetresToMiles(double inMetres)
68 return inMetres / 1000.0 * CONVERT_KM_TO_MILES;