forked from upstream-mirrors/OpenTracks
Speed: use Distance for conversions.
This commit is contained in:
@@ -85,16 +85,23 @@ public class Speed {
|
|||||||
return speed_mps;
|
return speed_mps;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* We interpret {@link Speed} here as a {@link Distance} over 1h.
|
||||||
|
*/
|
||||||
|
private Distance toH() {
|
||||||
|
return Distance.of(speed_mps * Duration.ofHours(1).toSeconds());
|
||||||
|
}
|
||||||
|
|
||||||
public double toKMH() {
|
public double toKMH() {
|
||||||
return speed_mps * UnitConversions.MPS_TO_KMH;
|
return toH().toKM();
|
||||||
}
|
}
|
||||||
|
|
||||||
public double toMPH() {
|
public double toMPH() {
|
||||||
return toKMH() * UnitConversions.KM_TO_MI;
|
return toH().toMI();
|
||||||
}
|
}
|
||||||
|
|
||||||
public double toKnots() {
|
public double toKnots() {
|
||||||
return toKMH() * UnitConversions.KM_TO_NAUTICAL_MILE;
|
return toH().toNauticalMiles();
|
||||||
}
|
}
|
||||||
|
|
||||||
public Duration toPace(UnitSystem unitSystem) {
|
public Duration toPace(UnitSystem unitSystem) {
|
||||||
@@ -102,20 +109,7 @@ public class Speed {
|
|||||||
return Duration.ofSeconds(0);
|
return Duration.ofSeconds(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
double distance = speed_mps;
|
double distance = Distance.of(speed_mps).toKM_Miles(unitSystem);
|
||||||
switch (unitSystem) { //TODO Can we use to(UnitSystem)?
|
|
||||||
case METRIC:
|
|
||||||
distance *= UnitConversions.M_TO_KM;
|
|
||||||
break;
|
|
||||||
case IMPERIAL:
|
|
||||||
distance *= UnitConversions.M_TO_MI;
|
|
||||||
break;
|
|
||||||
case NAUTICAL_IMPERIAL:
|
|
||||||
distance *= UnitConversions.M_TO_NAUTICAL_MILE;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
throw new RuntimeException("Not implemented");
|
|
||||||
}
|
|
||||||
|
|
||||||
return Duration.ofSeconds(Math.round(1 / distance));
|
return Duration.ofSeconds(Math.round(1 / distance));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,8 +15,6 @@
|
|||||||
*/
|
*/
|
||||||
package de.dennisguse.opentracks.data.models;
|
package de.dennisguse.opentracks.data.models;
|
||||||
|
|
||||||
import java.time.Duration;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Unit conversion constants.
|
* Unit conversion constants.
|
||||||
*
|
*
|
||||||
@@ -41,8 +39,6 @@ public class UnitConversions {
|
|||||||
public static final double NAUTICAL_MILE_TO_M = 1852.0;
|
public static final double NAUTICAL_MILE_TO_M = 1852.0;
|
||||||
public static final double M_TO_NAUTICAL_MILE = 1 / NAUTICAL_MILE_TO_M;
|
public static final double M_TO_NAUTICAL_MILE = 1 / NAUTICAL_MILE_TO_M;
|
||||||
public static final double KM_TO_NAUTICAL_MILE = 1000 * M_TO_NAUTICAL_MILE;
|
public static final double KM_TO_NAUTICAL_MILE = 1000 * M_TO_NAUTICAL_MILE;
|
||||||
// multiplication factor to convert meters per second to kilometers per hour
|
|
||||||
public static final double MPS_TO_KMH = M_TO_KM / (1d / Duration.ofHours(1).toSeconds());
|
|
||||||
// multiplication factor to convert miles to km
|
// multiplication factor to convert miles to km
|
||||||
public static final double MI_TO_KM = 1 / KM_TO_MI;
|
public static final double MI_TO_KM = 1 / KM_TO_MI;
|
||||||
// multiplication factor to convert miles to m
|
// multiplication factor to convert miles to m
|
||||||
|
|||||||
Reference in New Issue
Block a user