diff options
Diffstat (limited to 'src/org/unitConverter')
-rw-r--r-- | src/org/unitConverter/unit/SI.java | 85 |
1 files changed, 65 insertions, 20 deletions
diff --git a/src/org/unitConverter/unit/SI.java b/src/org/unitConverter/unit/SI.java index f36cf28..c88d2bc 100644 --- a/src/org/unitConverter/unit/SI.java +++ b/src/org/unitConverter/unit/SI.java @@ -16,9 +16,6 @@ */
package org.unitConverter.unit;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashSet;
import java.util.Set;
import org.unitConverter.math.ObjectProduct;
@@ -92,7 +89,7 @@ public final class SI { public static final BaseUnit DOLLAR = BaseUnit
.valueOf(BaseDimensions.CURRENCY, "dollar", "$");
- public static final Set<BaseUnit> BASE_UNITS = setOf(METRE, KILOGRAM,
+ public static final Set<BaseUnit> BASE_UNITS = Set.of(METRE, KILOGRAM,
SECOND, AMPERE, KELVIN, MOLE, CANDELA, BIT);
// You may NOT get SI.BaseUnits instances!
@@ -134,10 +131,10 @@ public final class SI { .oneOf(BaseDimensions.INFORMATION);
public static final ObjectProduct<BaseDimension> CURRENCY = ObjectProduct
.oneOf(BaseDimensions.CURRENCY);
+
// derived dimensions without named SI units
public static final ObjectProduct<BaseDimension> AREA = LENGTH
.times(LENGTH);
-
public static final ObjectProduct<BaseDimension> VOLUME = AREA
.times(LENGTH);
public static final ObjectProduct<BaseDimension> VELOCITY = LENGTH
@@ -164,7 +161,7 @@ public final class SI { .dividedBy(AREA);
public static final ObjectProduct<BaseDimension> REFRACTIVE_INDEX = VELOCITY
.dividedBy(VELOCITY);
- public static final ObjectProduct<BaseDimension> REFLACTIVE_PERMEABILITY = EMPTY
+ public static final ObjectProduct<BaseDimension> REFRACTIVE_PERMEABILITY = EMPTY
.times(EMPTY);
public static final ObjectProduct<BaseDimension> ANGLE = LENGTH
.dividedBy(LENGTH);
@@ -344,11 +341,11 @@ public final class SI { .fromConversionFunctions(ONE.getBase(), pr -> 10 * Math.log10(pr),
dB -> Math.pow(10, dB / 10))
.withName(NameSymbol.of("decibel", "dB"));
+
/// The prefixes of the SI
// expanding decimal prefixes
public static final UnitPrefix KILO = UnitPrefix.valueOf(1e3)
.withName(NameSymbol.of("kilo", "k", "K"));
-
public static final UnitPrefix MEGA = UnitPrefix.valueOf(1e6)
.withName(NameSymbol.of("mega", "M"));
public static final UnitPrefix GIGA = UnitPrefix.valueOf(1e9)
@@ -363,10 +360,10 @@ public final class SI { .withName(NameSymbol.of("zetta", "Z"));
public static final UnitPrefix YOTTA = UnitPrefix.valueOf(1e24)
.withName(NameSymbol.of("yotta", "Y"));
+
// contracting decimal prefixes
public static final UnitPrefix MILLI = UnitPrefix.valueOf(1e-3)
.withName(NameSymbol.of("milli", "m"));
-
public static final UnitPrefix MICRO = UnitPrefix.valueOf(1e-6)
.withName(NameSymbol.of("micro", "\u03BC", "u")); // mu
public static final UnitPrefix NANO = UnitPrefix.valueOf(1e-9)
@@ -381,10 +378,10 @@ public final class SI { .withName(NameSymbol.of("zepto", "z"));
public static final UnitPrefix YOCTO = UnitPrefix.valueOf(1e-24)
.withName(NameSymbol.of("yocto", "y"));
+
// prefixes that don't match the pattern of thousands
public static final UnitPrefix DEKA = UnitPrefix.valueOf(1e1)
.withName(NameSymbol.of("deka", "da", "deca", "D"));
-
public static final UnitPrefix HECTO = UnitPrefix.valueOf(1e2)
.withName(NameSymbol.of("hecto", "h", "H", "hekto"));
public static final UnitPrefix DECI = UnitPrefix.valueOf(1e-1)
@@ -403,30 +400,78 @@ public final class SI { .withName(NameSymbol.of("pebi", "Pi"));
public static final UnitPrefix EXBI = PEBI.times(1024)
.withName(NameSymbol.of("exbi", "Ei"));
+
+ // a few prefixed units
+ public static final LinearUnit MICROMETRE = SI.METRE.withPrefix(SI.MICRO);
+ public static final LinearUnit MILLIMETRE = SI.METRE.withPrefix(SI.MILLI);
+ public static final LinearUnit KILOMETRE = SI.METRE.withPrefix(SI.KILO);
+ public static final LinearUnit MEGAMETRE = SI.METRE.withPrefix(SI.MEGA);
+
+ public static final LinearUnit MICROLITRE = SI.LITRE.withPrefix(SI.MICRO);
+ public static final LinearUnit MILLILITRE = SI.LITRE.withPrefix(SI.MILLI);
+ public static final LinearUnit KILOLITRE = SI.LITRE.withPrefix(SI.KILO);
+ public static final LinearUnit MEGALITRE = SI.LITRE.withPrefix(SI.MEGA);
+
+ public static final LinearUnit MICROSECOND = SI.SECOND.withPrefix(SI.MICRO);
+ public static final LinearUnit MILLISECOND = SI.SECOND.withPrefix(SI.MILLI);
+ public static final LinearUnit KILOSECOND = SI.SECOND.withPrefix(SI.KILO);
+ public static final LinearUnit MEGASECOND = SI.SECOND.withPrefix(SI.MEGA);
+
+ public static final LinearUnit MICROGRAM = SI.GRAM.withPrefix(SI.MICRO);
+ public static final LinearUnit MILLIGRAM = SI.GRAM.withPrefix(SI.MILLI);
+ public static final LinearUnit MEGAGRAM = SI.GRAM.withPrefix(SI.MEGA);
+
+ public static final LinearUnit MICRONEWTON = SI.NEWTON.withPrefix(SI.MICRO);
+ public static final LinearUnit MILLINEWTON = SI.NEWTON.withPrefix(SI.MILLI);
+ public static final LinearUnit KILONEWTON = SI.NEWTON.withPrefix(SI.KILO);
+ public static final LinearUnit MEGANEWTON = SI.NEWTON.withPrefix(SI.MEGA);
+
+ public static final LinearUnit MICROJOULE = SI.JOULE.withPrefix(SI.MICRO);
+ public static final LinearUnit MILLIJOULE = SI.JOULE.withPrefix(SI.MILLI);
+ public static final LinearUnit KILOJOULE = SI.JOULE.withPrefix(SI.KILO);
+ public static final LinearUnit MEGAJOULE = SI.JOULE.withPrefix(SI.MEGA);
+
+ public static final LinearUnit MICROWATT = SI.WATT.withPrefix(SI.MICRO);
+ public static final LinearUnit MILLIWATT = SI.WATT.withPrefix(SI.MILLI);
+ public static final LinearUnit KILOWATT = SI.WATT.withPrefix(SI.KILO);
+ public static final LinearUnit MEGAWATT = SI.WATT.withPrefix(SI.MEGA);
+
+ public static final LinearUnit MICROCOULOMB = SI.COULOMB
+ .withPrefix(SI.MICRO);
+ public static final LinearUnit MILLICOULOMB = SI.COULOMB
+ .withPrefix(SI.MILLI);
+ public static final LinearUnit KILOCOULOMB = SI.COULOMB.withPrefix(SI.KILO);
+ public static final LinearUnit MEGACOULOMB = SI.COULOMB.withPrefix(SI.MEGA);
+
+ public static final LinearUnit MICROAMPERE = SI.AMPERE.withPrefix(SI.MICRO);
+ public static final LinearUnit MILLIAMPERE = SI.AMPERE.withPrefix(SI.MILLI);
+
+ public static final LinearUnit MICROVOLT = SI.VOLT.withPrefix(SI.MICRO);
+ public static final LinearUnit MILLIVOLT = SI.VOLT.withPrefix(SI.MILLI);
+ public static final LinearUnit KILOVOLT = SI.VOLT.withPrefix(SI.KILO);
+ public static final LinearUnit MEGAVOLT = SI.VOLT.withPrefix(SI.MEGA);
+
+ public static final LinearUnit KILOOHM = SI.OHM.withPrefix(SI.KILO);
+ public static final LinearUnit MEGAOHM = SI.OHM.withPrefix(SI.MEGA);
+
// sets of prefixes
- public static final Set<UnitPrefix> ALL_PREFIXES = setOf(DEKA, HECTO, KILO,
+ public static final Set<UnitPrefix> ALL_PREFIXES = Set.of(DEKA, HECTO, KILO,
MEGA, GIGA, TERA, PETA, EXA, ZETTA, YOTTA, DECI, CENTI, MILLI, MICRO,
NANO, PICO, FEMTO, ATTO, ZEPTO, YOCTO, KIBI, MEBI, GIBI, TEBI, PEBI,
EXBI);
- public static final Set<UnitPrefix> DECIMAL_PREFIXES = setOf(DEKA, HECTO,
+ public static final Set<UnitPrefix> DECIMAL_PREFIXES = Set.of(DEKA, HECTO,
KILO, MEGA, GIGA, TERA, PETA, EXA, ZETTA, YOTTA, DECI, CENTI, MILLI,
MICRO, NANO, PICO, FEMTO, ATTO, ZEPTO, YOCTO);
- public static final Set<UnitPrefix> THOUSAND_PREFIXES = setOf(KILO, MEGA,
+ public static final Set<UnitPrefix> THOUSAND_PREFIXES = Set.of(KILO, MEGA,
GIGA, TERA, PETA, EXA, ZETTA, YOTTA, MILLI, MICRO, NANO, PICO, FEMTO,
ATTO, ZEPTO, YOCTO);
- public static final Set<UnitPrefix> MAGNIFYING_PREFIXES = setOf(DEKA, HECTO,
+ public static final Set<UnitPrefix> MAGNIFYING_PREFIXES = Set.of(DEKA, HECTO,
KILO, MEGA, GIGA, TERA, PETA, EXA, ZETTA, YOTTA, KIBI, MEBI, GIBI,
TEBI, PEBI, EXBI);
- public static final Set<UnitPrefix> REDUCING_PREFIXES = setOf(DECI, CENTI,
+ public static final Set<UnitPrefix> REDUCING_PREFIXES = Set.of(DECI, CENTI,
MILLI, MICRO, NANO, PICO, FEMTO, ATTO, ZEPTO, YOCTO);
- // this method just calls Arrays.asList, which is itself safe.
- @SafeVarargs
- private static final <T> Set<T> setOf(T... args) {
- return Collections.unmodifiableSet(new HashSet<>(Arrays.asList(args)));
- }
-
// You may NOT get SI instances!
private SI() {
throw new AssertionError();
|