Q
- The Quantity (unit type, such as Length or Volume) of this parameter.public final class Parameter<Q extends Quantity> extends java.lang.Object implements Measurable<Q>, Field<Parameter<Q>>, javolution.lang.ValueType, javolution.lang.Realtime, javolution.xml.XMLSerializable
The nature of an amount can be deduced from its parameterization (compile time) or its unit (run time)..
Operations between different amounts may or may not be authorized based upon the
current PhysicalModel. For example, adding Parameter<Length>
and
Parameter<Duration>
is not allowed by the StandardModel, but is
authorized with the RelativisticModel.
Modified by: Joseph A. Huwaldt
Modifier and Type | Field and Description |
---|---|
static double |
EPS
The machine epsilon or unit roundoff for
double in the Java
environment. |
static double |
EPS10
Ten times the machine epsilon or unit roundoff for
double in the Java
environment. |
static Parameter<Angle> |
HALFPI_ANGLE
An angular measure of
pi/2 or 90 degrees. |
static Parameter<Dimensionless> |
ONE
Holds a dimensionless measure of one.
|
static Parameter<Angle> |
PI_ANGLE
An angular measure of
pi or 180 degrees. |
static double |
SQRT_EPS
The square-root of EPS.
|
static Parameter<Angle> |
TWOPI_ANGLE
An angular measure of
2*pi or 360 degrees. |
static Parameter<Dimensionless> |
ZERO
Holds a dimensionless measure of zero.
|
static Parameter<Acceleration> |
ZERO_ACCELERATION
An acceleration measure of zero.
|
static Parameter<Angle> |
ZERO_ANGLE
An angular measure of zero.
|
static Parameter<Area> |
ZERO_AREA
An area measure of zero.
|
static Parameter<Duration> |
ZERO_DURATION
A duration measure of zero.
|
static Parameter<Force> |
ZERO_FORCE
A force measure of zero.
|
static Parameter<Length> |
ZERO_LENGTH
An length measure of zero.
|
static Parameter<Velocity> |
ZERO_VELOCITY
An velocity measure of zero.
|
static Parameter<Volume> |
ZERO_VOLUME
A volume measure of zero.
|
Modifier and Type | Method and Description |
---|---|
Parameter<Q> |
abs()
Returns the absolute value of this measure.
|
static Parameter<Angle> |
acos(Parameter<Dimensionless> x)
Returns the arc cosine of the specified value, in the range of
ZERO_ANGLE through PI_ANGLE . |
static Parameter<Angle> |
asin(Parameter<Dimensionless> x)
Returns the arc sine of the specified value, in the range of
-HALFPI_ANGLE through HALFPI_ANGLE . |
<T extends Quantity> |
asType(java.lang.Class<T> type)
Casts this Parameter to a parameterized unit of specified nature or throw a
ClassCastException if the dimension of the specified quantity and this
parameter's unit dimension do not match. |
static Parameter<Angle> |
atan(Parameter<Dimensionless> x)
Returns the arc tangent of the specified value, in the range of
-HALFPI_ANGLE through HALFPI_ANGLE . |
static <R extends Quantity> |
atan2(Parameter<R> y,
Parameter<R> x)
Returns the angle theta such that (x == cos(theta)) && (y == sin(theta)).
|
int |
compareTo(Measurable<Q> that)
Compares this measure with the specified measurable object.
|
static UnitConverter |
converterOf(Unit<?> left,
Unit<?> right)
Returns a unit converter that will convert between the specified units.
|
Parameter<Q> |
copy()
Returns a copy of this Parameter allocated by the calling thread (possibly on the stack).
|
static Parameter<Dimensionless> |
cos(Parameter<Angle> angle)
Returns the trigonometric cosine of the specified angle.
|
Parameter<Q> |
divide(double divisor)
Returns this measure divided by the specified approximate divisor (dimensionless).
|
Parameter<? extends Quantity> |
divide(Parameter<?> that)
Returns this measure divided by the one specified.
|
double |
doubleValue(Unit<Q> unit)
Returns the value of this measurable stated in the specified unit as a
double . |
boolean |
equals(java.lang.Object that)
Compares this parameter against the specified object for strict equality (same
value and same units).
|
Unit<Q> |
getUnit()
Returns the unit in which the
value is stated. |
double |
getValue()
Returns the value for this measure stated in this measure's
unit . |
double |
getValue(Unit<Q> unit)
Returns the value of this measurable stated in the specified unit as a
double . |
int |
hashCode()
Returns the hash code for this parameter.
|
Parameter<Q> |
inverse()
Returns the multiplicative inverse of this measure.
|
boolean |
isApproxEqual(Parameter<Q> that)
Compares this measure with that measure for approximate equality.
|
boolean |
isApproxEqual(Parameter<Q> that,
Parameter<Q> tol)
Compares this measure with that measure for approximate equality.
|
boolean |
isApproxZero()
Compares this measure with zero for approximate equality.
|
boolean |
isGreaterThan(Parameter<Q> that)
Indicates if this measure is ordered after that measure (independently of the
measure unit).
|
boolean |
isInfinite()
Returns
true if this Parameter value is infinitely large
in magnitude, false otherwise. |
boolean |
isLargerThan(Parameter<Q> that)
Compares this measure with that measure ignoring the sign.
|
boolean |
isLessThan(Parameter<Q> that)
Indicates if this measure is ordered before that measure (independently of the
measure unit).
|
boolean |
isNaN()
Returns
true if this Parameter value is a Not-a-Number
(NaN), false otherwise. |
long |
longValue(Unit<Q> unit)
Returns the estimated integer value of this measurable stated in the specified unit
as a
long . |
static void |
main(java.lang.String[] args)
Testing code for this class.
|
Parameter<Q> |
max(Parameter<Q> that)
Returns the maximum of this parameter and the specified one.
|
Parameter<Q> |
min(Parameter<Q> that)
Returns the minimum of this parameter and the specified one.
|
Parameter<Q> |
minus(Parameter<Q> that)
Returns the difference of this measure with the one specified.
|
Parameter<Q> |
opposite()
Returns the opposite of this measure.
|
Parameter<Q> |
plus(Parameter<Q> that)
Returns the sum of this measure with the one specified.
|
Parameter<? extends Quantity> |
pow(int exp)
Returns this measure raised at the specified exponent.
|
static Unit<?> |
productOf(Unit<?> left,
Unit<?> right)
Returns the product of the two input units.
|
Parameter<? extends Quantity> |
root(int n)
Returns the given root of this measure.
|
Parameter<Q> |
round()
Return a new parameter with the value of this parameter rounded to the nearest ones
place.
|
Parameter<Q> |
roundToPlace(int place)
Return a new parameter with the value of this parameter rounded to the specified
decimal place.
|
static Parameter<Dimensionless> |
sin(Parameter<Angle> angle)
Returns the trigonometric sine of the specified angle.
|
Parameter<? extends Quantity> |
sqrt()
Returns the square root of this measure.
|
static Parameter<Dimensionless> |
tan(Parameter<Angle> angle)
Returns the trigonometric tangent of the specified angle.
|
Parameter<Q> |
times(double factor)
Returns this measure scaled by the specified approximate factor (dimensionless).
|
Parameter |
times(Parameter that)
Returns the product of this measure with the one specified.
|
<R extends Quantity> |
to(Unit<R> unit)
Returns the measure equivalent to this measure but stated in the specified unit.
|
java.lang.String |
toString()
Returns the text representation of this parameter as a
java.lang.String . |
javolution.text.Text |
toText()
Returns the text representation of this parameter.
|
static Parameter<?> |
valueOf(java.lang.CharSequence csq)
Returns the measure represented by the specified character sequence.
|
static <Q extends Quantity> |
valueOf(double value,
Unit<Q> unit)
Returns the measure corresponding to a value (
double ) stated in the
specified unit. |
public static final double EPS
double
in the Java
environment. Machine epsilon gives an upper bound on the relative error due to
rounding in floating point arithmetic.public static final double EPS10
double
in the Java
environment. This is 10*EPS.EPS
public static final Parameter<Dimensionless> ZERO
public static final Parameter<Dimensionless> ONE
public static final Parameter<Angle> ZERO_ANGLE
public static final Parameter<Angle> HALFPI_ANGLE
pi/2
or 90 degrees.public static final Parameter<Angle> TWOPI_ANGLE
2*pi
or 360 degrees.public static final Parameter<Length> ZERO_LENGTH
public static final Parameter<Volume> ZERO_VOLUME
public static final Parameter<Velocity> ZERO_VELOCITY
public static final Parameter<Acceleration> ZERO_ACCELERATION
public static final Parameter<Duration> ZERO_DURATION
public static final Parameter<Force> ZERO_FORCE
public static <Q extends Quantity> Parameter<Q> valueOf(double value, Unit<Q> unit)
double
) stated in the
specified unit.Q
- The Quantity (unit type) of this parameter.value
- the value stated in the specified unit.unit
- the unit in which the value is stated.public static Parameter<?> valueOf(java.lang.CharSequence csq)
csq
- the character sequence.ParameterFormat.newInstance().parse(csq)
public Unit<Q> getUnit()
value
is stated.public double getValue()
unit
.public <R extends Quantity> Parameter<R> to(Unit<R> unit) throws ConversionException
R
- The Quantity (unit type) to convert this parameter to.unit
- the unit of the measure to be returned.ConversionException
- if the current model does not allows for conversion to
the specified unit.public final <T extends Quantity> Parameter<T> asType(java.lang.Class<T> type) throws java.lang.ClassCastException
ClassCastException
if the dimension of the specified quantity and this
parameter's unit dimension do not match.T
- The Quantity (unit type) to cast this parameter as.type
- the quantity class identifying the nature of the unit.java.lang.ClassCastException
- if the dimension of this parameter's unit is different
from the specified quantity dimension.java.lang.UnsupportedOperationException
- if the specified quantity class does not have
a public static field named "UNIT" holding the standard unit for the quantity.public Parameter<Q> opposite()
opposite
in interface GroupAdditive<Parameter<Q extends Quantity>>
-this
.public Parameter<Q> plus(Parameter<Q> that) throws ConversionException
plus
in interface GroupAdditive<Parameter<Q extends Quantity>>
that
- the measure to be added.this + that
.ConversionException
- if the current model does not allows for these
quantities to be added.public Parameter<Q> minus(Parameter<Q> that) throws ConversionException
that
- the measure to be subtracted.this - that
.ConversionException
- if the current model does not allows for these
quantities to be subtracted.public Parameter<Q> times(double factor)
factor
- the scaling factor.this · factor
.public Parameter times(Parameter that)
public Parameter<Q> inverse()
inverse
in interface GroupMultiplicative<Parameter<Q extends Quantity>>
1 / this
.public Parameter<Q> divide(double divisor)
divisor
- the approximated divisor.this / divisor
.public Parameter<? extends Quantity> divide(Parameter<?> that)
that
- the measure divisor.this / that
.public Parameter<? extends Quantity> sqrt()
sqrt(this)
public Parameter<? extends Quantity> root(int n)
n
- the root's order (n != 0).java.lang.ArithmeticException
- if n == 0
.public Parameter<? extends Quantity> pow(int exp)
exp
- the exponent.thisexp
public int compareTo(Measurable<Q> that)
compareTo
in interface java.lang.Comparable<Measurable<Q extends Quantity>>
that
- the measure to compare with.ConversionException
- if the current model does not allows for these measure
to be compared.public boolean equals(java.lang.Object that)
equals
in class java.lang.Object
that
- the object to compare with.true
if this measure is identical to that measure;
false
otherwise.public int hashCode()
hashCode
in class java.lang.Object
public boolean isLessThan(Parameter<Q> that)
that
- The measure being compared with this one.public boolean isGreaterThan(Parameter<Q> that)
that
- The measure being compared with this one.public boolean isLargerThan(Parameter<Q> that)
that
- The measure being compared with this one.|this| > |that|
public boolean isApproxEqual(Parameter<Q> that)
that
- The measure being compared with this one.this ~= that
public boolean isApproxEqual(Parameter<Q> that, Parameter<Q> tol)
that
- The measure being compared with this one.tol
- The tolerance used to determine floating point equality. If
null
is passed, then a tolerance of machine epsilon is
assumed.this ~= that
public boolean isApproxZero()
this ~= 0
public Parameter<Q> min(Parameter<Q> that)
that
- The measure being compared with this one.public Parameter<Q> max(Parameter<Q> that)
that
- The measure being compared with this one.public Parameter<Q> round()
public Parameter<Q> roundToPlace(int place)
place
- Number of decimal places to round the value to. A place of 1 rounds to
10's place, 2 to 100's place, -2 to 1/100th place, et cetera.public boolean isNaN()
true
if this Parameter
value is a Not-a-Number
(NaN), false
otherwise.true
if the value represented by this object is NaN;
false
otherwise.public boolean isInfinite()
true
if this Parameter
value is infinitely large
in magnitude, false
otherwise.true
if the value represented by this object is positive
infinity or negative infinity; false
otherwise.public javolution.text.Text toText()
toText
in interface javolution.lang.Realtime
ParameterFormat.newInstance().format(this)
public final java.lang.String toString()
java.lang.String
.toString
in class java.lang.Object
toText().toString()
public double doubleValue(Unit<Q> unit)
double
. This is an alternate to getValue(unit).doubleValue
in interface Measurable<Q extends Quantity>
unit
- the unit in which this measurable value is stated.double
.getValue(javax.measure.unit.Unit)
,
getValue()
public double getValue(Unit<Q> unit)
double
.unit
- the unit in which this measurable value is stated.double
.getValue()
public final long longValue(Unit<Q> unit)
long
.
Note: This method differs from the Number.longValue()
in the sense
that the closest integer value is returned and an ArithmeticException is raised
instead of a bit truncation in case of overflow (safety critical).
longValue
in interface Measurable<Q extends Quantity>
unit
- the unit in which the measurable value is stated.long
.java.lang.ArithmeticException
- if this quantity cannot be represented as a
long
number in the specified unit.public Parameter<Q> copy()
copy
in interface javolution.lang.ValueType
public static Parameter<Dimensionless> cos(Parameter<Angle> angle)
angle
- The angle to calculate the cosine of.public static Parameter<Dimensionless> sin(Parameter<Angle> angle)
angle
- The angle to calculate the sine of.public static Parameter<Dimensionless> tan(Parameter<Angle> angle)
angle
- The angle to calculate the tangent of.public static Parameter<Angle> asin(Parameter<Dimensionless> x)
-HALFPI_ANGLE
through HALFPI_ANGLE
.x
- The value to calculate the inverse-sine of.public static Parameter<Angle> acos(Parameter<Dimensionless> x)
ZERO_ANGLE
through PI_ANGLE
.x
- The value to calculate the inverse-cosine of.public static Parameter<Angle> atan(Parameter<Dimensionless> x)
-HALFPI_ANGLE
through HALFPI_ANGLE
.x
- The value to calculate the inverse-tangent of.public static <R extends Quantity> Parameter<Angle> atan2(Parameter<R> y, Parameter<R> x)
R
- The Quantity (unit type) of the input parameters.y
- The the ordinate coordinate.x
- The the abscissa coordinate.public static Unit<?> productOf(Unit<?> left, Unit<?> right)
left
- The left unit to multiply by the right unit.right
- The right unit to multiply by the left unit.public static UnitConverter converterOf(Unit<?> left, Unit<?> right) throws ConversionException
left
- The unit to convert from.right
- The unit to convert to.ConversionException
public static void main(java.lang.String[] args)
args
- Command line arguments (not used).