Skip to content

Instantly share code, notes, and snippets.

@bivas
Created February 24, 2013 13:01
Show Gist options
  • Save bivas/5023756 to your computer and use it in GitHub Desktop.
Save bivas/5023756 to your computer and use it in GitHub Desktop.
Helpful utility for transforming distance units from/to. - Inspired by java.util.concurrent.TimeUnit
package iam.bivas.commons.distance;
public enum DistanceUnit {
FEETS {
@Override
public double toMeters(final double units) {
return units / METER_TO_FEET;
}
@Override
public double toKilometers(final double units) {
return units / METER_TO_FEET / 1000.0;
}
@Override
public double toFeets(final double units) {
return units;
}
@Override
public double toMiles(final double units) {
return units / MILES_TO_FEET;
}
@Override
public double convert(final double units, final DistanceUnit distanceUnit) {
return distanceUnit.toFeets(units);
}
},
METERS {
@Override
public double toFeets(final double units) {
return units * METER_TO_FEET;
}
@Override
public double toMeters(final double units) {
return units;
}
@Override
public double toKilometers(final double units) {
return units / 1000.0;
}
@Override
public double toMiles(final double units) {
return units * METER_TO_MILE;
}
@Override
public double convert(final double units, final DistanceUnit distanceUnit) {
return distanceUnit.toMeters(units);
}
},
KILOMETERS {
@Override
public double toFeets(final double units) {
return units * 1000.0 * METER_TO_FEET;
}
@Override
public double toMeters(final double units) {
return units * 1000.0;
}
@Override
public double toKilometers(final double units) {
return units;
}
@Override
public double toMiles(final double units) {
return units * 1000.0 * METER_TO_MILE;
}
@Override
public double convert(final double units, final DistanceUnit distanceUnit) {
return distanceUnit.toKilometers(units);
}
},
MILES {
@Override
public double toFeets(final double units) {
return units * MILES_TO_FEET;
}
@Override
public double toMeters(final double units) {
return units / METER_TO_MILE;
}
@Override
public double toKilometers(final double units) {
return units / METER_TO_MILE / 1000.0;
}
@Override
public double toMiles(final double units) {
return units;
}
@Override
public double convert(final double units, final DistanceUnit distanceUnit) {
return distanceUnit.toMiles(units);
}
};
private static double METER_TO_FEET = 3.2808399;
private static double METER_TO_MILE = 0.000621371192;
private static double MILES_TO_FEET = 5280.0;
public double toFeets(final double units) {
throw new AbstractMethodError();
}
public double toMeters(final double units) {
throw new AbstractMethodError();
}
public double toKilometers(final double units) {
throw new AbstractMethodError();
}
public double toMiles(final double units) {
throw new AbstractMethodError();
}
public double convert(final double units, final DistanceUnit distanceUnit) {
throw new AbstractMethodError();
}
}
@jlussagnet
Copy link

Hi @bivas. Very good idea, please beware that "feet" is already plural, therefore, "feets" is incorrect in english ;-)
See https://en.wikipedia.org/wiki/Foot_(unit)

@bivas
Copy link
Author

bivas commented Feb 13, 2020 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment