1 package org.djunits.value.vfloat.scalar;
2
3 import java.util.regex.Matcher;
4
5 import org.djunits.unit.AbsoluteTemperatureUnit;
6 import org.djunits.unit.DimensionlessUnit;
7 import org.djunits.unit.TemperatureUnit;
8 import org.djunits.unit.Unit;
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 public class FloatTemperature extends AbstractFloatScalarRel<TemperatureUnit, FloatTemperature>
36 {
37
38 private static final long serialVersionUID = 20150901L;
39
40
41 public static final FloatTemperature ZERO = new FloatTemperature(0.0f, TemperatureUnit.SI);
42
43
44 @SuppressWarnings("checkstyle:constantname")
45 public static final FloatTemperature NaN = new FloatTemperature(Float.NaN, TemperatureUnit.SI);
46
47
48 public static final FloatTemperature POSITIVE_INFINITY = new FloatTemperature(Float.POSITIVE_INFINITY, TemperatureUnit.SI);
49
50
51 public static final FloatTemperature NEGATIVE_INFINITY = new FloatTemperature(Float.NEGATIVE_INFINITY, TemperatureUnit.SI);
52
53
54 public static final FloatTemperature POS_MAXVALUE = new FloatTemperature(Float.MAX_VALUE, TemperatureUnit.SI);
55
56
57 public static final FloatTemperature NEG_MAXVALUE = new FloatTemperature(-Float.MAX_VALUE, TemperatureUnit.SI);
58
59
60
61
62
63
64 public FloatTemperature(final float value, final TemperatureUnit unit)
65 {
66 super(value, unit);
67 }
68
69
70
71
72
73 public FloatTemperature(final FloatTemperature value)
74 {
75 super(value);
76 }
77
78
79
80
81
82
83 public FloatTemperature(final double value, final TemperatureUnit unit)
84 {
85 super((float) value, unit);
86 }
87
88
89 @Override
90 public final FloatTemperature instantiateRel(final float value, final TemperatureUnit unit)
91 {
92 return new FloatTemperature(value, unit);
93 }
94
95
96
97
98
99
100 public static final FloatTemperature createSI(final float value)
101 {
102 return new FloatTemperature(value, TemperatureUnit.SI);
103 }
104
105
106
107
108
109
110
111 public final FloatAbsoluteTemperature instantiateAbs(final float value, final AbsoluteTemperatureUnit unit)
112 {
113 return new FloatAbsoluteTemperature(value, unit);
114 }
115
116
117
118
119
120
121
122
123 public static FloatTemperature interpolate(final FloatTemperature zero, final FloatTemperature one, final float ratio)
124 {
125 return new FloatTemperature(zero.getInUnit() * (1 - ratio) + one.getInUnit(zero.getUnit()) * ratio, zero.getUnit());
126 }
127
128
129
130
131
132
133 public final FloatAbsoluteTemperature plus(final FloatAbsoluteTemperature v)
134 {
135 AbsoluteTemperatureUnit targetUnit = v.getUnit();
136 return instantiateAbs(v.getInUnit() + getInUnit(targetUnit.getRelativeUnit()), targetUnit);
137 }
138
139
140
141
142
143
144
145 public static FloatTemperature max(final FloatTemperature r1, final FloatTemperature r2)
146 {
147 return (r1.gt(r2)) ? r1 : r2;
148 }
149
150
151
152
153
154
155
156
157 public static FloatTemperature max(final FloatTemperature r1, final FloatTemperature r2, final FloatTemperature... rn)
158 {
159 FloatTemperature maxr = (r1.gt(r2)) ? r1 : r2;
160 for (FloatTemperature r : rn)
161 {
162 if (r.gt(maxr))
163 {
164 maxr = r;
165 }
166 }
167 return maxr;
168 }
169
170
171
172
173
174
175
176 public static FloatTemperature min(final FloatTemperature r1, final FloatTemperature r2)
177 {
178 return (r1.lt(r2)) ? r1 : r2;
179 }
180
181
182
183
184
185
186
187
188 public static FloatTemperature min(final FloatTemperature r1, final FloatTemperature r2, final FloatTemperature... rn)
189 {
190 FloatTemperature minr = (r1.lt(r2)) ? r1 : r2;
191 for (FloatTemperature r : rn)
192 {
193 if (r.lt(minr))
194 {
195 minr = r;
196 }
197 }
198 return minr;
199 }
200
201
202
203
204
205
206
207
208
209 public static FloatTemperature valueOf(final String text) throws IllegalArgumentException
210 {
211 if (text == null || text.length() == 0)
212 {
213 throw new IllegalArgumentException("Error parsing FloatTemperature -- null or empty argument");
214 }
215 Matcher matcher = NUMBER_PATTERN.matcher(text);
216 if (matcher.find())
217 {
218 int index = matcher.end();
219 try
220 {
221 String unitString = text.substring(index).trim();
222 String valueString = text.substring(0, index).trim();
223 for (TemperatureUnit unit : Unit.getUnits(TemperatureUnit.class))
224 {
225 if (unit.getDefaultLocaleTextualRepresentations().contains(unitString))
226 {
227 float f = Float.parseFloat(valueString);
228 return new FloatTemperature(f, unit);
229 }
230 }
231 }
232 catch (Exception exception)
233 {
234 throw new IllegalArgumentException("Error parsing FloatTemperature from " + text, exception);
235 }
236 }
237 throw new IllegalArgumentException("Error parsing FloatTemperature from " + text);
238 }
239
240
241
242
243
244
245 public final FloatDimensionless divideBy(final FloatTemperature v)
246 {
247 return new FloatDimensionless(this.si / v.si, DimensionlessUnit.SI);
248 }
249
250 }