File: Distance.java

package info (click to toggle)
gpsprune 10-1
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 2,220 kB
  • ctags: 3,013
  • sloc: java: 22,662; sh: 23; makefile: 16; python: 15
file content (70 lines) | stat: -rw-r--r-- 1,784 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
package tim.prune.data;

/**
 * Class to provide distance constants and functions
 */
public abstract class Distance
{
	/** distance units */
	public enum Units
	{
		/** Kilometres */
		KILOMETRES,
		/** Miles */
		MILES,
		/** Metres */
		METRES,
		/** Feet */
		FEET
	}

	// Geographical constants
	private static final double EARTH_RADIUS_KM = 6372.795;
	// Conversion constants
	private static final double CONVERT_KM_TO_MILES = 0.621371192;


	/**
	 * Convert the given angle in radians into a distance
	 * @param inAngDist angular distance in radians
	 * @param inUnits desired units, eg miles or km
	 * @return distance in specified format
	 */
	public static double convertRadiansToDistance(double inAngDist, Units inUnits)
	{
		// Multiply by appropriate factor
		if (inUnits == Units.MILES)
			return inAngDist * EARTH_RADIUS_KM * CONVERT_KM_TO_MILES;
		else if (inUnits == Units.METRES)
			return inAngDist * EARTH_RADIUS_KM * 1000;
		// default kilometres
		return inAngDist * EARTH_RADIUS_KM;
	}

	/**
	 * Convert the given distance into an angle in radians
	 * @param inDist distance to convert
	 * @param inUnits units, eg miles or km
	 * @return angular distance in radians
	 */
	public static double convertDistanceToRadians(double inDist, Units inUnits)
	{
		// Divide by appropriate factor
		if (inUnits == Units.MILES)
			return inDist / EARTH_RADIUS_KM / CONVERT_KM_TO_MILES;
		else if (inUnits == Units.METRES)
			return inDist / EARTH_RADIUS_KM / 1000;
		// default kilometres
		return inDist / EARTH_RADIUS_KM;
	}

	/**
	 * Convert the given distance from metres to miles
	 * @param inMetres number of metres
	 * @return number of miles
	 */
	public static double convertMetresToMiles(double inMetres)
	{
		return inMetres / 1000.0 * CONVERT_KM_TO_MILES;
	}
}