Skip to content

Instantly share code, notes, and snippets.

@bivas
Created February 24, 2013 13:01
Show Gist options
  • Select an option

  • Save bivas/5023756 to your computer and use it in GitHub Desktop.

Select an option

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
Copy Markdown

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
Copy Markdown
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