ucar.units
Class OffsetUnit

java.lang.Object
  extended by ucar.units.UnitImpl
      extended by ucar.units.OffsetUnit
All Implemented Interfaces:
Serializable, DerivableUnit, Unit

public final class OffsetUnit
extends UnitImpl
implements DerivableUnit

Provides support for units that are offset from reference units (ex: as the unit "degree Celsius" is offset from the reference unit "kelvin"). Instances of this class are immutable.

Version:
$Id: OffsetUnit.java 64 2006-07-12 22:30:50Z edavis $
Author:
Steven R. Emmerson
See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class ucar.units.UnitImpl
UnitImpl.MyConverter
 
Constructor Summary
OffsetUnit(Unit unit, double offset)
          Constructs from a reference unit and an offset.
OffsetUnit(Unit unit, double offset, UnitName id)
          Constructs from a reference unit, and offset, and a unit identifier.
 
Method Summary
 Unit clone(UnitName id)
          Clones this unit, changing the identifier.
 boolean equals(Object object)
          Indicates if this unit is semantically identical to an object.
 double fromDerivedUnit(double amount)
          Converts a value in the convertible derived unit to the equivalent value in this unit.
 double[] fromDerivedUnit(double[] input, double[] output)
          Converts values in the convertible derived unit to the equivalent values in this unit.
 float fromDerivedUnit(float amount)
          Converts a value in the convertible derived unit to the equivalent value in this unit.
 float[] fromDerivedUnit(float[] input, float[] output)
          Converts values in the convertible derived unit to the equivalent values in this unit.
 String getCanonicalString()
          Returns the canonical string representation of the unit.
 DerivedUnit getDerivedUnit()
          Returns the derived unit that is convertible with this unit.
 double getOffset()
          Returns the offset.
 Unit getUnit()
          Returns the reference unit.
 int hashCode()
          Returns the hash code of this instance.
 boolean isDimensionless()
          Indicates if this unit is dimensionless.
static void main(String[] args)
          Tests this class.
 Unit multiplyBy(double scale)
          Multiplies this unit by a scale factor.
protected  Unit myDivideBy(Unit that)
          Divide this unit by another unit.
protected  Unit myDivideInto(Unit that)
          Divide this unit into another unit.
protected  Unit myMultiplyBy(Unit that)
          Multiply this unit by another unit.
protected  Unit myRaiseTo(int power)
          Raise this unit to a power.
 Unit shiftTo(double origin)
          Returns a unit identical to this instance but whose origin (i.e., zero value) has been shifted to the given value.
 double toDerivedUnit(double amount)
          Converts a value in this unit to the equivalent value in the convertible derived unit.
 double[] toDerivedUnit(double[] input, double[] output)
          Converts values in this unit to the equivalent values in the convertible derived unit.
 float toDerivedUnit(float amount)
          Converts a value in this unit to the equivalent value in the convertible derived unit.
 float[] toDerivedUnit(float[] input, float[] output)
          Converts values in this unit to the equivalent values in the convertible derived unit.
 String toString()
          Returns the string representation of this unit.
 
Methods inherited from class ucar.units.UnitImpl
convertTo, convertTo, convertTo, convertTo, convertTo, convertTo, divideBy, divideInto, getConverterTo, getName, getPlural, getSymbol, getUnitName, isCompatible, log, makeLabel, multiplyBy, raiseTo, shiftTo
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Constructor Detail

OffsetUnit

public OffsetUnit(Unit unit,
                  double offset)
Constructs from a reference unit and an offset.

Parameters:
unit - The reference unit.
offset - The origin of this unit in terms of the reference unit. For example, a degree Celsius unit would be created as "new OffsetUnit(kelvin, 273.15).

OffsetUnit

public OffsetUnit(Unit unit,
                  double offset,
                  UnitName id)
Constructs from a reference unit, and offset, and a unit identifier.

Parameters:
unit - The reference unit.
offset - The origin of this unit in terms of the reference unit. For example, a degree Celsius unit would be created as "new OffsetUnit(kelvin, 273.15).
id - The identifier for the new unit.
Method Detail

getUnit

public Unit getUnit()
Returns the reference unit.

Returns:
The reference unit.

getOffset

public double getOffset()
Returns the offset. The offset is the location of the origin of this unit in terms of the reference unit.

Returns:
The origin of this unit in terms of the reference unit.

clone

public Unit clone(UnitName id)
Clones this unit, changing the identifier.

Specified by:
clone in interface Unit
Parameters:
id - The identifier for the new unit.
Returns:
This unit with its identifier changed.

multiplyBy

public Unit multiplyBy(double scale)
                throws MultiplyException
Description copied from interface: Unit
Multiplies this unit by a scale factor. For example, if m is a meter unit, then m.multiplyBy(1e-2) returns a centimeter unit.

Specified by:
multiplyBy in interface Unit
Overrides:
multiplyBy in class UnitImpl
Parameters:
scale - The scale factor.
Returns:
The result of multiplying this unit by the scale factor.
Throws:
MultiplyException - if scale is zero.

shiftTo

public Unit shiftTo(double origin)
Description copied from interface: Unit
Returns a unit identical to this instance but whose origin (i.e., zero value) has been shifted to the given value. For example, if degK is a Kelvin unit, then degK.shiftTo(273.15) is a Celsius unit.

Specified by:
shiftTo in interface Unit
Overrides:
shiftTo in class UnitImpl
Parameters:
origin - The new origin in units of this instance.
Returns:
A unit convertible with this instance but whose zero value is equal to the value origin of this instance.

myMultiplyBy

protected Unit myMultiplyBy(Unit that)
                     throws MultiplyException
Multiply this unit by another unit.

Specified by:
myMultiplyBy in class UnitImpl
Parameters:
that - The unit to multiply this unit by.
Returns:
The product of this unit and that. The offset of this unit will be ignored; thus, for example "celsius.myMultiplyBy(day)" is equivalent to "kelvin.myMultiplyBy(day)".
Throws:
MultiplyException - Can't multiply these units together.

myDivideBy

protected Unit myDivideBy(Unit that)
                   throws OperationException
Divide this unit by another unit.

Specified by:
myDivideBy in class UnitImpl
Parameters:
that - The unit to divide this unit by.
Returns:
The quotient of this unit and that. The offset of this unit will be ignored; thus, for example "celsius.myDivideBy(day)" is equivalent to "kelvin.myDivideBy(day)".
Throws:
OperationException - Can't divide these units.

myDivideInto

protected Unit myDivideInto(Unit that)
                     throws OperationException
Divide this unit into another unit.

Specified by:
myDivideInto in class UnitImpl
Parameters:
that - The unit to divide this unit into.
Returns:
The quotient of that unit and this unit. The offset of this unit will be ignored; thus, for example "celsius.myDivideInto(day)" is equivalent to "kelvin.myDivideInto(day)".
Throws:
OperationException - Can't divide these units.

myRaiseTo

protected Unit myRaiseTo(int power)
                  throws RaiseException
Raise this unit to a power.

Specified by:
myRaiseTo in class UnitImpl
Parameters:
power - The power to raise this unit by.
Returns:
The result of raising this unit by the power power. The offset of this unit will be ignored; thus, for example "celsius.myRaiseTo(2)" is equivalent to "kelvin.myRaiseTo(2)".
Throws:
RaiseException - Can't raise this unit to a power.

getDerivedUnit

public DerivedUnit getDerivedUnit()
Returns the derived unit that is convertible with this unit.

Specified by:
getDerivedUnit in interface DerivableUnit
Specified by:
getDerivedUnit in interface Unit
Returns:
The derived unit that is convertible with this unit.

toDerivedUnit

public float toDerivedUnit(float amount)
                    throws ConversionException
Converts a value in this unit to the equivalent value in the convertible derived unit.

Specified by:
toDerivedUnit in interface DerivableUnit
Parameters:
amount - The value in this unit.
Returns:
The equivalent value in the convertible derived unit.
Throws:
ConversionException - Can't convert between units.

toDerivedUnit

public double toDerivedUnit(double amount)
                     throws ConversionException
Converts a value in this unit to the equivalent value in the convertible derived unit.

Specified by:
toDerivedUnit in interface DerivableUnit
Parameters:
amount - The value in this unit.
Returns:
The equivalent value in the convertible derived unit.
Throws:
ConversionException - Can't convert between units.

toDerivedUnit

public float[] toDerivedUnit(float[] input,
                             float[] output)
                      throws ConversionException
Converts values in this unit to the equivalent values in the convertible derived unit.

Specified by:
toDerivedUnit in interface DerivableUnit
Parameters:
input - The values in this unit.
output - The equivalent values in the convertible derived unit. May be the same array as input.
Returns:
output.
Throws:
ConversionException - Can't convert between units.

toDerivedUnit

public double[] toDerivedUnit(double[] input,
                              double[] output)
                       throws ConversionException
Converts values in this unit to the equivalent values in the convertible derived unit.

Specified by:
toDerivedUnit in interface DerivableUnit
Parameters:
input - The values in this unit.
output - The equivalent values in the convertible derived unit. May be the same array as input.
Returns:
output.
Throws:
ConversionException - Can't convert between units.

fromDerivedUnit

public float fromDerivedUnit(float amount)
                      throws ConversionException
Converts a value in the convertible derived unit to the equivalent value in this unit.

Specified by:
fromDerivedUnit in interface DerivableUnit
Parameters:
amount - The value in the convertible derived unit.
Returns:
The equivalent value in this unit.
Throws:
ConversionException - Can't convert between units.

fromDerivedUnit

public double fromDerivedUnit(double amount)
                       throws ConversionException
Converts a value in the convertible derived unit to the equivalent value in this unit.

Specified by:
fromDerivedUnit in interface DerivableUnit
Parameters:
amount - The value in the convertible derived unit.
Returns:
The equivalent value in this unit.
Throws:
ConversionException - Can't convert between units.

fromDerivedUnit

public float[] fromDerivedUnit(float[] input,
                               float[] output)
                        throws ConversionException
Converts values in the convertible derived unit to the equivalent values in this unit.

Specified by:
fromDerivedUnit in interface DerivableUnit
Parameters:
input - The values in the convertible derived unit.
output - The equivalent values in this unit. May be the same array as input.
Returns:
output.
Throws:
ConversionException - Can't convert between units.

fromDerivedUnit

public double[] fromDerivedUnit(double[] input,
                                double[] output)
                         throws ConversionException
Converts values in the convertible derived unit to the equivalent values in this unit.

Specified by:
fromDerivedUnit in interface DerivableUnit
Parameters:
input - The values in the convertible derived unit.
output - The equivalent values in this unit. May be the same array as input.
Returns:
output.
Throws:
ConversionException - Can't convert between units.

equals

public boolean equals(Object object)
Indicates if this unit is semantically identical to an object.

Specified by:
equals in interface Unit
Overrides:
equals in class Object
Parameters:
object - The object.
Returns:
true if and only if this unit is semantically identical to object .

hashCode

public int hashCode()
Returns the hash code of this instance.

Specified by:
hashCode in class UnitImpl
Returns:
The hash code of this instance.

isDimensionless

public boolean isDimensionless()
Indicates if this unit is dimensionless.

Specified by:
isDimensionless in interface Unit
Returns:
true if and only if this unit is dimensionless.

toString

public String toString()
Returns the string representation of this unit.

Specified by:
toString in interface Unit
Overrides:
toString in class UnitImpl
Returns:
The string representation of this unit.

getCanonicalString

public String getCanonicalString()
Returns the canonical string representation of the unit.

Specified by:
getCanonicalString in interface Unit
Returns:
The canonical string representation.

main

public static void main(String[] args)
                 throws Exception
Tests this class.

Throws:
Exception


Copyright © 1999-2011 UCAR/Unidata. All Rights Reserved.