visad
Class DerivedUnit

java.lang.Object
  extended by visad.Unit
      extended by visad.DerivedUnit
All Implemented Interfaces:
Serializable

public final class DerivedUnit
extends Unit
implements Serializable

A class that represents a unit consisting of zero or more base units. Instances are immutable.

Author:
Steven R. Emmerson This is part of Steve Emmerson's Unit package that has been incorporated into VisAD.
See Also:
Serialized Form

Field Summary
 
Fields inherited from class visad.Unit
hashCode
 
Constructor Summary
DerivedUnit()
          Construct a dimensionless derived unit.
DerivedUnit(BaseUnit baseUnit)
          Construct a derived unit from a base unit.
DerivedUnit(BaseUnit[] baseUnits, int[] powers)
          Construct a derived unit from an array base units and powers.
DerivedUnit(BaseUnit[] baseUnits, int[] powers, String identifier)
          Construct a derived unit from an array base units, powers, and an identifier.
DerivedUnit(DerivedUnit that, String identifier)
          Construct a derived unit from a derived unit and an identifier.
DerivedUnit(String identifier)
          Construct a dimensionless derived unit with an identifier.
 
Method Summary
 Unit divide(Unit that)
          Divide a derived unit by another unit.
protected  Unit divideInto(Unit that)
          Divide a derived unit into another unit.
 boolean equals(Unit unit)
          Indicates if this instance equals a unit.
 String getDefinition()
          Return the definition of this unit.
 DerivedUnit getDerivedUnit()
          Returns the derived unit that underlies this unit.
 int hashCode()
          Returns the hash code of this instance.
 boolean isConvertible(Unit unit)
          Indicate whether this unit is convertible with another unit.
 boolean isDimensionless()
           Indicates if this instance is dimensionless.
 Unit log(double base)
          Returns the logarithmic unit that has this unit as its reference level.
static void main(String[] args)
          Test this class.
 Unit multiply(DerivedUnit that)
          Multiply a derived unit by a derived unit.
 Unit multiply(Unit that)
          Multiply a derived unit by another unit.
protected static visad.Factor[] newFactors(BaseUnit[] baseUnits, int[] powers)
          Creates an array of Factor-s from arrays of base units and powers.
 Unit pow(double power)
          Raise a derived unit to a power.
 Unit pow(int power)
          Raise a derived unit to a power.
protected  Unit protectedClone(String identifier)
          Clones this unit, changing the identifier.
 Unit root(int root)
          Returns the N-th root of this unit.
 Unit scale(double amount)
          Scale this unit by an amount.
 Unit shift(double offset)
          Shift this unit by an amount.
 double[] toThat(double[] values, Unit that)
          Convert values from this unit to another unit.
 double[] toThat(double[] values, Unit that, boolean copy)
          Convert values from this unit to another unit.
 float[] toThat(float[] values, Unit that)
          Convert values from this unit to another unit.
 float[] toThat(float[] values, Unit that, boolean copy)
          Convert values from this unit to another unit.
 double[] toThis(double[] values, Unit that)
          Convert values to this unit from another unit.
 double[] toThis(double[] values, Unit that, boolean copy)
          Convert values to this unit from another unit.
 float[] toThis(float[] values, Unit that)
          Convert values to this unit from another unit.
 float[] toThis(float[] values, Unit that, boolean copy)
          Convert values to this unit from another unit.
 
Methods inherited from class visad.Unit
adjustCheckAndCache, canConvert, canConvertArray, clone, convertTuple, convertTuple, convertTuple, convertTuple, copyUnitsArray, equals, getAbsoluteUnit, getIdentifier, sqrt, toString, toThat, toThis, transformUnits, transformUnits, transformUnits, transformUnits
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Constructor Detail

DerivedUnit

public DerivedUnit()
Construct a dimensionless derived unit. The identifier of the unit will be empty.


DerivedUnit

public DerivedUnit(String identifier)
Construct a dimensionless derived unit with an identifier.

Parameters:
identifier - Name or abbreviation for the unit. May be null or empty.

DerivedUnit

public DerivedUnit(BaseUnit baseUnit)
Construct a derived unit from a base unit. The identifier of the unit will be that of the base unit.

Parameters:
baseUnit - The base unit.

DerivedUnit

public DerivedUnit(BaseUnit[] baseUnits,
                   int[] powers)
Construct a derived unit from an array base units and powers. The identifier of the unit with be that of the base unit if there's only one base unit; otherwise, the identifier will be null.

Parameters:
baseUnits - The array of base units (e.g. {m, s}).
powers - The array of powers (e.g. {1, -1} to create a m/s unit).

DerivedUnit

public DerivedUnit(BaseUnit[] baseUnits,
                   int[] powers,
                   String identifier)
Construct a derived unit from an array base units, powers, and an identifier.

Parameters:
baseUnits - The array of base units (e.g. {m, s}).
powers - The array of powers (e.g. {1, -1} to create a m/s unit).
identifier - Name or abbreviation for the unit. May be null or empty.

DerivedUnit

public DerivedUnit(DerivedUnit that,
                   String identifier)
Construct a derived unit from a derived unit and an identifier.

Parameters:
that - The derived unit.
identifier - Name or abbreviation for the unit. May be null or empty.
Method Detail

newFactors

protected static visad.Factor[] newFactors(BaseUnit[] baseUnits,
                                           int[] powers)
Creates an array of Factor-s from arrays of base units and powers.

Parameters:
baseUnits - The array of base units (e.g. {m, s}).
powers - The array of powers (e.g. {1, -1} to create a m/s unit).
Returns:
An array of Factors equivalent to the given base units and powers.

isDimensionless

public boolean isDimensionless()

Indicates if this instance is dimensionless. A unit is dimensionless if it is a measure of a dimensionless quantity like angle or concentration. Examples of dimensionless units include radian, degree, steradian, and "g/kg".

Specified by:
isDimensionless in class Unit
Returns:
True if an only if this unit is dimensionless.

protectedClone

protected Unit protectedClone(String identifier)
Clones this unit, changing the identifier.

Specified by:
protectedClone in class Unit
Parameters:
identifier - The name or abbreviation for the cloned unit. May be null or empty.
Returns:
A unit equal to this unit but with the given identifier.

scale

public Unit scale(double amount)
           throws UnitException
Scale this unit by an amount.

Specified by:
scale in class Unit
Parameters:
amount - The amount by which to scale this unit. E.g. Unit yard = meter.scale(0.9144);
Returns:
A unit equal this this unit scaled by the given amount.
Throws:
UnitException - This unit cannot be scaled.

shift

public Unit shift(double offset)
           throws UnitException
Shift this unit by an amount.

Specified by:
shift in class Unit
Parameters:
offset - The amount by which to shift this unit. E.g. Unit celsius = kelvin.shift(273.15);
Returns:
A unit equal to this unit with the origin shifted to the given point.
Throws:
UnitException - The unit subclass is unknown.

log

public Unit log(double base)
Description copied from class: Unit
Returns the logarithmic unit that has this unit as its reference level. Not all units can be used as a reference level.

Specified by:
log in class Unit
Parameters:
base - The logarithmic base: one of 2, Math.E, or 10.
Returns:
The logarithmic unit that has this instance as its reference level.

pow

public Unit pow(int power)
Raise a derived unit to a power.

Specified by:
pow in class Unit
Parameters:
power - The power to raise this unit by.
Returns:
The unit resulting from raising this unit to power.
Promise:
The unit has not been modified.

root

public Unit root(int root)
          throws IllegalArgumentException
Returns the N-th root of this unit.

Specified by:
root in class Unit
Parameters:
root - The root to take (e.g. 2 means square root). May not be zero.
Returns:
The unit corresponding to the root-th root of this unit.
Throws:
IllegalArgumentException - root is zero or the result would have a non-integral unit dimension.
Promise:
The unit has not been modified.

pow

public Unit pow(double power)
         throws IllegalArgumentException
Raise a derived unit to a power.

Specified by:
pow in class Unit
Parameters:
power - The power to raise this unit by. If this unit is not dimensionless, then the value must be an integer or the reciprocal of an integer.
Returns:
The unit resulting from raising this unit to power.
Throws:
IllegalArgumentException - This unit is not dimensionless and power is neither an integer nor the reciprocal of an integer.
Promise:
The unit has not been modified.

getDefinition

public String getDefinition()
Return the definition of this unit.

Specified by:
getDefinition in class Unit
Returns:
The definition of this unit (e.g. "m.s-1").

main

public static void main(String[] args)
                 throws UnitException
Test this class.

Parameters:
args - Arguments (ignored).
Throws:
UnitException - A problem occurred.

multiply

public Unit multiply(Unit that)
              throws UnitException
Multiply a derived unit by another unit.

Specified by:
multiply in class Unit
Parameters:
that - The unit with which to multiply this unit.
Returns:
The product of the two units.
Throws:
UnitException - Meaningless operation.
Promise:
Neither unit has been modified.

multiply

public Unit multiply(DerivedUnit that)
Multiply a derived unit by a derived unit.

Parameters:
that - The derived unit with which to multiply this unit.
Returns:
The product of the two units.
Promise:
Neither unit has been modified.

divide

public Unit divide(Unit that)
            throws UnitException
Divide a derived unit by another unit.

Specified by:
divide in class Unit
Parameters:
that - The unit to divide into this unit.
Returns:
The quotient of the two units.
Throws:
UnitException - Meaningless operation.
Promise:
Neither unit has been modified.

divideInto

protected Unit divideInto(Unit that)
                   throws UnitException
Divide a derived unit into another unit.

Specified by:
divideInto in class Unit
Parameters:
that - The unit to be divided by this unit.
Returns:
The quotient of the two units.
Throws:
UnitException - Meaningless operation.
Promise:
Neither unit has been modified.

toThis

public double[] toThis(double[] values,
                       Unit that)
                throws UnitException
Convert values to this unit from another unit.

Specified by:
toThis in class Unit
Parameters:
values - The values to be converted.
that - The unit of values.
Returns:
The converted values in units of this unit.
Throws:
UnitException - The units are not convertible.
Promise:
Neither unit has been modified.
Requirements:
The units are convertible.

toThis

public float[] toThis(float[] values,
                      Unit that)
               throws UnitException
Convert values to this unit from another unit.

Specified by:
toThis in class Unit
Parameters:
values - The values to be converted.
that - The unit of values.
Returns:
The converted values in units of this unit.
Throws:
UnitException - The units are not convertible.
Promise:
Neither unit has been modified.
Requirements:
The units are convertible.

toThis

public double[] toThis(double[] values,
                       Unit that,
                       boolean copy)
                throws UnitException
Convert values to this unit from another unit.

Overrides:
toThis in class Unit
Parameters:
values - The values to be converted.
that - The unit of values.
copy - if false and that equals this, return values, else return a new array
Returns:
The converted values in units of this unit.
Throws:
UnitException - The units are not convertible.
Promise:
Neither unit has been modified.
Requirements:
The units are convertible.

toThis

public float[] toThis(float[] values,
                      Unit that,
                      boolean copy)
               throws UnitException
Convert values to this unit from another unit.

Overrides:
toThis in class Unit
Parameters:
values - The values to be converted.
that - The unit of values.
copy - if false and that equals this, return values, else return a new array
Returns:
The converted values in units of this unit.
Throws:
UnitException - The units are not convertible.
Promise:
Neither unit has been modified.
Requirements:
The units are convertible.

toThat

public double[] toThat(double[] values,
                       Unit that)
                throws UnitException
Convert values from this unit to another unit.

Specified by:
toThat in class Unit
Parameters:
values - The values to be converted in units of this unit.
that - The unit to which to convert the values.
Returns:
The converted values.
Throws:
UnitException - The units are not convertible.
Promise:
Neither unit has been modified.
Requirements:
The units are convertible.

toThat

public float[] toThat(float[] values,
                      Unit that)
               throws UnitException
Convert values from this unit to another unit.

Specified by:
toThat in class Unit
Parameters:
values - The values to be converted in units of this unit.
that - The unit to which to convert the values.
Returns:
The converted values.
Throws:
UnitException - The units are not convertible.
Promise:
Neither unit has been modified.
Requirements:
The units are convertible.

toThat

public double[] toThat(double[] values,
                       Unit that,
                       boolean copy)
                throws UnitException
Convert values from this unit to another unit.

Overrides:
toThat in class Unit
Parameters:
values - The values to be converted in units of this unit.
that - The unit to which to convert the values.
copy - if false and that equals this, return values, else return a new array
Returns:
The converted values.
Throws:
UnitException - The units are not convertible.
Promise:
Neither unit has been modified.
Requirements:
The units are convertible.

toThat

public float[] toThat(float[] values,
                      Unit that,
                      boolean copy)
               throws UnitException
Convert values from this unit to another unit.

Overrides:
toThat in class Unit
Parameters:
values - The values to be converted in units of this unit.
that - The unit to which to convert the values.
copy - if false and that equals this, return values, else return a new array
Returns:
The converted values.
Throws:
UnitException - The units are not convertible.
Promise:
Neither unit has been modified.
Requirements:
The units are convertible.

isConvertible

public boolean isConvertible(Unit unit)
Indicate whether this unit is convertible with another unit. If one unit is convertible with another, then the toThis(...)/ and toThat(...) methods will not throw a UnitException. Unit A is convertible with unit B if and only if unit B is convertible with unit A; hence, calling-order is irrelevant.

Specified by:
isConvertible in class Unit
Parameters:
unit - The other unit.
Returns:
True if and only if this unit is convertible with the other unit.

equals

public boolean equals(Unit unit)
Indicates if this instance equals a unit.

Specified by:
equals in class Unit
Parameters:
unit - The unit.
Returns:
true if and only if this instance equals the unit.

hashCode

public int hashCode()
Returns the hash code of this instance. Object.hashCode() should be overridden whenever Object.equals(Object) is.

Specified by:
hashCode in class Unit
Returns:
The hash code of this instance (includes the values).

getDerivedUnit

public DerivedUnit getDerivedUnit()
Description copied from class: Unit
Returns the derived unit that underlies this unit.

Specified by:
getDerivedUnit in class Unit
Returns:
The derived unit that underlies this unit.