Class SunRelativePosition


  • public class SunRelativePosition
    extends Object
    Calcule la position du soleil relativement à la position de l'observateur. Cette classe reçoit en entrés les coordonnées spatio-temporelles de l'observateur, soit:
     
    • La longitude (en degrées) de l'observateur;
    • La latitude (en degrées) de l'observateur;
    • La date et heure en heure universelle (GMT).
    La position du soleil calculée en sortie comprend les valeurs suivantes:
    • L'azimuth du soleil (en degrés dans le sens des aiguilles d'une montre depuis le nord);
    • L'élévation du soleil (en degrés par rapport a l'horizon).
    Les algorithmes utilisés dans cette classe sont des adaptations des algorithmes en javascript écrit par le "National Oceanic and Atmospheric Administration, Surface Radiation Research Branch". L'application original est le

    Solar Position Calculator.

    The approximations used in these programs are very good for years between 1800 and 2100. Results should still be sufficiently accurate for the range from -1000 to 3000. Outside of this range, results will be given, but the potential for error is higher.

    Since:
    2.1
    Author:
    Remi Eve, Martin Desruisseaux (IRD)
    • Field Detail

      • ASTRONOMICAL_TWILIGHT

        public static final double ASTRONOMICAL_TWILIGHT
        Elevation angle of astronomical twilight, in degrees. Astronomical twilight is the time of morning or evening when the sun is 18° below the horizon (solar elevation angle of -18°).
        See Also:
        Constant Field Values
      • NAUTICAL_TWILIGHT

        public static final double NAUTICAL_TWILIGHT
        Elevation angle of nautical twilight, in degrees. Nautical twilight is the time of morning or evening when the sun is 12° below the horizon (solar elevation angle of -12°).
        See Also:
        Constant Field Values
      • CIVIL_TWILIGHT

        public static final double CIVIL_TWILIGHT
        Elevation angle of civil twilight, in degrees. Civil twilight is the time of morning or evening when the sun is 6° below the horizon (solar elevation angle of -6°).
        See Also:
        Constant Field Values
    • Constructor Detail

      • SunRelativePosition

        public SunRelativePosition()
        Constructs a sun relative position calculator.
      • SunRelativePosition

        public SunRelativePosition​(double twilight)
                            throws IllegalArgumentException
        Constructs a sun relative position calculator with the specified value for the sun elevation at twilight.
        Parameters:
        twilight - The new sun elevation at twilight, or Double.NaN if no twilight value should be taken in account.
        Throws:
        IllegalArgumentException - if the twilight value is illegal.
    • Method Detail

      • setCoordinate

        public void setCoordinate​(double longitude,
                                  double latitude)
        Set the geographic coordinate where to compute the elevation and azimuth.
        Parameters:
        longitude - The longitude in degrees. Positive values are East; negative values are West.
        latitude - The latitude in degrees. Positive values are North, negative values are South.
      • setCoordinate

        public void setCoordinate​(Point2D point)
        Set the geographic coordinate where to compute the elevation and azimuth.
        Parameters:
        point - The geographic coordinates in degrees of longitude and latitude.
      • getCoordinate

        public Point2D getCoordinate()
        Returns the coordinate used for elevation and azimuth computation. This is the coordinate specified during the last call to a setCoordinate(...) method.
      • setDate

        public void setDate​(Date date)
        Set the date and time when to compute the elevation and azimuth.
        Parameters:
        date - The date and time.
      • setTwilight

        public void setTwilight​(double twilight)
                         throws IllegalArgumentException
        Set the sun's elevation angle at twilight, in degrees. Common values are defined for the astronomical twilight (-18°), nautical twilight (-12°) and civil twilight (-6°). The elevation and azimuth are set to NaN when the sun elevation is below the twilight value (i.e. during night). The default value is CIVIL_TWILIGHT.
        Parameters:
        twilight - The new sun elevation at twilight, or Double.NaN if no twilight value should be taken in account.
        Throws:
        IllegalArgumentException - if the twilight value is illegal.
      • getAzimuth

        public double getAzimuth()
        Retourne l'azimuth en degrés.
        Returns:
        L'azimuth en degrés.
      • getElevation

        public double getElevation()
        Retourne l'élévation en degrés.
        Returns:
        L'élévation en degrés.
      • getNoonTime

        public long getNoonTime()
        Retourne l'heure à laquelle le soleil est au plus haut. L'heure est retournée en nombre de millisecondes écoulées depuis le debut de la journée (minuit) en heure UTC.
      • getNoonDate

        public Date getNoonDate()
        Retourne la date à laquelle le soleil est au plus haut dans la journée. Cette méthode est équivalente à getNoonTime() mais inclue le jour de la date qui avait été spécifiée à la méthode compute().
      • main

        public static void main​(String... args)
                         throws ParseException
        Affiche la position du soleil à la date et coordonnées spécifiée. Cette application peut être lancée avec la syntaxe suivante:
        SunRelativePosition [longitude] [latitude] [date]
        date est un argument optionel spécifiant la date et l'heure. Si cet argument est omis, la date et heure actuelles seront utilisées.
        Throws:
        ParseException