SunCalc เป็นไลบรารี JavaScript เล็กๆ ที่ได้รับอนุญาตจาก BSD สำหรับการคำนวณตำแหน่งดวงอาทิตย์ ระยะแสงแดด (เวลาพระอาทิตย์ขึ้น พระอาทิตย์ตก ค่ำ ฯลฯ) ตำแหน่งดวงจันทร์ และข้างขึ้นข้างแรมสำหรับตำแหน่งและเวลาที่กำหนด สร้างโดย Vladimir Agafonkin (@mourner) เป็น ส่วนหนึ่งของโครงการ SunCalc.net
การคำนวณส่วนใหญ่ขึ้นอยู่กับสูตรที่ให้ไว้ในบทความ Astronomy Answers ที่ยอดเยี่ยมเกี่ยวกับตำแหน่งของดวงอาทิตย์และดาวเคราะห์ คุณสามารถอ่านเกี่ยวกับระยะพลบค่ำต่างๆ ที่คำนวณโดย SunCalc ได้ในบทความ Twilight บน 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 | ไตรมาสแรก |
แว็กซ์ Gibbous | |
0.5 | พระจันทร์เต็มดวง |
จางหายไป Gibbous | |
0.75 | ไตรมาสที่แล้ว |
จันทร์เสี้ยวข้างแรม |
การลบ parallacticAngle
ออกจาก angle
จะทำให้ได้มุมสุดยอดของแขนขาที่สว่างของดวงจันทร์ (ทวนเข็มนาฬิกา) มุมซีนิทสามารถนำมาใช้วาดรูปดวงจันทร์จากมุมมองของผู้สังเกตการณ์ได้ (เช่น ดวงจันทร์นอนหงาย)
SunCalc . getMoonTimes ( /*Date*/ date , /*Number*/ latitude , /*Number*/ longitude [ , inUTC ] )
ส่งกลับวัตถุที่มีคุณสมบัติดังต่อไปนี้:
rise
: เวลาพระจันทร์ขึ้นเป็น Date
set
: เวลาพระจันทร์ตกเป็น Date
alwaysUp
: true
หากดวงจันทร์ไม่เคยขึ้น/ตกและอยู่ เหนือ ขอบฟ้าในระหว่างวันเสมอalwaysDown
: true
หากดวงจันทร์อยู่ ใต้ ขอบฟ้าเสมอ โดยค่าเริ่มต้น ระบบจะค้นหาการขึ้นของดวงจันทร์และการตั้งค่าในระหว่างวันของผู้ใช้ในพื้นที่ (ตั้งแต่ 0 ถึง 24 ชั่วโมง) หากตั้งค่า inUTC
เป็นจริง ระบบจะค้นหาวันที่ที่ระบุจาก 0 ถึง 24 ชั่วโมง UTC แทน
parallacticAngle
เพื่อ getMoonPosition
getMoonIllumination
inUTC
เพื่อ getMoonTimes
SunCalc.getMoonTimes
สำหรับการคำนวณการขึ้นของดวงจันทร์และกำหนดเวลา SunCalc.times
พร้อมกำหนดเวลากลางวันSunCalc.getTimes
เล็กน้อย phase
ให้กับผลลัพธ์ SunCalc.getMoonIllumination
(ข้างขึ้นข้างแรม)SunCalc.getMoonIllumination
(แทนที่ getMoonFraction
) ที่ส่งคืนวัตถุที่มี fraction
และ angle
(มุมของแขนขาที่ส่องสว่างของดวงจันทร์) SunCalc.getMoonFraction
ที่จะส่งคืนเศษส่วนที่ส่องสว่างของดวงจันทร์ SunCalc.getMoonPosition
SunCalc.addTime