SunCalc는 Vladimir Agafonkin(@mourner)이 만든 특정 위치 및 시간에 대한 태양 위치, 햇빛 위상(일출, 일몰, 황혼 등의 시간), 달 위치 및 달 위상을 계산하기 위한 작은 BSD 라이센스 JavaScript 라이브러리입니다. SunCalc.net 프로젝트의 일부입니다.
대부분의 계산은 태양과 행성의 위치에 관한 우수한 천문학 답변 기사에 제공된 공식을 기반으로 합니다. Wikipedia의 Twilight 기사에서 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 | 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
의 기본값은 오늘 날짜입니다.getMoonTimes
에 inUTC
인수를 추가했습니다. SunCalc.getMoonTimes
추가했습니다. SunCalc.times
속성이 노출되었습니다.SunCalc.getTimes
성능이 약간 향상되었습니다. SunCalc.getMoonIllumination
결과에 phase
추가했습니다(달 위상).fraction
와 angle
(빛이 비치는 달의 가지 각도)가 있는 객체를 반환하는 SunCalc.getMoonIllumination
( getMoonFraction
대신)을 추가했습니다. SunCalc.getMoonFraction
함수가 추가되었습니다. SunCalc.getMoonPosition
함수를 추가했습니다.SunCalc.addTime
기능이 추가되었습니다.