1 package org.djunits.unit;
2
3 import org.djunits.quantity.Dimensionless;
4 import org.djunits.unit.scale.LinearScale;
5 import org.djunits.unit.scale.Scale;
6 import org.djunits.unit.si.SIPrefix;
7 import org.djunits.unit.si.SIUnit;
8 import org.djunits.unit.system.UnitSystem;
9
10
11
12
13
14
15
16
17
18 public class Unitless extends AbstractUnit<Dimensionless>
19 {
20
21 public static final SIUnit SI_UNIT = new SIUnit(new int[] {0, 0, 0, 0, 0, 0, 0, 0, 0});
22
23
24 public static final Unitless BASE = new Unitless(" ", " ", 1.0, UnitSystem.OTHER);
25
26
27
28
29
30
31
32
33 public Unitless(final String id, final String name, final double scaleFactorToBaseUnit, final UnitSystem unitSystem)
34 {
35 super(id, name, scaleFactorToBaseUnit, unitSystem);
36 }
37
38
39
40
41
42
43
44
45
46
47 public Unitless(final String textualAbbreviation, final String displayAbbreviation, final String name, final Scale scale,
48 final UnitSystem unitSystem, final SIPrefix siPrefix)
49 {
50 super(textualAbbreviation, displayAbbreviation, name, scale, unitSystem, siPrefix);
51 }
52
53 @Override
54 public SIUnit siUnit()
55 {
56 return SI_UNIT;
57 }
58
59 @Override
60 public Unitless getBaseUnit()
61 {
62 return BASE;
63 }
64
65 @Override
66 public Dimensionless ofSi(final double si, final UnitInterface<Dimensionless> displayUnit)
67 {
68 return new Dimensionless(si, (Unitless) displayUnit);
69 }
70
71 @Override
72 public Unitless deriveUnit(final String textualAbbreviation, final String displayAbbreviation, final String name,
73 final double scaleFactor, final UnitSystem unitSystem, final SIPrefix siPrefix)
74 {
75 if (getScale() instanceof LinearScale ls)
76 {
77 return new Unitless(textualAbbreviation, displayAbbreviation, name,
78 new LinearScale(ls.getScaleFactorToBaseUnit() * scaleFactor), unitSystem, siPrefix);
79 }
80 throw new UnitRuntimeException("Only possible to derive a unit from a unit with a linear scale");
81 }
82
83 }