Package org.djunits.unit.si
Class SIDimensions
java.lang.Object
org.djunits.unit.si.SIDimensions
- All Implemented Interfaces:
Serializable
public class SIDimensions extends Object implements Serializable
SIDimensions stores the dimensionality of a unit using the SI standards. Angle (rad) and solid angle (sr) have been added to
be able to specify often used units regarding rotation.
Copyright (c) 2019-2020 Delft University of Technology, PO Box 5, 2600 AA, Delft, the Netherlands. All rights reserved.
BSD-style license. See DJUNITS License
- Author:
- Alexander Verbraeck
- See Also:
- Serialized Form
-
Field Summary
Fields Modifier and Type Field Description static int
NUMBER_DIMENSIONS
The (currently) 9 dimensions we take into account: rad, sr, kg, m, s, A, K, mol, cd. -
Constructor Summary
Constructors Modifier Constructor Description SIDimensions(byte[] dimensions)
Create an immutable SIDimensions instance based on a safe copy of a given dimensions specification.protected
SIDimensions(byte[] numerator, byte[] denominator)
Create an immutable fractional SIDimensions instance based on a safe copy of a given specification, separated in a numerator and a denominator.SIDimensions(int angle, int solidAngle, int mass, int length, int time, int current, int temperature, int amountOfSubstance, int luminousIntensity)
Create an immutable SIDimensions instance based on a safe copy of a given dimensions specification. -
Method Summary
Modifier and Type Method Description static SIDimensions
add(SIDimensions dim1, SIDimensions dim2)
Add two SIDimensions and return the new SIDimensions.boolean
equals(Object obj)
int
hashCode()
SIDimensions
invert()
Invert a set of SI dimensions; instead of m/s we get s/m.boolean
isFractional()
Indicate whether this SIDImensions contains one or more fractional dimensions.SIDimensions
minus(SIDimensions other)
Subtract a set of SI dimensions from this SIDimensions.static SIDimensions
of(String siString)
Parse a string representing SI dimensions to an SIDimensions object.SIDimensions
plus(SIDimensions other)
Add a set of SI dimensions to this SIDimensions.String[]
siAbbreviations()
Returns a safe copy of the SI abbreviations (a public static final String[] is mutable).static SIDimensions
subtract(SIDimensions dim1, SIDimensions dim2)
Subtract an SIDimensions (dim2) from another SIDimensions (dim1) and return the new SIDimensions.String
toHTMLString(boolean divided, boolean separator)
Return a string such as "kgm/s2" or or "kg.m.s-2" from this SIDimensions.String
toString()
String
toString(boolean divided, boolean separator)
Return a string such as "kgm/s2" or "kg.m/s2" or "kg.m.s-2" from this SIDimensions.String
toString(boolean divided, boolean separator, boolean power)
Return a string such as "kgm/s2" or "kg.m/s^2" or "kg.m.s^-2" from this SIDimensions.String
toString(boolean divided, String separator, String powerPrefix, String powerPostfix)
Return a string such as "kgm/s2" or "kg.m/s^2" or "kg.m.s^-2" from this SIDimensions.
-
Field Details
-
NUMBER_DIMENSIONS
public static final int NUMBER_DIMENSIONSThe (currently) 9 dimensions we take into account: rad, sr, kg, m, s, A, K, mol, cd.- See Also:
- Constant Field Values
-
-
Constructor Details
-
SIDimensions
public SIDimensions(byte[] dimensions)Create an immutable SIDimensions instance based on a safe copy of a given dimensions specification. As an example, speed is indicated as length = 1; time = -1 with the other dimensions equal to zero.- Parameters:
dimensions
- byte[]; The (currently) 9 dimensions of the SI unit we distinguish: 0: angle (rad), 1: solid angle (sr), 2: mass (kg), 3: length (m), 4: time (s), 5: current (A), 6: temperature (K), 7: amount of substance (mol), 8: luminous intensity (cd).
-
SIDimensions
protected SIDimensions(byte[] numerator, byte[] denominator)Create an immutable fractional SIDimensions instance based on a safe copy of a given specification, separated in a numerator and a denominator.- Parameters:
numerator
- byte[]; The (currently) 9 dimensions of the SI unit we distinguish: 0: angle (rad), 1: solid angle (sr), 2: mass (kg), 3: length (m), 4: time (s), 5: current (A), 6: temperature (K), 7: amount of substance (mol), 8: luminous intensity (cd).denominator
- byte[]; The (currently) 9 dimensions of the SI unit we distinguish: 0: angle (rad), 1: solid angle (sr), 2: mass (kg), 3: length (m), 4: time (s), 5: current (A), 6: temperature (K), 7: amount of substance (mol), 8: luminous intensity (cd).
-
SIDimensions
public SIDimensions(int angle, int solidAngle, int mass, int length, int time, int current, int temperature, int amountOfSubstance, int luminousIntensity)Create an immutable SIDimensions instance based on a safe copy of a given dimensions specification.- Parameters:
angle
- int; dimension of the angle (rad)solidAngle
- int; dimension of the solidAngle (sr)mass
- int; dimension of the mass (kg)length
- int; dimension of the length (m)time
- int; dimension of the time (s)current
- int; dimension of the current (A)temperature
- int; dimension of the temperature (K)amountOfSubstance
- int; dimension of the amount of substance (mol)luminousIntensity
- int; dimension of the luminous intensity (cd)
-
-
Method Details
-
of
Parse a string representing SI dimensions to an SIDimensions object. Example: SIDimensions.of("kgm/s2") and SIDimensions.of("kgms-2") will both be translated to a dimensions object with vector {0,0,1,1,-2,0,0,0,0}. It is allowed to use 0 or 1 for the dimensions. Having the same unit in the numerator and the denominator is not seen as a problem: the values are subtracted from each other, so m/m will have a length dimensionality of 0. Dimensions between -9 and 9 are allowed. Spaces, periods and ^ are taken out, but other characters are not allowed and will lead to a UnitException. The order of allowed units is arbitrary, so "kg/ms2" is accepted as well as "kg/s^2.m".- Parameters:
siString
- String; the string to parse- Returns:
- SIDimension; the corresponding SI dimensions
- Throws:
UnitException
- when the string could not be parsed into dimensions
-
siAbbreviations
Returns a safe copy of the SI abbreviations (a public static final String[] is mutable).- Returns:
- String[]; a safe copy of the SI abbreviations
-
plus
Add a set of SI dimensions to this SIDimensions. Note: as dimensions are considered to be immutable, a new dimension is returned. The original dimension (this
) remains unaltered.- Parameters:
other
- SIDimensions; the dimensions to add (usually as a result of multiplication of scalars)- Returns:
- SIDimensions; the new dimensions with the dimensions of this object plus the dimensions in the parameter
-
minus
Subtract a set of SI dimensions from this SIDimensions. Note: as dimensions are considered to be immutable, a new dimension is returned. The original dimension (this
) remains unaltered.- Parameters:
other
- SIDimensions; the dimensions to subtract (usually as a result of division of scalars)- Returns:
- SIDimensions; the new dimensions with the dimensions of this object minus the dimensions in the parameter
-
invert
Invert a set of SI dimensions; instead of m/s we get s/m. Note: as dimensions are considered to be immutable, a new dimension is returned. The original dimension (this
) remains unaltered.- Returns:
- SIDimensions; the new dimensions that are the inverse of the dimensions in this object
-
add
Add two SIDimensions and return the new SIDimensions. Usually, dimensions are added as a result of multiplication of scalars.- Parameters:
dim1
- SIDimensions; the first set of dimensionsdim2
- SIDimensions; the second set of dimensions- Returns:
- the new dimensions with the sum of the dimensions in the parameters
-
subtract
Subtract an SIDimensions (dim2) from another SIDimensions (dim1) and return the new SIDimensions. Usually, dimensions are added as a result of division of scalars.- Parameters:
dim1
- SIDimensions; the first set of dimensionsdim2
- SIDimensions; the second set of dimensions that will be subtracted from dim1- Returns:
- the new dimensions with the difference of the dimensions in the parameters
-
isFractional
public boolean isFractional()Indicate whether this SIDImensions contains one or more fractional dimensions.- Returns:
- boolean; whether this SIDImensions contains one or more fractional dimensions
-
hashCode
public int hashCode() -
equals
-
toString
Return a string such as "kgm/s2" or "kg.m/s^2" or "kg.m.s^-2" from this SIDimensions.- Parameters:
divided
- boolean; if true, return m/s2 for acceleration; if false return ms-2separator
- String; add this string between successive units, e.g. kg.m.s-2 instead of kgms-2powerPrefix
- String; the prefix for the power, e.g., "^" or ""powerPostfix
- String; the postfix for the power, e.g., ""- Returns:
- String; a formatted string for this SIDimensions
-
toString
Return a string such as "kgm/s2" or "kg.m/s2" or "kg.m.s-2" from this SIDimensions.- Parameters:
divided
- boolean; if true, return m/s2 for acceleration; if false return ms-2separator
- boolean; if true, add a period between successive units, e.g. kg.m.s-2 instead of kgms-2- Returns:
- String; a formatted string describing this SIDimensions
-
toString
Return a string such as "kgm/s2" or "kg.m/s^2" or "kg.m.s^-2" from this SIDimensions.- Parameters:
divided
- boolean; if true, return m/s2 for acceleration; if false return ms-2separator
- boolean; if true, add a period between successive units, e.g. kg.m.s-2 instead of kgms-2power
- boolean; if true, add a ^ sign before the power, e.g., "kg.m^2/s^3" instead of "kg.m2/s3"- Returns:
- String; a formatted string describing this SIDimensions
-
toHTMLString
Return a string such as "kgm/s2" or or "kg.m.s-2" from this SIDimensions.- Parameters:
divided
- boolean; if true, return "m/s2" for acceleration; if false return "ms-2"separator
- boolean; if true, add a period between successive units, e.g. kg.m.s-2- Returns:
- String; a formatted string describing this SIDimensions
-
toString
-