X-Git-Url: https://gitweb.fperrin.net/?a=blobdiff_plain;f=tim%2Fprune%2Fdata%2FDistance.java;h=d12d98817d5c7fce86d687f12f566940a03dbbd7;hb=112bb0c9b46894adca9a33ed8c99ea712b253185;hp=311cd886a5af098d8764478d4e5aa1d313b08f44;hpb=da0b1f449260a0b4a94318006382a9039726ef3e;p=GpsPrune.git diff --git a/tim/prune/data/Distance.java b/tim/prune/data/Distance.java index 311cd88..d12d988 100644 --- a/tim/prune/data/Distance.java +++ b/tim/prune/data/Distance.java @@ -5,10 +5,18 @@ package tim.prune.data; */ public abstract class Distance { - // distance formats - public static final int UNITS_KILOMETRES = 1; - public static final int UNITS_MILES = 2; - public static final int UNITS_METRES = 3; + /** distance units */ + public enum Units + { + /** Kilometres */ + KILOMETRES, + /** Miles */ + MILES, + /** Metres */ + METRES, + /** Feet */ + FEET + } // Geographical constants private static final double EARTH_RADIUS_KM = 6372.795; @@ -22,12 +30,12 @@ public abstract class Distance * @param inUnits desired units, eg miles or km * @return distance in specified format */ - public static double convertRadiansToDistance(double inAngDist, int inUnits) + public static double convertRadiansToDistance(double inAngDist, Units inUnits) { // Multiply by appropriate factor - if (inUnits == UNITS_MILES) + if (inUnits == Units.MILES) return inAngDist * EARTH_RADIUS_KM * CONVERT_KM_TO_MILES; - else if (inUnits == UNITS_METRES) + else if (inUnits == Units.METRES) return inAngDist * EARTH_RADIUS_KM * 1000; // default kilometres return inAngDist * EARTH_RADIUS_KM; @@ -39,14 +47,24 @@ public abstract class Distance * @param inUnits units, eg miles or km * @return angular distance in radians */ - public static double convertDistanceToRadians(double inDist, int inUnits) + public static double convertDistanceToRadians(double inDist, Units inUnits) { // Divide by appropriate factor - if (inUnits == UNITS_MILES) + if (inUnits == Units.MILES) return inDist / EARTH_RADIUS_KM / CONVERT_KM_TO_MILES; - else if (inUnits == UNITS_METRES) + 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; + } }