Add speed units.
authorBill Kuker <bkuker@billkuker.com>
Sun, 22 Jan 2012 02:08:56 +0000 (02:08 +0000)
committerBill Kuker <bkuker@billkuker.com>
Sun, 22 Jan 2012 02:08:56 +0000 (02:08 +0000)
Make length change to a better unit when it gets big.

src/com/billkuker/rocketry/motorsim/RocketScience.java

index f400ffb5a3724ca73bd635e3c7313d3092dbab43..902d55d2ea2d434e5beb0c96b9fd5a50a4b694b0 100644 (file)
@@ -51,6 +51,7 @@ public class RocketScience {
 \r
        public static enum UnitPreference{\r
                SI(new Unit[]{\r
+                               javax.measure.unit.SI.METERS_PER_SECOND,\r
                                javax.measure.unit.SI.MILLIMETER.pow(2),\r
                                javax.measure.unit.SI.MILLIMETER,\r
                                javax.measure.unit.SI.MILLIMETER.divide(javax.measure.unit.SI.SECOND),\r
@@ -60,6 +61,7 @@ public class RocketScience {
                                NEWTON_SECOND\r
                }),\r
                NONSI(new Unit[]{\r
+                               javax.measure.unit.NonSI.MILES_PER_HOUR,\r
                                javax.measure.unit.NonSI.INCH.pow(2),\r
                                javax.measure.unit.NonSI.INCH,\r
                                javax.measure.unit.NonSI.POUND_FORCE,\r
@@ -155,6 +157,7 @@ public class RocketScience {
                return nf.format(a.doubleValue(a.getUnit())) + " " + a.getUnit();\r
        }\r
        \r
+       @SuppressWarnings("unchecked")\r
        public static <T extends Quantity> String ammountToRoundedString(Amount<T> a) {\r
                if (a == null)\r
                        return "Null";\r
@@ -163,6 +166,14 @@ public class RocketScience {
                double d = a.doubleValue(u);\r
 \r
                DecimalFormat df;\r
+               \r
+               if (u == SI.MILLIMETER && d > 1000.0) {\r
+                       u = (Unit<T>) SI.METER;\r
+                       d = d / 1000.0;\r
+               } else if (u == NonSI.INCH && d > 12.0) {\r
+                       u = (Unit<T>) NonSI.FOOT;\r
+                       d = d / 12.0;\r
+               }\r
 \r
                if (Math.abs(d) < 10.0) {\r
                        df = new DecimalFormat("#.##");\r