RobotCore
1.0
WPILib port to raspberry Pi
Toggle main menu visibility
Loading...
Searching...
No Matches
Unit.java
1
// Copyright (c) FIRST and other WPILib contributors.
2
// Open Source Software; you can modify and/or share it under the terms of
3
// the WPILib BSD license file in the root directory of this project.
4
5
package
org.wpilib.units;
6
7
import
java.util.Objects;
8
15
public
abstract
class
Unit
{
16
private
final
UnaryFunction
m_toBaseConverter;
17
private
final
UnaryFunction
m_fromBaseConverter;
18
19
private
final
Unit
m_baseUnit;
20
21
private
final
String m_name;
22
private
final
String m_symbol;
23
24
private
final
Measure<?>
m_zero;
25
private
final
Measure<?>
m_one;
26
37
@SuppressWarnings(
"this-escape"
)
38
protected
Unit
(
39
Unit
baseUnit,
40
UnaryFunction
toBaseConverter,
41
UnaryFunction
fromBaseConverter,
42
String
name
,
43
String
symbol
) {
44
m_baseUnit = baseUnit ==
null
? this : baseUnit;
45
m_toBaseConverter = Objects.requireNonNull(toBaseConverter);
46
m_fromBaseConverter = Objects.requireNonNull(fromBaseConverter);
47
m_name = Objects.requireNonNull(
name
);
48
m_symbol = Objects.requireNonNull(
symbol
);
49
50
m_zero =
of
(0);
51
m_one =
of
(1);
52
}
53
64
protected
Unit
(
Unit
baseUnit,
double
baseUnitEquivalent, String
name
, String
symbol
) {
65
this
(baseUnit, x -> x * baseUnitEquivalent, x -> x / baseUnitEquivalent,
name
,
symbol
);
66
}
67
76
public
abstract
Measure<?>
of
(
double
magnitude);
77
86
public
abstract
Measure<?>
ofBaseUnits
(
double
baseUnitMagnitude);
87
95
public
Measure<?>
zero
() {
96
return
m_zero;
97
}
98
106
public
Measure<?>
one
() {
107
return
m_one;
108
}
109
117
public
abstract
Unit
per
(
TimeUnit
time);
118
137
public
Unit
getBaseUnit
() {
138
return
m_baseUnit;
139
}
140
146
public
boolean
isBaseUnit
() {
147
return
this.equals(m_baseUnit);
148
}
149
156
public
double
fromBaseUnits
(
double
valueInBaseUnits) {
157
return
m_fromBaseConverter.apply(valueInBaseUnits);
158
}
159
166
public
double
toBaseUnits
(
double
valueInNativeUnits) {
167
return
m_toBaseConverter.apply(valueInNativeUnits);
168
}
169
176
public
UnaryFunction
getConverterToBase
() {
177
return
m_toBaseConverter;
178
}
179
186
public
UnaryFunction
getConverterFromBase
() {
187
return
m_fromBaseConverter;
188
}
189
198
public
boolean
equivalent
(
Unit
other) {
199
if
(!getClass().equals(other.getClass())) {
200
// different unit types, not compatible
201
return
false
;
202
}
203
204
double
arbitrary = 16_777.214;
// 2^24 / 1e3
205
206
return
Math.abs(
207
this.m_fromBaseConverter.apply(arbitrary)
208
- other.m_fromBaseConverter.
apply
(arbitrary))
209
<=
Measure.EQUIVALENCE_THRESHOLD
210
&& Math.abs(
211
this.m_toBaseConverter.apply(arbitrary) - other.m_toBaseConverter.
apply
(arbitrary))
212
<=
Measure
.
EQUIVALENCE_THRESHOLD
;
213
}
214
215
@Override
216
public
boolean
equals(Object o) {
217
return
this
== o
218
|| o instanceof
Unit
that
219
&& m_name.equals(that.m_name)
220
&& m_symbol.equals(that.m_symbol)
221
&& this.
equivalent
(that);
222
}
223
224
@Override
225
public
int
hashCode() {
226
return
Objects.hash(m_toBaseConverter, m_fromBaseConverter, m_name, m_symbol);
227
}
228
234
public
String
name
() {
235
return
m_name;
236
}
237
243
public
String
symbol
() {
244
return
m_symbol;
245
}
246
247
@Override
248
public
String toString() {
249
return
name
();
250
}
251
}
org.wpilib.units.TimeUnit
Definition
TimeUnit.java:18
org.wpilib.units.Unit
Definition
Unit.java:15
org.wpilib.units.Unit.zero
Measure<?> zero()
Definition
Unit.java:95
org.wpilib.units.Unit.one
Measure<?> one()
Definition
Unit.java:106
org.wpilib.units.Unit.Unit
Unit(Unit baseUnit, double baseUnitEquivalent, String name, String symbol)
Definition
Unit.java:64
org.wpilib.units.Unit.toBaseUnits
double toBaseUnits(double valueInNativeUnits)
Definition
Unit.java:166
org.wpilib.units.Unit.of
abstract Measure<?> of(double magnitude)
org.wpilib.units.Unit.name
String name()
Definition
Unit.java:234
org.wpilib.units.Unit.isBaseUnit
boolean isBaseUnit()
Definition
Unit.java:146
org.wpilib.units.Unit.getConverterToBase
UnaryFunction getConverterToBase()
Definition
Unit.java:176
org.wpilib.units.Unit.equivalent
boolean equivalent(Unit other)
Definition
Unit.java:198
org.wpilib.units.Unit.getConverterFromBase
UnaryFunction getConverterFromBase()
Definition
Unit.java:186
org.wpilib.units.Unit.symbol
String symbol()
Definition
Unit.java:243
org.wpilib.units.Unit.ofBaseUnits
abstract Measure<?> ofBaseUnits(double baseUnitMagnitude)
org.wpilib.units.Unit.getBaseUnit
Unit getBaseUnit()
Definition
Unit.java:137
org.wpilib.units.Unit.Unit
Unit(Unit baseUnit, UnaryFunction toBaseConverter, UnaryFunction fromBaseConverter, String name, String symbol)
Definition
Unit.java:38
org.wpilib.units.Unit.per
abstract Unit per(TimeUnit time)
org.wpilib.units.Unit.fromBaseUnits
double fromBaseUnits(double valueInBaseUnits)
Definition
Unit.java:156
org.wpilib.units.Measure<?>
org.wpilib.units.Measure.EQUIVALENCE_THRESHOLD
double EQUIVALENCE_THRESHOLD
Definition
Measure.java:46
org.wpilib.units.UnaryFunction
Definition
UnaryFunction.java:17
org.wpilib.units.UnaryFunction.apply
double apply(double input)
org
wpilib
units
Unit.java
Generated by
1.18.0