SunCalc 是一個小型BSD 許可的JavaScript 庫,用於計算給定位置和時間的太陽位置、日照相位(日出、日落、黃昏等時間)、月亮位置和月相,由Vladimir Agafonkin (@mourner) 創建,如下所示SunCalc.net 專案的一部分。
大多數計算都是基於有關太陽和行星位置的優秀天文學答案文章中給出的公式。您可以在 Wikipedia 上的暮光文章中了解 SunCalc 計算的不同暮光相位。
// 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 也可以作為 NPM 套件提供:
$ npm install suncalc
var SunCalc = require ( 'suncalc' ) ;
SunCalc . getTimes ( /*Date*/ date , /*Number*/ latitude , /*Number*/ longitude , /*Number (default=0)*/ height )
傳回具有以下屬性的物件(每個屬性都是Date
物件):
財產 | 描述 |
---|---|
sunrise | 日出(太陽的上緣出現在地平線上) |
sunriseEnd | 日出結束(太陽下邊緣觸及地平線) |
goldenHourEnd | 早晨黃金時段(光線柔和,最佳攝影時間)結束 |
solarNoon | 太陽正午(太陽處於最高位置) |
goldenHour | 傍晚黃金時段開始 |
sunsetStart | 日落開始(太陽的下緣觸及地平線) |
sunset | 日落(太陽消失在地平線下,黃昏開始) |
dusk | 黃昏(傍晚航海暮光開始) |
nauticalDusk | 航海黃昏(傍晚天文暮光開始) |
night | 夜晚開始(夠黑以進行天文觀測) |
nadir | nadir(夜晚最黑暗的時刻,太陽處於最低位置) |
nightEnd | 夜晚結束(早晨天文暮光開始) |
nauticalDawn | 航海黎明(航行黎明早晨開始) |
dawn | 黎明(航海晨光結束,民用晨光開始) |
SunCalc . addTime ( /*Number*/ angleInDegrees , /*String*/ morningName , /*String*/ eveningName )
將太陽到達給定角度時的自訂時間添加到SunCalc.getTimes
返回的結果中。
SunCalc.times
屬性包含所有目前定義的時間。
SunCalc . getPosition ( /*Date*/ timeAndDate , /*Number*/ latitude , /*Number*/ longitude )
傳回具有以下屬性的物件:
altitude
:太陽在地平線以上的高度(以弧度為單位),例如地平線處為0
,天頂處為PI/2
(正對著你的頭頂)azimuth
:以弧度為單位的太陽方位角(沿地平線的方向,從南到西測量),例如0
為南, Math.PI * 3/4
為西北 SunCalc . getMoonPosition ( /*Date*/ timeAndDate , /*Number*/ latitude , /*Number*/ longitude )
傳回具有以下屬性的物件:
altitude
:月球地平線以上的高度(以弧度為單位)azimuth
:以弧度為單位的月球方位角distance
:月球的距離(以公里為單位)parallacticAngle
: 月亮的視差角(以弧度為單位) SunCalc . getMoonIllumination ( /*Date*/ timeAndDate )
傳回具有以下屬性的物件:
fraction
: 月球被照亮的部分;變化範圍為0.0
(新月)到1.0
(滿月)phase
:月相;從0.0
到1.0
變化,如下所述angle
:從圓盤北點向東計算的月球被照亮邊緣的中點角(以弧度表示);若角度為負,則月亮為盈;若角度為正,則月亮為虧月相值應該這樣解釋:
階段 | 姓名 |
---|---|
0 | 新月 |
打蠟新月形 | |
0.25 | 第一季 |
打蠟凸凸 | |
0.5 | 滿月 |
漸虧凸月 | |
0.75 | 上季 |
漸虧新月 |
將angle
減去parallacticAngle
角,即可得到月亮明肢的天頂角(逆時針)。天頂角可用於從觀察者的角度繪製月亮形狀(例如,月亮仰臥)。
SunCalc . getMoonTimes ( /*Date*/ date , /*Number*/ latitude , /*Number*/ longitude [ , inUTC ] )
傳回具有以下屬性的物件:
rise
: 月出時間作為Date
set
:月落時間為Date
alwaysUp
:如果月亮從不升起/落下並且白天始終高於地平線, true
alwaysDown
:如果月亮始終位於地平線以下, true
預設情況下,它將在本地用戶當天(0 到 24 小時)搜尋月亮升起和落下。如果inUTC
設定為 true,它將改為搜尋 0 到 24 UTC 小時之間的指定日期。
getMoonPosition
添加了parallacticAngle
計算。getMoonIllumination
中預設為今天的日期。getMoonTimes
中加入了inUTC
參數。 SunCalc.getMoonTimes
用於計算月亮升起和落下時間。 SunCalc.times
屬性。SunCalc.getTimes
性能。 SunCalc.getMoonIllumination
結果中加入了phase
(月相)。SunCalc.getMoonIllumination
(取代getMoonFraction
),它傳回帶有fraction
和angle
(月亮被照亮的邊緣的角度)的物件。 SunCalc.getMoonFraction
函數,該函數傳回月球的照亮部分。 SunCalc.getMoonPosition
函數。SunCalc.addTime
函數。