Class Angle

java.lang.Object
csw.params.core.models.Angle
All Implemented Interfaces:
Serializable, Comparable<Angle>, scala.Equals, scala.math.Ordered<Angle>, scala.Product

public class Angle extends Object implements Serializable, 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

    Nested Classes
    Modifier and Type
    Class
    Description
    static class 
    used in implicit conversion to support `1.degree`, `1.arcMinute` etc
  • Constructor Summary

    Constructors
    Constructor
    Description
    Angle(long uas)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    static void
    assertDe(double de)
     
    static void
    assertRa(double ra)
     
    protected static long
     
    int
    compare(Angle that)
     
    static double
    D2H()
    multiply to convert degrees to archours
    static int
    D2M()
    multiply to convert degrees to arcminute
    static int
    multiply to convert degrees to milliarcseconds
    static double
    D2R()
    multiply to convert degrees to radians
    static int
    D2S()
    multiply to convert degrees to arcsecond
    static long
    multiply to convert degrees to microarcseconds
    static char
    round circle which marks degrees
    static 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 radians
    double2angle(double d)
     
    static double
    H2D()
    multiply to convert archour to degrees
    static int
    multiply to convert hours to milliarcseconds
    static double
    H2R()
    multiply to convert hours to radians
    static long
    multiply to convert hours to microarcseconds
    static int
    multiply to convert time minutes to milliarcseconds
    static long
    multiply to convert time minutes to microarcseconds
    static int
    multiply to convert time seconds to milliarcseconds
    static long
    multiply to convert time seconds to microarcseconds
    int2angle(int d)
     
    long2angle(long d)
     
    static double
    M2D()
    multiply to convert arcminute to toDegree
    static int
    multiply to convert minutes to milliarcseconds
    static double
    M2R()
    multiply to convert minutes to radians
    static long
    multiply to convert minutes to microarcseconds
    static double
    multiply to convert milliarcseconds to radians
    static Angle
    max(Angle a1, Angle a2)
    returns maximal angle from two options
    static Angle
    min(Angle a1, Angle a2)
    returns minimal angle from two options
    returns Angle with value normalized between 0 to 2*PI
    static double
    normalizeRa(double ra2)
    normalize RA into 0 - 2 * PI range
    static Angle
    Tries to parse Angle from string.
    static Angle
    parseDe(String deSign, String deDegree, String deMin, String deSec)
    Parse Declination from four values.
    static Angle
    Tries to parse Angle from string.
    static Angle
    parseRa(String raHour, String raMin, String raSec)
    parse Right ascencion from triple values raHour raMin, raSec This method uses big decimal, so there are no rounding errors
    static scala.Tuple2<Angle,Angle>
    Parses pair of RA and De coordinates.
    static double
    R2D()
    multiply to convert radians to degrees
    static double
    R2H()
    multiply to convert radians to hours
    static double
    R2M()
    multiply to convert radians to minutes
    static double
    multiply to convert radians to milliarcseconds
    static double
    R2S()
    multiply to convert radians to arcseconds
    static double
    multiply to convert radians to microarcseconds
    static Angle
    returns random angle with value between -PI/2 and + PI/2
    static Angle
    returns random angle with value between 0 and 2*PI
    static 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 toDegree
    static int
    multiply to convert Seconds to milliarcseconds
    static double
    S2R()
    multiply to convert arcseconds to radians
    static long
    multiply to convert Seconds to microarcseconds
    scala.collection.immutable.Seq<Angle>
    to(Angle maxVal, Angle increment)
    Returns sequence of angles with given max value and increment
    double
    returns angle value in arcseconds
    double
    returns angle value in degrees
    double
    returns angle value in milliarcseconds
    double
    returns angle value in radians
     
    long
    uas()
     
    static double
    multiply to convert UAS to degrees
    static double
    multiply to convert UAS to minutes
    static double
    multiply to convert microarcseconds to radians
    static double
    multiply to convert UAS to Seconds
    scala.collection.immutable.Seq<Angle>
    until(Angle maxVal, Angle increment)
    Returns sequence of angles with given max value and increment

    Methods 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

      public static Angle.AngleWrapperDouble long2angle(long d)
    • int2angle

      public static Angle.AngleWrapperDouble int2angle(int d)
    • double2angle

      public static Angle.AngleWrapperDouble double2angle(double d)
    • randomRa

      public static Angle randomRa()
      returns random angle with value between 0 and 2*PI
    • randomDe

      public static Angle randomDe()
      returns random angle with value between -PI/2 and + PI/2
    • max

      public static Angle max(Angle a1, Angle a2)
      returns maximal angle from two options
    • min

      public static Angle min(Angle a1, Angle a2)
      returns minimal angle from two options
    • parseDe

      public static Angle parseDe(String deSign, String deDegree, String deMin, String deSec)
      Parse Declination from four values. It uses BigDecimal, so there are no rounding errors

      Parameters:
      deSign - signum (ie + or -)
      deDegree - declination in degrees
      deMin - remaining part in arcminutes
      deSec - remaining part in arcseconds
      Returns:
      declination in microarcseconds
    • parseDe

      public static Angle parseDe(String de)
      Tries to parse Angle from string. It knows common formats used for Declination
      Parameters:
      de - (undocumented)
      Returns:
      (undocumented)
    • parseRa

      public static Angle parseRa(String raHour, String raMin, String raSec)
      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 String
      raMin - ra minutes value as String
      raSec - ra seconds value as String
      Returns:
      result in microarcseconds
    • parseRa

      public static Angle parseRa(String ra)
      Tries to parse Angle from string. It knows common formats used for Right ascencion (including hours)
      Parameters:
      ra - (undocumented)
      Returns:
      (undocumented)
    • parseRaDe

      public static scala.Tuple2<Angle,Angle> parseRaDe(String str)
      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

      public static String raToString(double ra, boolean withColon)
      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 radians
      withColon - if true format as hh:mm:ss.sss, otherwise XXh XXm XXs
      Returns:
      ra in string form
    • deToString

      public static 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.

      Parameters:
      de2 - in radians
      withColon - 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

      public int compare(Angle that)
      Specified by:
      compare in interface scala.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

      public Angle normalizedRa()
      returns Angle with value normalized between 0 to 2*PI
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • to

      public scala.collection.immutable.Seq<Angle> to(Angle maxVal, Angle increment)
      Returns sequence of angles with given max value and increment
    • until

      public scala.collection.immutable.Seq<Angle> until(Angle maxVal, Angle increment)
      Returns sequence of angles with given max value and increment