RobotCore
1.0
WPILib port to raspberry Pi
Toggle main menu visibility
Loading...
Searching...
No Matches
PerUnit.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
import
org.wpilib.units.measure.Per;
9
17
public
class
PerUnit<N
extends
Unit
, D extends
Unit
> extends
Unit
{
18
private
final
N m_numerator;
19
private
final
D m_denominator;
20
25
@SuppressWarnings(
"rawtypes"
)
26
private
static
final
CombinatoryUnitCache<Unit, Unit, PerUnit>
cache =
27
new
CombinatoryUnitCache<>
(PerUnit::new);
28
36
private
PerUnit(N
numerator
, D
denominator
) {
37
super(
38
numerator
.isBaseUnit() &&
denominator
.isBaseUnit()
39
?
null
40
:
combine
(
numerator
.getBaseUnit(),
denominator
.getBaseUnit()),
41
numerator
.toBaseUnits(1) /
denominator
.toBaseUnits(1),
42
numerator
.name() +
" per "
+
denominator
.name(),
43
numerator
.symbol() +
"/"
+
denominator
.symbol());
44
m_numerator =
numerator
;
45
m_denominator =
denominator
;
46
}
47
57
protected
PerUnit
(PerUnit<N, D> baseUnit, N
numerator
, D
denominator
) {
58
super(
59
baseUnit,
60
numerator
.
toBaseUnits
(1) /
denominator
.toBaseUnits(1),
61
numerator
.name() +
" per "
+
denominator
.name(),
62
numerator
.symbol() +
"/"
+
denominator
.symbol());
63
m_numerator =
numerator
;
64
m_denominator =
denominator
;
65
}
66
68
PerUnit
(
69
PerUnit<N, D>
baseUnit,
70
UnaryFunction
toBaseConverter,
71
UnaryFunction
fromBaseConverter,
72
String
name
,
73
String
symbol
) {
74
super(baseUnit, toBaseConverter, fromBaseConverter,
name
,
symbol
);
75
m_numerator =
getBaseUnit
().numerator();
76
m_denominator =
getBaseUnit
().denominator();
77
}
78
92
@SuppressWarnings(
"unchecked"
)
93
public static <N extends
Unit
, D extends
Unit
> PerUnit<N, D>
combine
(N
numerator
, D
denominator
) {
94
return
cache.combine(
numerator
,
denominator
);
95
}
96
97
@Override
98
@SuppressWarnings(
"unchecked"
)
99
public PerUnit<N, D>
getBaseUnit
() {
100
return
(PerUnit<N, D>) super.getBaseUnit();
101
}
102
108
public
N
numerator
() {
109
return
m_numerator;
110
}
111
117
public
D
denominator
() {
118
return
m_denominator;
119
}
120
126
@SuppressWarnings(
"unchecked"
)
127
public PerUnit<D, N>
reciprocal
() {
128
if
(m_numerator instanceof
TimeUnit
t) {
129
// Dividing by time, return a velocity
130
return
(PerUnit<D, N>)
VelocityUnit
.
combine
(m_denominator, t);
131
}
else
{
132
// Generic case
133
return
combine
(m_denominator, m_numerator);
134
}
135
}
136
143
public
N
mult
(D denom) {
144
if
(denom.equivalent(
denominator
())) {
145
return
numerator
();
146
}
147
148
return
Units
.derive(
numerator
())
149
.toBase(denom.getConverterToBase().div(
denominator
().
getConverterToBase
()))
150
.fromBase(denom.getConverterFromBase().div(
denominator
().
getConverterFromBase
()))
151
.named(
name
() +
" "
+ denom.name())
152
.symbol(
symbol
() +
"-"
+ denom.symbol())
153
.make();
154
}
155
166
@Override
167
public
Measure<? extends PerUnit<N, D>
>
of
(
double
magnitude) {
168
return
ofNative
(magnitude);
169
}
170
181
@Override
182
public
Measure<? extends PerUnit<N, D>
>
ofBaseUnits
(
double
baseUnitMagnitude) {
183
return
ofNativeBaseUnits
(baseUnitMagnitude);
184
}
185
194
public
final
Per<N, D>
ofNative
(
double
magnitude) {
195
return
new
Per<>(magnitude,
toBaseUnits
(magnitude),
this
);
196
}
197
206
public
final
Per<N, D>
ofNativeBaseUnits
(
double
baseUnitMagnitude) {
207
return
new
Per<>(
fromBaseUnits
(baseUnitMagnitude), baseUnitMagnitude,
this
);
208
}
209
210
@Override
211
@SuppressWarnings(
"unchecked"
)
212
public
Measure
<? extends PerUnit<N, D>>
zero
() {
213
return
(
Measure
<? extends PerUnit<N, D>>) super.zero();
214
}
215
216
@Override
217
@SuppressWarnings(
"unchecked"
)
218
public
Measure
<? extends PerUnit<N, D>>
one
() {
219
return
(
Measure
<? extends PerUnit<N, D>>) super.one();
220
}
221
222
@Override
223
public
Unit
per
(
TimeUnit
time) {
224
return
VelocityUnit
.
combine
(
this
, time);
225
}
226
234
public
double
convertFrom
(
double
magnitude, PerUnit<? extends N, ? extends D> otherUnit) {
235
return
fromBaseUnits
(otherUnit.
toBaseUnits
(magnitude));
236
}
237
238
@Override
239
public
boolean
equals(Object o) {
240
if
(
this
== o) {
241
return
true
;
242
}
243
if
(o ==
null
|| getClass() != o.getClass()) {
244
return
false
;
245
}
246
if
(!super.equals(o)) {
247
return
false
;
248
}
249
PerUnit<?, ?> perUnit = (PerUnit<?, ?>) o;
250
return
Objects.equals(m_numerator, perUnit.m_numerator)
251
&& Objects.equals(m_denominator, perUnit.m_denominator);
252
}
253
254
@Override
255
public
int
hashCode() {
256
return
Objects.hash(super.hashCode(), m_numerator, m_denominator);
257
}
258
}
org.wpilib.units.CombinatoryUnitCache
Definition
CombinatoryUnitCache.java:19
org.wpilib.units.CombinatoryUnitCache.CombinatoryUnitCache
CombinatoryUnitCache(BiFunction<? super A, ? super B, ? extends Out > constructor)
Definition
CombinatoryUnitCache.java:34
org.wpilib.units.PerUnit
Definition
PerUnit.java:17
org.wpilib.units.PerUnit.combine
static< N extends Unit, D extends Unit > PerUnit< N, D > combine(N numerator, D denominator)
Definition
PerUnit.java:93
org.wpilib.units.PerUnit.numerator
N numerator()
Definition
PerUnit.java:108
org.wpilib.units.PerUnit.reciprocal
PerUnit< D, N > reciprocal()
Definition
PerUnit.java:127
org.wpilib.units.PerUnit.getBaseUnit
PerUnit< N, D > getBaseUnit()
Definition
PerUnit.java:99
org.wpilib.units.PerUnit.ofNativeBaseUnits
final Per< N, D > ofNativeBaseUnits(double baseUnitMagnitude)
Definition
PerUnit.java:206
org.wpilib.units.PerUnit.denominator
D denominator()
Definition
PerUnit.java:117
org.wpilib.units.PerUnit.zero
Measure<? extends PerUnit< N, D > > zero()
Definition
PerUnit.java:212
org.wpilib.units.PerUnit.ofBaseUnits
Measure<? extends PerUnit< N, D > > ofBaseUnits(double baseUnitMagnitude)
Definition
PerUnit.java:182
org.wpilib.units.PerUnit.per
Unit per(TimeUnit time)
Definition
PerUnit.java:223
org.wpilib.units.PerUnit.of
Measure<? extends PerUnit< N, D > > of(double magnitude)
Definition
PerUnit.java:167
org.wpilib.units.PerUnit.PerUnit
PerUnit(PerUnit< N, D > baseUnit, N numerator, D denominator)
Definition
PerUnit.java:57
org.wpilib.units.PerUnit.one
Measure<? extends PerUnit< N, D > > one()
Definition
PerUnit.java:218
org.wpilib.units.PerUnit.mult
N mult(D denom)
Definition
PerUnit.java:143
org.wpilib.units.PerUnit.convertFrom
double convertFrom(double magnitude, PerUnit<? extends N, ? extends D > otherUnit)
Definition
PerUnit.java:234
org.wpilib.units.PerUnit.ofNative
final Per< N, D > ofNative(double magnitude)
Definition
PerUnit.java:194
org.wpilib.units.TimeUnit
Definition
TimeUnit.java:18
org.wpilib.units.Unit.toBaseUnits
double toBaseUnits(double valueInNativeUnits)
Definition
Unit.java:166
org.wpilib.units.Unit.name
String name()
Definition
Unit.java:234
org.wpilib.units.Unit.getConverterToBase
UnaryFunction getConverterToBase()
Definition
Unit.java:176
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.Unit
Unit(Unit baseUnit, UnaryFunction toBaseConverter, UnaryFunction fromBaseConverter, String name, String symbol)
Definition
Unit.java:38
org.wpilib.units.Unit.fromBaseUnits
double fromBaseUnits(double valueInBaseUnits)
Definition
Unit.java:156
org.wpilib.units.Units
Definition
Units.java:10
org.wpilib.units.VelocityUnit
Definition
VelocityUnit.java:19
org.wpilib.units.VelocityUnit.combine
static< D extends Unit > VelocityUnit< D > combine(D unit, TimeUnit period)
Definition
VelocityUnit.java:52
org.wpilib.units.Measure
Definition
Measure.java:41
org.wpilib.units.UnaryFunction
Definition
UnaryFunction.java:17
org
wpilib
units
PerUnit.java
Generated by
1.18.0