Object
Angle
- All Implemented Interfaces:
Serializable
,Comparable<Angle>
,Formattable
- Direct Known Subclasses:
ElevationAngle
,Latitude
,Longitude
An angle in decimal degrees. An angle is the amount of rotation needed to bring one line or plane
into coincidence with another. Various kind of angles are used in geographic information systems,
some of them having a specialized class in Apache SIS:
- Latitude is an angle ranging from 0° at the equator to 90° at the poles.
- Longitude is an angle measured east-west from a prime meridian (usually Greenwich, but not necessarily).
- Azimuth is a direction given by an angle between 0° and 360° measured clockwise from North.
- Bearing is a direction given by an angle between 0° and 90° in a quadrant defined by a cardinal direction.
- Bearing is also sometimes used in navigation for an angle relative to the vessel forward direction.
- Deflection angle is the angle between a line and the prolongation of a preceding line.
- Interior angle is an angle measured between two lines of sight.
- Elevation angle is the angular height from the horizontal plane to an object above the horizon.
Formatting angles
The recommended way to format angles is to instantiate anAngleFormat
once, then to
reuse it many times. As a convenience, Angle
objects can also be formatted by the
"%s"
conversion specifier of Formatter
, but this is less efficient for this
class.
Immutability and thread safety
This class and theLatitude
/ Longitude
subclasses are immutable, and thus
inherently thread-safe. Other subclasses may or may not be immutable, at implementation choice
(see Number
for an example of a similar in purpose class having mutable subclasses).- Since:
- 0.3
- See Also:
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionint
compareTo
(Angle that) Compares twoAngle
objects numerically.double
degrees()
Returns the angle value in decimal degrees.boolean
Compares the specified object with this angle for equality.void
Formats this angle using the provider formatter.int
Returns a hash code for thisAngle
object.double
radians()
Returns the angle value in radians.Returns a string representation of thisAngle
object.
-
Constructor Details
-
Angle
public Angle(double θ) Constructs a new angle with the specified value in decimal degrees.- Parameters:
θ
- angle in decimal degrees.
-
Angle
Constructs a newly allocatedAngle
object that contain the angular value represented by the string. The string should represent an angle in either fractional degrees (e.g. 45.5°) or degrees with minutes and seconds (e.g. 45°30').This is a convenience constructor mostly for testing purpose, since it uses a fixed locale. Developers should consider using
AngleFormat
for end-user applications instead of this constructor.- Parameters:
text
- a string to be converted to anAngle
.- Throws:
NumberFormatException
- if the string does not contain a parsable angle.- See Also:
-
-
Method Details
-
degrees
public double degrees()Returns the angle value in decimal degrees.- Returns:
- the angle value in decimal degrees.
-
radians
public double radians()Returns the angle value in radians.- Returns:
- the angle value in radians.
-
hashCode
public int hashCode()Returns a hash code for thisAngle
object. -
equals
Compares the specified object with this angle for equality. -
compareTo
Compares twoAngle
objects numerically. The comparison is done as if by theDouble.compare(double, double)
method.- Specified by:
compareTo
in interfaceComparable<Angle>
- Parameters:
that
- the angle to compare with this object for order.- Returns:
- -1 if this angle is smaller than the given one, +1 if greater or 0 if equals.
-
toString
Returns a string representation of thisAngle
object. This is a convenience method mostly for debugging purpose, since it uses a fixed locale. Developers should consider usingAngleFormat
for end-user applications instead than this method. -
formatTo
Formats this angle using the provider formatter. This method is invoked when anAngle
object is formatted using the"%s"
conversion specifier ofFormatter
. Users don't need to invoke this method explicitly.Special cases:
- If the precision is 0, then this method formats an empty string.
- If the precision is 1 and this angle is a
Latitude
orLongitude
, then this method formats only the hemisphere symbol. - Otherwise the precision, if positive, is given to
AngleFormat.setMaximumWidth(int)
.
- Specified by:
formatTo
in interfaceFormattable
- Parameters:
formatter
- the formatter in which to format this angle.flags
-FormattableFlags.LEFT_JUSTIFY
for left alignment, or 0 for right alignment.width
- minimal number of characters to write, padding with' '
if necessary.precision
- maximal number of characters to write, or -1 if no limit.
-