SunCalc は、指定された場所と時間における太陽の位置、太陽光の位相 (日の出、日の入り、夕暮れの時間など)、月の位置と月の位相を計算するための小さな BSD ライセンスの JavaScript ライブラリであり、Vladimir Agafonkin (@mourner) によって作成されました。 SunCalc.net プロジェクトの一部。
ほとんどの計算は、太陽と惑星の位置に関する優れた Astronomy Answers 記事に記載されている公式に基づいています。 SunCalc によって計算されたさまざまなトワイライトフェーズについては、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 は、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 | 天底(夜の最も暗い瞬間、太陽が最も低い位置にある) |
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 | 第 1 四半期 |
ギブスのワックスがけ | |
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 に設定されている場合、代わりに指定された日付を UTC 時間 0 ~ 24 時間で検索します。
getMoonPosition
にparallacticAngle
計算を追加しました。getMoonIllumination
のデフォルトは今日の日付です。inUTC
引数をgetMoonTimes
に追加しました。 SunCalc.getMoonTimes
を追加しました。 SunCalc.times
プロパティを公開しました。SunCalc.getTimes
パフォーマンスがわずかに向上しました。 SunCalc.getMoonIllumination
の結果にphase
を追加しました (月の位相)。fraction
とangle
(照らされた月の縁の角度) を含むオブジェクトを返すSunCalc.getMoonIllumination
( getMoonFraction
の代わり) を追加しました。 SunCalc.getMoonFraction
関数を追加しました。 SunCalc.getMoonPosition
関数を追加しました。SunCalc.addTime
関数を追加しました。