Package edu.wpi.first.units
Interface Measure<U extends Unit<U>>
 Type Parameters:
U
 the unit type of the measure
 All Superinterfaces:
Comparable<Measure<U>>
 All Known Implementing Classes:
ImmutableMeasure
,MutableMeasure
public interface Measure<U extends Unit<U>> extends Comparable<Measure<U>>
A measure holds the magnitude and unit of some dimension, such as distance, time, or speed. Two
measures with the same unit and magnitude are effectively equivalent objects.

Field Summary
Fields Modifier and Type Field Description static double
EQUIVALENCE_THRESHOLD
The threshold for two measures to be considered equivalent if converted to the same unit. 
Method Summary
Modifier and Type Method Description double
baseUnitMagnitude()
Gets the magnitude of this measure in terms of the base unit.default int
compareTo(Measure<U> o)
Measure<U>
copy()
Returns an immutable copy of this measure.default Measure<U>
divide(double divisor)
Divides this measurement by some constant divisor and returns the result.default Measure<U>
divide(Measure<Dimensionless> divisor)
Divides this measurement by some constant divisor and returns the result.default boolean
gt(Measure<U> o)
Checks if this measure is greater than another measure of the same unit.default boolean
gte(Measure<U> o)
Checks if this measure is greater than or equivalent to another measure of the same unit.default double
in(Unit<U> unit)
Converts this measure to a measure with a different unit of the same type, eg minutes to seconds.default boolean
isEquivalent(Measure<?> other)
Checks if this measure is equivalent to another measure of the same unit.default boolean
isNear(Measure<?> other, double varianceThreshold)
Checks if this measure is near another measure of the same unit.default boolean
lt(Measure<U> o)
Checks if this measure is less than another measure of the same unit.default boolean
lte(Measure<U> o)
Checks if this measure is less than or equivalent to another measure of the same unit.double
magnitude()
Gets the unitless magnitude of this measure.static <U extends Unit<U>>
Measure<U>max(Measure<U>... measures)
Returns the measure with the absolute value closest to positive infinity.static <U extends Unit<U>>
Measure<U>min(Measure<U>... measures)
Returns the measure with the absolute value closest to negative infinity.default Measure<U>
minus(Measure<U> other)
Subtracts another measure from this one.default MutableMeasure<U>
mutableCopy()
Creates a new mutable copy of this measure.default Measure<U>
negate()
Negates this measure and returns the result.default Measure<Velocity<U>>
per(Measure<Time> period)
Creates a velocity measure by dividing this one by a time period measure.default Measure<Velocity<U>>
per(Time time)
Creates a velocity measure equivalent to this one per a unit of time.default <U2 extends Unit<U2>>
Measure<Per<U,U2>>per(U2 denominator)
Creates a relational measure equivalent to this one per some other unit.default Measure<U>
plus(Measure<U> other)
Adds another measure to this one.default Measure<U>
times(double multiplier)
Multiplies this measurement by some constant multiplier and returns the result.default <U2 extends Unit<U2>>
Measure<?>times(Measure<U2> other)
Generates a new measure that is equal to this measure multiplied by another.default String
toLongString()
Returns a string representation of this measurement in a longhand form.default String
toShortString()
Returns a string representation of this measurement in a shorthand form.U
unit()
Gets the units of this measure.

Field Details

EQUIVALENCE_THRESHOLD
The threshold for two measures to be considered equivalent if converted to the same unit. This is only needed due to floatingpoint error. See Also:
 Constant Field Values


Method Details

magnitude
double magnitude()Gets the unitless magnitude of this measure. Returns:
 the magnitude in terms of
the unit
.

baseUnitMagnitude
double baseUnitMagnitude()Gets the magnitude of this measure in terms of the base unit. If the unit is the base unit for its system of measure, then the value will be equivalent tomagnitude()
. Returns:
 the magnitude in terms of the base unit

unit
Gets the units of this measure. Returns:
 the unit

in
Converts this measure to a measure with a different unit of the same type, eg minutes to seconds. Converting to the same unit is equivalent to callingmagnitude()
.Meters.of(12).in(Feet) // 39.3701 Seconds.of(15).in(Minutes) // 0.25
 Parameters:
unit
 the unit to convert this measure to Returns:
 the value of this measure in the given unit

times
Multiplies this measurement by some constant multiplier and returns the result. The magnitude of the result will be the base magnitude multiplied by the scalar value. If the measure uses a unit with a nonlinear relation to its base unit (such as Fahrenheit for temperature), then the result will only be a multiple in terms of the base unit. Parameters:
multiplier
 the constant to multiply by Returns:
 the resulting measure

times
Generates a new measure that is equal to this measure multiplied by another. Some dimensional analysis is performed to reduce the units down somewhat; for example, multiplying aMeasure<Time>
by aMeasure<Velocity<Distance>>
will return just aMeasure<Distance>
instead of the naiveMeasure<Mult<Time, Velocity<Distance>>
. This is not guaranteed to perform perfect dimensional analysis. Type Parameters:
U2
 the type of the other measure to multiply by Parameters:
other
 the unit to multiply by Returns:
 the multiplicative unit

divide
Divides this measurement by some constant divisor and returns the result. This is equivalent totimes(1 / divisor)
 Parameters:
divisor
 the constant to divide by Returns:
 the resulting measure
 See Also:
times(double)

divide
Divides this measurement by some constant divisor and returns the result. This is equivalent todivide(divisor.baseUnitMagnitude())
 Parameters:
divisor
 the dimensionless measure to divide by Returns:
 the resulting measure
 See Also:
divide(double)
,times(double)

per
Creates a velocity measure by dividing this one by a time period measure.Meters.of(1).per(Second) // Measure<Velocity<Distance>>
 Parameters:
period
 the time period to divide by. Returns:
 the velocity result

per
Creates a relational measure equivalent to this one per some other unit.Volts.of(1.05).per(Meter) // V/m, potential PID constant
 Type Parameters:
U2
 the type of the denominator unit Parameters:
denominator
 the denominator unit being divided by Returns:
 the relational measure

per
Creates a velocity measure equivalent to this one per a unit of time.Radians.of(3.14).per(Second) // Velocity<Angle> equivalent to RadiansPerSecond.of(3.14)
 Parameters:
time
 the unit of time Returns:
 the velocity measure

plus
Adds another measure to this one. The resulting measure has the same unit as this one. Parameters:
other
 the measure to add to this one Returns:
 a new measure containing the result

minus
Subtracts another measure from this one. The resulting measure has the same unit as this one. Parameters:
other
 the measure to subtract from this one Returns:
 a new measure containing the result

negate
Negates this measure and returns the result. Returns:
 the resulting measure

copy
Returns an immutable copy of this measure. The copy can be used freely and is guaranteed never to change. Returns:
 the copied measure

mutableCopy
Creates a new mutable copy of this measure. Returns:
 a mutable measure initialized to be identical to this measure

isNear
Checks if this measure is near another measure of the same unit. Provide a variance threshold for use for a +/ scalar, such as 0.05 for +/ 5%.Inches.of(11).isNear(Inches.of(10), 0.1) // true Inches.of(12).isNear(Inches.of(10), 0.1) // false
 Parameters:
other
 the other measurement to compare againstvarianceThreshold
 the acceptable variance threshold, in terms of an acceptable +/ error range multiplier. Checking if a value is within 10% means a value of 0.1 should be passed; checking if a value is within 1% means a value of 0.01 should be passed, and so on. Returns:
 true if this unit is near the other measure, otherwise false

isEquivalent
Checks if this measure is equivalent to another measure of the same unit. Parameters:
other
 the measure to compare to Returns:
 true if this measure is equivalent, false otherwise

compareTo
 Specified by:
compareTo
in interfaceComparable<U extends Unit<U>>

gt
Checks if this measure is greater than another measure of the same unit. Parameters:
o
 the other measure to compare to Returns:
 true if this measure has a greater equivalent magnitude, false otherwise

gte
Checks if this measure is greater than or equivalent to another measure of the same unit. Parameters:
o
 the other measure to compare to Returns:
 true if this measure has an equal or greater equivalent magnitude, false otherwise

lt
Checks if this measure is less than another measure of the same unit. Parameters:
o
 the other measure to compare to Returns:
 true if this measure has a lesser equivalent magnitude, false otherwise

lte
Checks if this measure is less than or equivalent to another measure of the same unit. Parameters:
o
 the other measure to compare to Returns:
 true if this measure has an equal or lesser equivalent magnitude, false otherwise

max
Returns the measure with the absolute value closest to positive infinity. Type Parameters:
U
 the type of the units of the measures Parameters:
measures
 the set of measures to compare Returns:
 the measure with the greatest positive magnitude, or null if no measures were provided

min
Returns the measure with the absolute value closest to negative infinity. Type Parameters:
U
 the type of the units of the measures Parameters:
measures
 the set of measures to compare Returns:
 the measure with the greatest negative magnitude

toShortString
Returns a string representation of this measurement in a shorthand form. The symbol of the backing unit is used, rather than the full name, and the magnitude is represented in scientific notation. Returns:
 the short form representation of this measurement

toLongString
Returns a string representation of this measurement in a longhand form. The name of the backing unit is used, rather than its symbol, and the magnitude is represented in a full string, not scientific notation. (Very large values may be represented in scientific notation, however) Returns:
 the long form representation of this measurement
