SunCalc é uma pequena biblioteca JavaScript licenciada por BSD para calcular a posição do sol, fases da luz solar (horários do nascer do sol, pôr do sol, anoitecer, etc.), posição da lua e fase lunar para um determinado local e hora, criada por Vladimir Agafonkin (@mourner) como parte do projeto SunCalc.net.
A maioria dos cálculos é baseada nas fórmulas fornecidas nos excelentes artigos do Astronomy Answers sobre a posição do sol e dos planetas. Você pode ler sobre as diferentes fases do crepúsculo calculadas pelo SunCalc no artigo Crepúsculo na 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 também está disponível como um pacote NPM:
$ npm install suncalc
var SunCalc = require ( 'suncalc' ) ;
SunCalc . getTimes ( /*Date*/ date , /*Number*/ latitude , /*Number*/ longitude , /*Number (default=0)*/ height )
Retorna um objeto com as seguintes propriedades (cada uma é um objeto Date
):
Propriedade | Descrição |
---|---|
sunrise | nascer do sol (a borda superior do sol aparece no horizonte) |
sunriseEnd | o nascer do sol termina (a borda inferior do sol toca o horizonte) |
goldenHourEnd | a hora dourada da manhã (luz suave, melhor horário para fotografar) termina |
solarNoon | meio-dia solar (o sol está na posição mais alta) |
goldenHour | a hora dourada da noite começa |
sunsetStart | o pôr do sol começa (a borda inferior do sol toca o horizonte) |
sunset | pôr do sol (o sol desaparece abaixo do horizonte, o crepúsculo civil noturno começa) |
dusk | crepúsculo (começa o crepúsculo náutico noturno) |
nauticalDusk | crepúsculo náutico (começa o crepúsculo astronômico da noite) |
night | a noite começa (escura o suficiente para observações astronômicas) |
nadir | nadir (momento mais escuro da noite, o sol está na posição mais baixa) |
nightEnd | a noite termina (o crepúsculo astronômico da manhã começa) |
nauticalDawn | amanhecer náutico (começa o crepúsculo náutico da manhã) |
dawn | amanhecer (termina o crepúsculo náutico da manhã, começa o crepúsculo civil da manhã) |
SunCalc . addTime ( /*Number*/ angleInDegrees , /*String*/ morningName , /*String*/ eveningName )
Adiciona um horário personalizado quando o sol atinge o ângulo determinado aos resultados retornados por SunCalc.getTimes
.
A propriedade SunCalc.times
contém todos os horários definidos atualmente.
SunCalc . getPosition ( /*Date*/ timeAndDate , /*Number*/ latitude , /*Number*/ longitude )
Retorna um objeto com as seguintes propriedades:
altitude
: altitude do sol acima do horizonte em radianos, por exemplo, 0
no horizonte e PI/2
no zênite (diretamente acima de sua cabeça)azimuth
: azimute do sol em radianos (direção ao longo do horizonte, medido de sul a oeste), por exemplo, 0
é sul e Math.PI * 3/4
é noroeste SunCalc . getMoonPosition ( /*Date*/ timeAndDate , /*Number*/ latitude , /*Number*/ longitude )
Retorna um objeto com as seguintes propriedades:
altitude
: altitude da lua acima do horizonte em radianosazimuth
: azimute da lua em radianosdistance
: distância até a lua em quilômetrosparallacticAngle
: ângulo paralático da lua em radianos SunCalc . getMoonIllumination ( /*Date*/ timeAndDate )
Retorna um objeto com as seguintes propriedades:
fraction
: fração iluminada da lua; varia de 0.0
(lua nova) a 1.0
(lua cheia)phase
: fase da lua; varia de 0.0
a 1.0
, descrito abaixoangle
: ângulo do ponto médio em radianos do membro iluminado da lua calculado a leste do ponto norte do disco; a lua está aumentando se o ângulo for negativo e minguante se for positivoO valor da fase da lua deve ser interpretado assim:
Fase | Nome |
---|---|
0 | Lua nova |
Crescente Crescente | |
0,25 | Primeiro Trimestre |
Depilação Gibosa | |
0,5 | Lua Cheia |
Minguante Giboso | |
0,75 | Último trimestre |
Crescente Minguante |
Subtraindo o parallacticAngle
do angle
pode-se obter o ângulo zenital do membro brilhante da lua (sentido anti-horário). O ângulo zenital pode ser usado para desenhar a forma da lua a partir da perspectiva do observador (por exemplo, a lua deitada de costas).
SunCalc . getMoonTimes ( /*Date*/ date , /*Number*/ latitude , /*Number*/ longitude [ , inUTC ] )
Retorna um objeto com as seguintes propriedades:
rise
: hora do nascer da lua como Date
set
: hora do pôr da lua como Date
alwaysUp
: true
se a lua nunca nasce/se põe e está sempre acima do horizonte durante o diaalwaysDown
: true
se a lua estiver sempre abaixo do horizonte Por padrão, ele procurará o nascer e o pôr da lua durante o dia do usuário local (de 0 a 24 horas). Se inUTC
for definido como verdadeiro, ele pesquisará a data especificada de 0 a 24 horas UTC.
parallacticAngle
a getMoonPosition
.getMoonIllumination
.inUTC
a getMoonTimes
. SunCalc.getMoonTimes
para calcular o nascer e o pôr da lua. SunCalc.times
exposta com horários de verão definidos.SunCalc.getTimes
. phase
aos resultados SunCalc.getMoonIllumination
(fase da lua).SunCalc.getMoonIllumination
(no lugar de getMoonFraction
) que retorna um objeto com fraction
e angle
(ângulo do membro iluminado da lua). SunCalc.getMoonFraction
que retorna a fração iluminada da lua. SunCalc.getMoonPosition
.SunCalc.addTime
.