Package ucar.units

Class OffsetUnit

  • All Implemented Interfaces:
    Serializable, DerivableUnit, Unit

    @Immutable
    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.
    See Also:
    Serialized Form
    • 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.