org.xspace.mx.physics.mutable
Class BaseUnit

java.lang.Object
  extended byorg.xspace.mx.physics.mutable.BaseUnit
All Implemented Interfaces:
Measurement, java.io.Serializable
Direct Known Subclasses:
AstronomicalUnit, Centimeter, Day, Degree, Foot, Force, Hour, Immutable, Inch, Kilogram, Kilometer, Meter, Mile, Minute, Radian, Revolution, Second, SiderealDay

public class BaseUnit
extends java.lang.Object
implements Measurement, java.io.Serializable

The class from which all other units in this package are derived. This class provides most of the functionality/implementation for this package.

Internally, the measurements are stored as multiples of base units of the SI system (e.g. meters, seconds, kilograms, etc.)

Since:
0.1
See Also:
Serialized Form

Field Summary
protected static int DIM_ANGLE
           
protected static int DIM_LENGTH
           
protected static int DIM_MASS
           
protected static int DIM_TIME
           
protected  Unit[] dims
           
protected  double systemValue
          The internally stored value of this Measurement
protected static double TOL
          The tolerance used when inspecting the power of a Unit.
 
Constructor Summary
BaseUnit()
          Creates a unit-less Measurement equal to one (1)
BaseUnit(double value)
          Creates a unit-less Measurement equal to the input value
 
Method Summary
 Measurement copy()
          Returns a new instance of a Measurement that is "equivalent" in value to this Measurement.
 Measurement div(double scaling)
          Divides this Measurement by a scalar value.
 Measurement div(Measurement other)
          Divides this Measurement by the other Measurement.
 java.lang.String getAbbr()
          An abbreviated description of the units of this Measurement
 java.lang.String getDescription()
          A description of the units of this Measurement
 SystemOfUnits getSystem()
          The system of units being used by this Measurement.
 Unit[] getSystemDimensions()
          An array of Units within the SystemOfUnits being used by this Measurement.
 double getSystemValue()
          The internal value of this measurement.
 double getValue(Measurement multipleOf)
          The value of this measurement relative to the dimensions of the input measurement.
 boolean isSameMeasurementType(Measurement other)
          Determine whether this measurement and the other measurement are comparable
 Measurement minus(Measurement other)
          Subtracts the other Measurement to this Measurement.
 Measurement mult(double scaling)
          Multiplies this Measurement by a scalar value.
 Measurement mult(Measurement other)
          Multiplies the other Measurement to this Measurement.
 Measurement plus(Measurement other)
          Adds the other Measurement to this Measurement.
 Measurement pow(double power)
          Raises this Measurement to the specified power.
 Measurement root(double power)
          Tales the root this Measurement by the specified power.
 java.lang.String toString()
          A description of the measurement
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

systemValue

protected transient double systemValue
The internally stored value of this Measurement


DIM_LENGTH

protected static final int DIM_LENGTH
See Also:
Constant Field Values

DIM_TIME

protected static final int DIM_TIME
See Also:
Constant Field Values

DIM_MASS

protected static final int DIM_MASS
See Also:
Constant Field Values

DIM_ANGLE

protected static final int DIM_ANGLE
See Also:
Constant Field Values

dims

protected transient Unit[] dims

TOL

protected static double TOL
The tolerance used when inspecting the power of a Unit.

Constructor Detail

BaseUnit

public BaseUnit(double value)
Creates a unit-less Measurement equal to the input value


BaseUnit

public BaseUnit()
Creates a unit-less Measurement equal to one (1)

Method Detail

getSystem

public SystemOfUnits getSystem()
Description copied from interface: Measurement

The system of units being used by this Measurement.

Knowledge of SystemOfUnits being used is vital for proper implementations of any of the arithmetic methods: Measurement.plus(Measurement), Measurement.minus(Measurement), Measurement.mult(Measurement), Measurement.div(Measurement). Both Measurements must reference the same SystemOfUnits for a proper comparison.

For example, if Person A weighs items in terms of kilograms, and Person B weighs items in terms of pounds, then they must both agree on a common system of units before they can properly compare weights. Their decision could be to measure items using the SI system of units, Imperial system of units, or perhaps some other one.

Specified by:
getSystem in interface Measurement
Returns:
Returns the system of units being used by this Measurement.
See Also:
Measurement.getSystemDimensions()

getSystemDimensions

public Unit[] getSystemDimensions()
Description copied from interface: Measurement

An array of Units within the SystemOfUnits being used by this Measurement.

This array of Dimensions is vital for proper implementations of any of the arithmetic methods: Measurement.plus(Measurement), Measurement.minus(Measurement), Measurement.mult(Measurement), Measurement.div(Measurement), Measurement.pow(double), Measurement.root(double).

For example, if this Measurement measures the speed of five meters per second, then this method would return an array of Dimensions that contains:

Specified by:
getSystemDimensions in interface Measurement
Returns:
Returns an array of Units being used by this Measurement.
See Also:
Measurement.getSystem()

getSystemValue

public double getSystemValue()
Description copied from interface: Measurement

The internal value of this measurement. Meant to be used in the implementations of the other methods.

For example, an implementation might store the value of the measurement as a multiple of the "standard units" of the SystemOfUnits being used.

Specified by:
getSystemValue in interface Measurement
Returns:
Returns the internal value of this Measurement.

isSameMeasurementType

public boolean isSameMeasurementType(Measurement other)
Determine whether this measurement and the other measurement are comparable


getValue

public double getValue(Measurement multipleOf)
Description copied from interface: Measurement
The value of this measurement relative to the dimensions of the input measurement.

Specified by:
getValue in interface Measurement
Parameters:
multipleOf - The Measurement to compared with
Returns:
The value of this Measurement as a multiple of the input parameter.

plus

public Measurement plus(Measurement other)
                 throws MeasurementException
Description copied from interface: Measurement

Adds the other Measurement to this Measurement.

Depending on the implementation, this may or may not alter this object.

Specified by:
plus in interface Measurement
Parameters:
other - The Measurement that is added to this Measurement
Returns:
A Measurement object that reflects the result of this addition.
Throws:
MeasurementException - if both Measurements cannot be added.

This could occur if they were not referring to the same SystemOfUnits.

This could occur if they did not possess the exact same array of Units.

See Also:
Measurement.getSystem(), Measurement.getSystemDimensions()

minus

public Measurement minus(Measurement other)
                  throws MeasurementException
Description copied from interface: Measurement

Subtracts the other Measurement to this Measurement.

Depending on the implementation, this may or may not alter this object.

Specified by:
minus in interface Measurement
Parameters:
other - The Measurement that is subtracted to this Measurement
Returns:
A Measurement object that reflects the result of this subtraction.
Throws:
MeasurementException - if both Measurements cannot be subtracted.

This could occur if they were not referring to the same SystemOfUnits.

This could occur if they did not possess the exact same array of Units.

See Also:
Measurement.getSystem(), Measurement.getSystemDimensions()

mult

public Measurement mult(double scaling)
Description copied from interface: Measurement

Multiplies this Measurement by a scalar value. This does not affect the Units of the Measurement.

Depending on the implementation, this may or may not alter this object.

For example, if the Measurement represents five meters per second (5 [m / s]), and it is multiplied by 2, then the result will be ten meters per second (10 [m / s]).

Specified by:
mult in interface Measurement
Parameters:
scaling - A scalar value that multiplies this Measurement
Returns:
A Measurement object that reflects the result of this multiplication

mult

public Measurement mult(Measurement other)
Description copied from interface: Measurement

Multiplies the other Measurement to this Measurement.

Depending on the implementation, this may or may not alter this object.

Specified by:
mult in interface Measurement
Parameters:
other - The Measurement that is multiplied by this Measurement
Returns:
A Measurement object that reflects the result of this multiplication

div

public Measurement div(double scaling)
Description copied from interface: Measurement

Divides this Measurement by a scalar value. This does not affect the Units of the Measurement.

Depending on the implementation, this may or may not alter this object.

For example, if the Measurement represents five meters per second (5 [m / s]), and it is divided by 2, then the result will be two-and-a-half meters per second (2.5 [m / s]).

Specified by:
div in interface Measurement
Parameters:
scaling - A scalar value that multiplies this Measurement
Returns:
A Measurement object that reflects the result of this multiplication

div

public Measurement div(Measurement other)
Description copied from interface: Measurement

Divides this Measurement by the other Measurement.

Depending on the implementation, this may or may not alter this object.

Specified by:
div in interface Measurement
Parameters:
other - The Measurement that divided into this Measurement
Returns:
A Measurement object that reflects the result of this division

pow

public Measurement pow(double power)
Description copied from interface: Measurement

Raises this Measurement to the specified power.

Depending on the implementation, this may or may not alter this object.

For example, if the Measurement represents five meters per second (5 [m / s]), and it is raised to the power of two, the result will be twenty-five meters squared per second squared (25 [m^2 / s^2]).

Specified by:
pow in interface Measurement
Parameters:
power - The power that this Measurement is raised to
Returns:
A Measurement object that reflects the result of raising the Measurement to the desired power
See Also:
Measurement.root(double)

root

public Measurement root(double power)
Description copied from interface: Measurement

Tales the root this Measurement by the specified power.

Depending on the implementation, this may or may not alter this object.

For example, if the Measurement represents nine square meters (9 [m^2]), and the square root is taken (power = 2), the result will be three meters (3 [m]).

Specified by:
root in interface Measurement
Parameters:
power - The power that this Measurement is lowered by
Returns:
A Measurement object that reflects the result of lowering the Measurement by the desired power
See Also:
Measurement.pow(double)

toString

public java.lang.String toString()
A description of the measurement

Returns:
A string describing the Measurement

copy

public Measurement copy()
Description copied from interface: Measurement
Returns a new instance of a Measurement that is "equivalent" in value to this Measurement.

Specified by:
copy in interface Measurement
Returns:
A new instance of a Measurement that is "equivalent" in value to this Measurement.

getAbbr

public java.lang.String getAbbr()
Description copied from interface: Measurement
An abbreviated description of the units of this Measurement

Specified by:
getAbbr in interface Measurement
Returns:
An abbreviated description of the units of this Measurement

getDescription

public java.lang.String getDescription()
Description copied from interface: Measurement
A description of the units of this Measurement

Specified by:
getDescription in interface Measurement
Returns:
A description of the units of this Measurement