Package csw.params.core.models
Class Angle
java.lang.Object
csw.params.core.models.Angle
- All Implemented Interfaces:
Serializable
,Comparable<Angle>
,scala.Equals
,scala.math.Ordered<Angle>
,scala.Product
An wrapper for angle. Normally angle would be stored in double
as radians, but this introduces rounding errors.
This class stores value in microarcseconds to prevent rounding errors.
Usage examples:
//import provides implicit conversions for numbers
import Angle._
//use implicit conversions to construct angle from number
val angle = 10.degree + 0.5.arcSec
//convert value to radian an print it
println(11.toRadian)
- See Also:
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic class
used in implicit conversion to support `1.degree`, `1.arcMinute` etc -
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionstatic void
assertDe
(double de) static void
assertRa
(double ra) protected static long
CIRCLE()
int
static double
D2H()
multiply to convert degrees to archoursstatic int
D2M()
multiply to convert degrees to arcminutestatic int
D2Mas()
multiply to convert degrees to milliarcsecondsstatic double
D2R()
multiply to convert degrees to radiansstatic int
D2S()
multiply to convert degrees to arcsecondstatic long
D2Uas()
multiply to convert degrees to microarcsecondsstatic char
round circle which marks degreesstatic String
deToString
(double de2, boolean withColon) Converts DE to a string in the format 01:02:03.333 (or '1d 2m 3.333s)' Minutes and seconds are auto added as needed.static double
distance
(double ra1, double de1, double ra2, double de2) calculate great circle distance of two points, coordinates are given in radiansstatic Angle.AngleWrapperDouble
double2angle
(double d) static double
H2D()
multiply to convert archour to degreesstatic int
H2Mas()
multiply to convert hours to milliarcsecondsstatic double
H2R()
multiply to convert hours to radiansstatic long
H2Uas()
multiply to convert hours to microarcsecondsstatic int
HMin2Mas()
multiply to convert time minutes to milliarcsecondsstatic long
HMin2Uas()
multiply to convert time minutes to microarcsecondsstatic int
HSec2Mas()
multiply to convert time seconds to milliarcsecondsstatic long
HSec2Uas()
multiply to convert time seconds to microarcsecondsstatic Angle.AngleWrapperDouble
int2angle
(int d) static Angle.AngleWrapperDouble
long2angle
(long d) static double
M2D()
multiply to convert arcminute to toDegreestatic int
M2Mas()
multiply to convert minutes to milliarcsecondsstatic double
M2R()
multiply to convert minutes to radiansstatic long
M2Uas()
multiply to convert minutes to microarcsecondsstatic double
Mas2R()
multiply to convert milliarcseconds to radiansstatic Angle
returns maximal angle from two optionsstatic Angle
returns minimal angle from two optionsreturns Angle with value normalized between 0 to 2*PIstatic double
normalizeRa
(double ra2) normalize RA into 0 - 2 * PI rangestatic Angle
Tries to parse Angle from string.static Angle
Parse Declination from four values.static Angle
Tries to parse Angle from string.static Angle
parse Right ascencion from triple values raHour raMin, raSec This method uses big decimal, so there are no rounding errorsParses pair of RA and De coordinates.static double
R2D()
multiply to convert radians to degreesstatic double
R2H()
multiply to convert radians to hoursstatic double
R2M()
multiply to convert radians to minutesstatic double
R2Mas()
multiply to convert radians to milliarcsecondsstatic double
R2S()
multiply to convert radians to arcsecondsstatic double
R2Uas()
multiply to convert radians to microarcsecondsstatic Angle
randomDe()
returns random angle with value between -PI/2 and + PI/2static Angle
randomRa()
returns random angle with value between 0 and 2*PIstatic String
raToString
(double ra, boolean withColon) Converts RA to a string in the format 01:02:03.333 (or '1h 2m 3.33s').static double
S2D()
multiply to convert arcsecond to toDegreestatic int
S2Mas()
multiply to convert Seconds to milliarcsecondsstatic double
S2R()
multiply to convert arcseconds to radiansstatic long
S2Uas()
multiply to convert Seconds to microarcsecondsscala.collection.immutable.Seq<Angle>
Returns sequence of angles with given max value and incrementdouble
toArcSec()
returns angle value in arcsecondsdouble
toDegree()
returns angle value in degreesdouble
toMas()
returns angle value in milliarcsecondsdouble
toRadian()
returns angle value in radianstoString()
long
uas()
static double
Uas2D()
multiply to convert UAS to degreesstatic double
Uas2M()
multiply to convert UAS to minutesstatic double
Uas2R()
multiply to convert microarcseconds to radiansstatic double
Uas2S()
multiply to convert UAS to Secondsscala.collection.immutable.Seq<Angle>
Returns sequence of angles with given max value and incrementMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface scala.Equals
canEqual, equals
Methods inherited from interface scala.math.Ordered
$greater, $greater$eq, $less, $less$eq, compareTo
Methods inherited from interface scala.Product
productArity, productElement, productElementName, productElementNames, productIterator, productPrefix
-
Constructor Details
-
Angle
public Angle(long uas)
-
-
Method Details
-
CIRCLE
protected static long CIRCLE() -
long2angle
-
int2angle
-
double2angle
-
randomRa
returns random angle with value between 0 and 2*PI -
randomDe
returns random angle with value between -PI/2 and + PI/2 -
max
returns maximal angle from two options -
min
returns minimal angle from two options -
parseDe
Parse Declination from four values. It uses BigDecimal, so there are no rounding errors- Parameters:
deSign
- signum (ie + or -)deDegree
- declination in degreesdeMin
- remaining part in arcminutesdeSec
- remaining part in arcseconds- Returns:
- declination in microarcseconds
-
parseDe
Tries to parse Angle from string. It knows common formats used for Declination- Parameters:
de
- (undocumented)- Returns:
- (undocumented)
-
parseRa
parse Right ascencion from triple values raHour raMin, raSec This method uses big decimal, so there are no rounding errors- Parameters:
raHour
- ra hours value as StringraMin
- ra minutes value as StringraSec
- ra seconds value as String- Returns:
- result in microarcseconds
-
parseRa
Tries to parse Angle from string. It knows common formats used for Right ascencion (including hours)- Parameters:
ra
- (undocumented)- Returns:
- (undocumented)
-
parseRaDe
Parses pair of RA and De coordinates. This method should handle formats used in vizier. An example: The following writings are allowed:20 54 05.689 +37 01 17.38, 10:12:45.3-45:17:50, 15h17m-11d10m, 15h17+89d15, 275d11m15.6954s+17d59m59.876s 12.34567h-17.87654d, 350.123456d-17.33333d <=> 350.123456 -17.33333
- Parameters:
str
- (undocumented)- Returns:
- (undocumented)
-
normalizeRa
public static double normalizeRa(double ra2) normalize RA into 0 - 2 * PI range- Parameters:
ra2
- (undocumented)- Returns:
- (undocumented)
-
assertRa
public static void assertRa(double ra) -
assertDe
public static void assertDe(double de) -
raToString
Converts RA to a string in the format 01:02:03.333 (or '1h 2m 3.33s'). Minutes and seconds are auto added as needed.- Parameters:
ra
- in radianswithColon
- if true format as hh:mm:ss.sss, otherwise XXh XXm XXs- Returns:
- ra in string form
-
deToString
Converts DE to a string in the format 01:02:03.333 (or '1d 2m 3.333s)' Minutes and seconds are auto added as needed.- Parameters:
de2
- in radianswithColon
- if true format as dd:mm:ss.sss, otherwise XXd XXm XXs- Returns:
- de in string form
-
distance
public static double distance(double ra1, double de1, double ra2, double de2) calculate great circle distance of two points, coordinates are given in radians- Parameters:
ra1
- (undocumented)de1
- (undocumented)ra2
- (undocumented)de2
- (undocumented)- Returns:
- distance of two points in radians
-
D2R
public static double D2R()multiply to convert degrees to radians -
R2D
public static double R2D()multiply to convert radians to degrees -
D2H
public static double D2H()multiply to convert degrees to archours -
H2D
public static double H2D()multiply to convert archour to degrees -
D2M
public static int D2M()multiply to convert degrees to arcminute -
M2D
public static double M2D()multiply to convert arcminute to toDegree -
D2S
public static int D2S()multiply to convert degrees to arcsecond -
S2D
public static double S2D()multiply to convert arcsecond to toDegree -
H2R
public static double H2R()multiply to convert hours to radians -
R2H
public static double R2H()multiply to convert radians to hours -
R2M
public static double R2M()multiply to convert radians to minutes -
M2R
public static double M2R()multiply to convert minutes to radians -
Mas2R
public static double Mas2R()multiply to convert milliarcseconds to radians -
Uas2R
public static double Uas2R()multiply to convert microarcseconds to radians -
R2Mas
public static double R2Mas()multiply to convert radians to milliarcseconds -
R2Uas
public static double R2Uas()multiply to convert radians to microarcseconds -
H2Mas
public static int H2Mas()multiply to convert hours to milliarcseconds -
HMin2Mas
public static int HMin2Mas()multiply to convert time minutes to milliarcseconds -
HSec2Mas
public static int HSec2Mas()multiply to convert time seconds to milliarcseconds -
H2Uas
public static long H2Uas()multiply to convert hours to microarcseconds -
HMin2Uas
public static long HMin2Uas()multiply to convert time minutes to microarcseconds -
HSec2Uas
public static long HSec2Uas()multiply to convert time seconds to microarcseconds -
D2Mas
public static int D2Mas()multiply to convert degrees to milliarcseconds -
M2Mas
public static int M2Mas()multiply to convert minutes to milliarcseconds -
S2Mas
public static int S2Mas()multiply to convert Seconds to milliarcseconds -
D2Uas
public static long D2Uas()multiply to convert degrees to microarcseconds -
M2Uas
public static long M2Uas()multiply to convert minutes to microarcseconds -
S2Uas
public static long S2Uas()multiply to convert Seconds to microarcseconds -
Uas2D
public static double Uas2D()multiply to convert UAS to degrees -
Uas2M
public static double Uas2M()multiply to convert UAS to minutes -
Uas2S
public static double Uas2S()multiply to convert UAS to Seconds -
S2R
public static double S2R()multiply to convert arcseconds to radians -
R2S
public static double R2S()multiply to convert radians to arcseconds -
DEGREE_SIGN
public static char DEGREE_SIGN()round circle which marks degrees -
uas
public long uas() -
compare
- Specified by:
compare
in interfacescala.math.Ordered<Angle>
-
toRadian
public double toRadian()returns angle value in radians -
toDegree
public double toDegree()returns angle value in degrees -
toMas
public double toMas()returns angle value in milliarcseconds -
toArcSec
public double toArcSec()returns angle value in arcseconds -
normalizedRa
returns Angle with value normalized between 0 to 2*PI -
toString
-
to
Returns sequence of angles with given max value and increment -
until
Returns sequence of angles with given max value and increment
-