]> gitweb.fperrin.net Git - GpsPrune.git/blob - tim/prune/data/Distance.java
Version 4, January 2008
[GpsPrune.git] / tim / prune / data / Distance.java
1 package tim.prune.data;
2
3 /**
4  * Class to provide distance constants and functions
5  */
6 public abstract class Distance
7 {
8         // distance formats
9         public static final int UNITS_KILOMETRES = 1;
10         public static final int UNITS_MILES      = 2;
11         public static final int UNITS_METRES     = 3;
12
13         // Geographical constants
14         private static final double EARTH_RADIUS_KM = 6372.795;
15         // Conversion constants
16         private static final double CONVERT_KM_TO_MILES = 0.621371192;
17
18
19         /**
20          * Convert the given angle in radians into a distance
21          * @param inAngDist angular distance in radians
22          * @param inUnits desired units, eg miles or km
23          * @return distance in specified format
24          */
25         public static double convertRadiansToDistance(double inAngDist, int inUnits)
26         {
27                 // Multiply by appropriate factor
28                 if (inUnits == UNITS_MILES)
29                         return inAngDist * EARTH_RADIUS_KM * CONVERT_KM_TO_MILES;
30                 else if (inUnits == UNITS_METRES)
31                         return inAngDist * EARTH_RADIUS_KM * 1000;
32                 // default kilometres
33                 return inAngDist * EARTH_RADIUS_KM;
34         }
35
36         /**
37          * Convert the given distance into an angle in radians
38          * @param inDist distance to convert
39          * @param inUnits units, eg miles or km
40          * @return angular distance in radians
41          */
42         public static double convertDistanceToRadians(double inDist, int inUnits)
43         {
44                 // Divide by appropriate factor
45                 if (inUnits == UNITS_MILES)
46                         return inDist / EARTH_RADIUS_KM / CONVERT_KM_TO_MILES;
47                 else if (inUnits == UNITS_METRES)
48                         return inDist / EARTH_RADIUS_KM / 1000;
49                 // default kilometres
50                 return inDist / EARTH_RADIUS_KM;
51         }
52 }