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