SunCalc هي مكتبة جافا سكريبت صغيرة مرخصة من BSD لحساب موقع الشمس ومراحل ضوء الشمس (أوقات شروق الشمس وغروبها وغسقها وما إلى ذلك)، وموقع القمر ومرحلة القمر للموقع والوقت المحددين، أنشأها فلاديمير أجافونكين (@mourner) باسم جزء من مشروع SunCalc.net.
تعتمد معظم الحسابات على الصيغ الواردة في مقالات إجابات علم الفلك الممتازة حول موقع الشمس والكواكب. يمكنك أن تقرأ عن مراحل الشفق المختلفة التي تم حسابها بواسطة SunCalc في مقالة Twilight على ويكيبيديا.
// 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 | الربع الأول |
الصبح جيبوس | |
0.5 | اكتمال القمر |
يتضاءل جيبوس | |
0.75 | الربع الأخير |
الهلال المتضاءل |
من خلال طرح parallacticAngle
من angle
يمكن الحصول على زاوية سمت الطرف الساطع للقمر (عكس اتجاه عقارب الساعة). يمكن استخدام زاوية السمت لرسم شكل القمر من منظور المراقبين (على سبيل المثال، القمر مستلقي على ظهره).
SunCalc . getMoonTimes ( /*Date*/ date , /*Number*/ latitude , /*Number*/ longitude [ , inUTC ] )
إرجاع كائن بالخصائص التالية:
rise
: وقت طلوع القمر Date
set
: وقت غروب القمر Date
alwaysUp
: true
إذا لم يشرق القمر أبدًا أو يغيب ويكون دائمًا فوق الأفق أثناء النهارalwaysDown
: true
إذا كان القمر دائمًا تحت الأفق افتراضيًا، سيتم البحث عن ارتفاع القمر وضبطه خلال يوم المستخدم المحلي (من 0 إلى 24 ساعة). إذا تم ضبط inUTC
على true، فسيقوم بدلاً من ذلك بالبحث في التاريخ المحدد من 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
.