SunCalc adalah perpustakaan JavaScript kecil berlisensi BSD untuk menghitung posisi matahari, fase sinar matahari (waktu matahari terbit, terbenam, senja, dll.), posisi bulan dan fase bulan untuk lokasi dan waktu tertentu, dibuat oleh Vladimir Agafonkin (@mourner) sebagai bagian dari proyek SunCalc.net.
Sebagian besar perhitungan didasarkan pada rumus yang diberikan dalam artikel Astronomy Answers yang sangat bagus tentang posisi matahari dan planet-planet. Anda dapat membaca tentang berbagai fase senja yang dihitung oleh SunCalc di artikel Twilight di 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 juga tersedia sebagai paket NPM:
$ npm install suncalc
var SunCalc = require ( 'suncalc' ) ;
SunCalc . getTimes ( /*Date*/ date , /*Number*/ latitude , /*Number*/ longitude , /*Number (default=0)*/ height )
Mengembalikan objek dengan properti berikut (masing-masing adalah objek Date
):
Milik | Keterangan |
---|---|
sunrise | matahari terbit (tepi atas matahari muncul di cakrawala) |
sunriseEnd | matahari terbit berakhir (tepi bawah matahari menyentuh cakrawala) |
goldenHourEnd | pagi hari jam emas (cahaya lembut, waktu terbaik untuk fotografi) berakhir |
solarNoon | solar noon (matahari berada pada posisi tertinggi) |
goldenHour | jam emas malam dimulai |
sunsetStart | matahari terbenam dimulai (tepi bawah matahari menyentuh cakrawala) |
sunset | matahari terbenam (matahari menghilang di bawah cakrawala, senja sipil malam dimulai) |
dusk | senja (senja bahari malam dimulai) |
nauticalDusk | senja bahari (senja astronomi malam dimulai) |
night | malam dimulai (cukup gelap untuk pengamatan astronomi) |
nadir | nadir (saat paling gelap di malam hari, matahari berada di posisi terendah) |
nightEnd | malam berakhir (senja astronomi pagi dimulai) |
nauticalDawn | fajar bahari (pagi senja bahari dimulai) |
dawn | fajar (pagi senja bahari berakhir, senja sipil pagi dimulai) |
SunCalc . addTime ( /*Number*/ angleInDegrees , /*String*/ morningName , /*String*/ eveningName )
Menambahkan waktu khusus saat matahari mencapai sudut tertentu ke hasil yang dikembalikan oleh SunCalc.getTimes
.
Properti SunCalc.times
berisi semua waktu yang ditentukan saat ini.
SunCalc . getPosition ( /*Date*/ timeAndDate , /*Number*/ latitude , /*Number*/ longitude )
Mengembalikan objek dengan properti berikut:
altitude
: ketinggian matahari di atas cakrawala dalam radian, misal 0
di cakrawala dan PI/2
di puncak (tepat di atas kepala)azimuth
: azimuth matahari dalam radian (arah sepanjang cakrawala, diukur dari selatan ke barat), misal 0
adalah selatan dan Math.PI * 3/4
adalah barat laut SunCalc . getMoonPosition ( /*Date*/ timeAndDate , /*Number*/ latitude , /*Number*/ longitude )
Mengembalikan objek dengan properti berikut:
altitude
: ketinggian bulan di atas cakrawala dalam radianazimuth
: azimuth bulan dalam radiandistance
: jarak ke bulan dalam kilometerparallacticAngle
: sudut parallactic bulan dalam radian SunCalc . getMoonIllumination ( /*Date*/ timeAndDate )
Mengembalikan objek dengan properti berikut:
fraction
: pecahan bulan yang diterangi; bervariasi dari 0.0
(bulan baru) hingga 1.0
(bulan purnama)phase
: fase bulan; bervariasi dari 0.0
hingga 1.0
, dijelaskan di bawahangle
: sudut titik tengah dalam radian bagian bulan yang diterangi dihitung ke arah timur dari titik utara piringan; bulan membesar jika sudutnya negatif, dan memudar jika sudutnya positifNilai fase bulan harus diartikan seperti ini:
Fase | Nama |
---|---|
0 | Bulan Baru |
Bulan Sabit Lilin | |
0,25 | Kuartal Pertama |
Waxing Gibbous | |
0,5 | Bulan purnama |
Memudarnya Gibbous | |
0,75 | Kuartal Terakhir |
Bulan Sabit yang Memudar |
Dengan mengurangkan parallacticAngle
dari angle
tersebut, seseorang dapat memperoleh sudut puncak dari bagian terang bulan (berlawanan arah jarum jam). Sudut puncak dapat digunakan untuk menggambar bentuk bulan dari sudut pandang pengamat (misalnya bulan berbaring telentang).
SunCalc . getMoonTimes ( /*Date*/ date , /*Number*/ latitude , /*Number*/ longitude [ , inUTC ] )
Mengembalikan objek dengan properti berikut:
rise
: waktu bulan terbit sebagai Date
set
: waktu terbenamnya bulan sebagai Date
alwaysUp
: true
jika bulan tidak pernah terbit/terbenam dan selalu berada di atas cakrawala pada siang harialwaysDown
: true
jika bulan selalu berada di bawah cakrawala Secara default, ia akan mencari terbitnya bulan dan diatur pada hari pengguna lokal (dari 0 hingga 24 jam). Jika inUTC
disetel ke true, ia akan mencari tanggal yang ditentukan dari 0 hingga 24 jam UTC.
parallacticAngle
ke getMoonPosition
.getMoonIllumination
.inUTC
ke getMoonTimes
. SunCalc.getMoonTimes
untuk menghitung terbitnya bulan dan waktu yang ditentukan. SunCalc.times
dengan waktu siang hari yang ditentukan.SunCalc.getTimes
sedikit meningkat. phase
ke hasil SunCalc.getMoonIllumination
(fase bulan).SunCalc.getMoonIllumination
(sebagai pengganti getMoonFraction
) yang mengembalikan objek dengan fraction
dan angle
(sudut bagian bulan yang diterangi). SunCalc.getMoonFraction
yang mengembalikan pecahan bulan yang diterangi. SunCalc.getMoonPosition
.SunCalc.addTime
.