SunCalc est une petite bibliothèque JavaScript sous licence BSD pour calculer la position du soleil, les phases du soleil (heures de lever, coucher, crépuscule, etc.), la position de la lune et la phase lunaire pour le lieu et l'heure donnés, créée par Vladimir Agafonkin (@mourner) comme une partie du projet SunCalc.net.
La plupart des calculs sont basés sur les formules données dans les excellents articles Astronomy Answers sur la position du soleil et des planètes. Vous pouvez en savoir plus sur les différentes phases crépusculaires calculées par SunCalc dans l'article Twilight sur Wikipedia.
// get today's sunlight times for London
var times = SunCalc . getTimes ( new Date ( ) , 51.5 , - 0.1 ) ;
// format sunrise time from the Date object
var sunriseStr = times . sunrise . getHours ( ) + ':' + times . sunrise . getMinutes ( ) ;
// get position of the sun (azimuth and altitude) at today's sunrise
var sunrisePos = SunCalc . getPosition ( times . sunrise , 51.5 , - 0.1 ) ;
// get sunrise azimuth in degrees
var sunriseAzimuth = sunrisePos . azimuth * 180 / Math . PI ;
SunCalc est également disponible sous forme de package NPM :
$ npm install suncalc
var SunCalc = require ( 'suncalc' ) ;
SunCalc . getTimes ( /*Date*/ date , /*Number*/ latitude , /*Number*/ longitude , /*Number (default=0)*/ height )
Renvoie un objet avec les propriétés suivantes (chacune est un objet Date
) :
Propriété | Description |
---|---|
sunrise | lever du soleil (le bord supérieur du soleil apparaît à l'horizon) |
sunriseEnd | le lever du soleil se termine (le bord inférieur du soleil touche l'horizon) |
goldenHourEnd | L'heure dorée du matin (lumière douce, meilleur moment pour la photographie) se termine |
solarNoon | midi solaire (le soleil est dans la position la plus haute) |
goldenHour | l'heure d'or du soir commence |
sunsetStart | le coucher du soleil commence (le bord inférieur du soleil touche l'horizon) |
sunset | coucher de soleil (le soleil disparaît sous l'horizon, le crépuscule civil du soir commence) |
dusk | crépuscule (le crépuscule nautique du soir commence) |
nauticalDusk | crépuscule nautique (le crépuscule astronomique du soir commence) |
night | la nuit commence (assez sombre pour les observations astronomiques) |
nadir | nadir (moment le plus sombre de la nuit, le soleil est dans la position la plus basse) |
nightEnd | la nuit se termine (le crépuscule astronomique du matin commence) |
nauticalDawn | aube nautique (le crépuscule nautique du matin commence) |
dawn | aube (le crépuscule nautique du matin se termine, le crépuscule civil du matin commence) |
SunCalc . addTime ( /*Number*/ angleInDegrees , /*String*/ morningName , /*String*/ eveningName )
Ajoute une heure personnalisée à laquelle le soleil atteint l'angle donné aux résultats renvoyés par SunCalc.getTimes
.
La propriété SunCalc.times
contient toutes les heures actuellement définies.
SunCalc . getPosition ( /*Date*/ timeAndDate , /*Number*/ latitude , /*Number*/ longitude )
Renvoie un objet avec les propriétés suivantes :
altitude
: altitude du soleil au dessus de l'horizon en radians, par exemple 0
à l'horizon et PI/2
au zénith (droit au-dessus de votre tête)azimuth
: azimut du soleil en radians (direction le long de l'horizon, mesuré du sud à l'ouest), par exemple 0
est le sud et Math.PI * 3/4
est le nord-ouest SunCalc . getMoonPosition ( /*Date*/ timeAndDate , /*Number*/ latitude , /*Number*/ longitude )
Renvoie un objet avec les propriétés suivantes :
altitude
: altitude de la lune au dessus de l'horizon en radiansazimuth
: azimut de la lune en radiansdistance
: distance à la lune en kilomètresparallacticAngle
: angle parallactique de la lune en radians SunCalc . getMoonIllumination ( /*Date*/ timeAndDate )
Renvoie un objet avec les propriétés suivantes :
fraction
: fraction éclairée de la lune ; varie de 0.0
(nouvelle lune) à 1.0
(pleine lune)phase
: phase de lune ; varie de 0.0
à 1.0
, décrit ci-dessousangle
: angle médian en radians du limbe illuminé de la lune, calculé vers l'est à partir de la pointe nord du disque ; la lune croît si l'angle est négatif et décroît si l'angle est positifLa valeur de la phase lunaire doit être interprétée comme ceci :
Phase | Nom |
---|---|
0 | Nouvelle lune |
Croissant d'épilation | |
0,25 | Premier trimestre |
Épilation gibbeuse | |
0,5 | Pleine lune |
Gibbeux décroissant | |
0,75 | Dernier trimestre |
Croissant décroissant |
En soustrayant l' parallacticAngle
de l' angle
on peut obtenir l'angle zénithal du membre brillant de la lune (dans le sens inverse des aiguilles d'une montre). L'angle zénithal peut être utilisé pour dessiner la forme de la lune du point de vue de l'observateur (par exemple, la lune couchée sur le dos).
SunCalc . getMoonTimes ( /*Date*/ date , /*Number*/ latitude , /*Number*/ longitude [ , inUTC ] )
Renvoie un objet avec les propriétés suivantes :
rise
: heure du lever de la lune comme Date
set
: l'heure du coucher de la lune comme Date
alwaysUp
: true
si la lune ne se lève/se couche jamais et est toujours au-dessus de l'horizon pendant la journéealwaysDown
: true
si la lune est toujours en dessous de l'horizon Par défaut, il recherchera le lever de la lune et se définira pendant la journée de l'utilisateur local (de 0 à 24 heures). Si inUTC
est défini sur true, il recherchera à la place la date spécifiée de 0 à 24 heures UTC.
parallacticAngle
à getMoonPosition
.getMoonIllumination
.inUTC
à getMoonTimes
. SunCalc.getMoonTimes
pour calculer les heures de lever et de réglage de la lune. SunCalc.times
exposée avec des heures d'été définies.SunCalc.getTimes
légèrement améliorées. phase
ajoutée aux résultats SunCalc.getMoonIllumination
(phase de lune).SunCalc.getMoonIllumination
(à la place de getMoonFraction
) qui renvoie un objet avec fraction
et angle
(angle du membre illuminé de la lune). SunCalc.getMoonFraction
qui renvoie la fraction éclairée de la lune. SunCalc.getMoonPosition
.SunCalc.addTime
.