X-Git-Url: http://gitweb.fperrin.net/?p=GpsPrune.git;a=blobdiff_plain;f=src%2Ftim%2Fprune%2Fdata%2FDistance.java;fp=src%2Ftim%2Fprune%2Fdata%2FDistance.java;h=83864a59e890216548957711513ae188c5ba8571;hp=0000000000000000000000000000000000000000;hb=ce6f2161b8596f7018d6a76bff79bc9e571f35fd;hpb=2d8cb72e84d5cc1089ce77baf1e34ea3ea2f8465 diff --git a/src/tim/prune/data/Distance.java b/src/tim/prune/data/Distance.java new file mode 100644 index 0000000..83864a5 --- /dev/null +++ b/src/tim/prune/data/Distance.java @@ -0,0 +1,58 @@ +package tim.prune.data; + +import tim.prune.config.Config; + +/** + * Class to provide distance constants and functions + */ +public abstract class Distance +{ + // Geographical constants + /** 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 inUnit distance units + * @return distance in specified distance units + */ + public static double convertRadiansToDistance(double inAngDist, Unit inUnit) + { + // Multiply by appropriate factor + 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(); + } +}