حساب طول مسار النجوم
تقدّر حاسبة طول مسار النجوم مقدار الحركة الظاهرية لجسم سماوي أثناء التعريض عندما لا تتعقب الكاميرا أو التلسكوب حركة السماء.
شغّل الأداة مجانًا
أدخلوا مدة التعريض بالثواني والميل السماوي للجسم، فتحصلون على الطول الزاوي المثالي للمسار بالدرجات. يعتمد الحساب على متوسط معدل الدوران النجمي للأرض وعلى إسقاط جيب تمام الميل السماوي، ولذلك يفيد في تخطيط صور السماء الليلية، ومقارنة مدد التعريض، والتحقق من الحركة المتوقعة عبر مستشعر التصوير.
ما الذي يمثله طول المسار المحسوب
تدور الأرض دورة واحدة بالنسبة إلى النجوم البعيدة خلال اليوم النجمي، ولذلك تبدو النجوم وكأنها تعبر مجال كاميرا ثابتة طوال مدة التعريض. تعرض الحاسبة الطول الزاوي لهذه الحركة الظاهرية المثالية بالدرجات. يرسم الجسم الواقع على خط الاستواء السماوي أكبر دائرة ويتحرك بكامل معدل الدوران النجمي. وكلما اقترب الميل السماوي من أحد القطبين السماويين صغرت الدائرة المرسومة حول القطب، فأصبح المسار الزاوي أقصر عند مدة التعريض نفسها. وتعطي قيم الميل الموجبة والسالبة المتساوية في المقدار أطوالًا متساوية لأن إسقاط جيب التمام متناظر. تصف النتيجة حركة زاوية في السماء، ولا تصف مسافة بالبكسلات ولا الحركة الفيزيائية للجسم في الفضاء. ولتحويلها إلى طول على المستشعر، تحتاجون إلى مقياس الصورة الذي يُعبّر عنه عادة بالثواني القوسية لكل بكسل. يفترض النموذج نظامًا بصريًا ثابتًا تمامًا وحركة نجمية مثالية. ولا يشمل التتبع، أو خطأ المحاذاة القطبية، أو الانكسار الجوي، أو دوران المجال، أو تشوه العدسة، أو الحركة الخاصة للنجم.
كيف يدخل التعريض والميل السماوي في الصيغة
يستخدم الحساب الصيغة L = t × (360 / 86164.0905) × cos(δ). يمثّل L طول المسار الزاوي بالدرجات، ويمثّل t مدة التعريض بالثواني، وتمثّل 86164.0905 ثانية اليوم النجمي المتوسط المعتمد، أما δ فهو الميل السماوي المحوّل من الدرجات إلى الراديان لحساب جيب التمام. تتناسب النتيجة مباشرة مع مدة التعريض؛ فإذا ضاعفتم المدة تضاعف طول المسار المثالي. ويحدد الميل الإسقاط الهندسي: تحتفظ قيمة 0 درجة بالمعدل الكامل، وتخفضه 60 درجة إلى النصف، بينما يخفضه أي من القطبين إلى الصفر في النموذج المثالي. تقبل الحاسبة قيم ميل محدودة من -90 إلى +90 درجة شاملتين. ويجب أن تكون مدة التعريض محدودة وغير سالبة، لأن المدة السالبة بلا معنى فيزيائي؛ أما الصفر فقيمة صحيحة وتنتج مسارًا طوله صفر. تُقرّب النتائج إلى اثنتي عشرة منزلة عشرية لضمان ثبات المخرجات في المتصفح وAPI. كما يُعاد معدل الدوران المستخدم كي يكون الثابت المعتمد واضحًا وقابلًا للتدقيق أو لإعادة الاستخدام في حسابات تصوير أوسع.
استخدام النتيجة في تخطيط التصوير الفلكي
استخدموا الطول الزاوي لمقارنة مدد التعريض المحتملة قبل التصوير بحامل ثابت أو قبل تكوين صورة مقصودة لمسارات النجوم. ولتقدير المسار بالثواني القوسية، اضربوا القيمة المعادة بالدرجات في 3,600. وإذا كان مقياس منظومة التصوير معلومًا بالثواني القوسية لكل بكسل، فاقسموا طول المسار بالثواني القوسية على ذلك المقياس لتقدير طوله عبر المستشعر بالبكسلات. يساعد ذلك في تحديد ما إذا كانت الحركة ستبقى دون حد الحدة المختار أم ستظهر استطالة واضحة. تذكروا أن الصيغة تعتمد فقط على التعريض والميل السماوي؛ فلا يغير البعد البؤري أو تباعد البكسلات أو أبعاد المستشعر الحركة الزاوية، لكنها تؤثر بقوة في شكلها داخل الصورة. قد تجعل العدسة شديدة الاتساع المسارات القصيرة غير ملحوظة، بينما يُظهر البعد البؤري الطويل الإزاحة الزاوية نفسها عبر عدد أكبر من البكسلات. وفي الحوامل المتتبعة تمثّل النتيجة الحركة التي يحاول الحامل إلغاءها، لا المسار المتبقي. تبلغ كلفة كل حساب آلي عبر API مقدار $0.002، ويمكن أيضًا تنفيذ الحساب الحتمي محليًا في المتصفح.
حالات الاستخدام
اختيار تعريض باستخدام حامل ثابت
قارنوا أطوال المسارات لمدد تعريض متعددة عند ميل الجسم قبل التقاط صورة ليلية من دون تتبع.
تخطيط مسارات نجمية مقصودة
قدّروا القوس الزاوي الذي تراكمه النجوم في إطار واحد عند تكوين صورة لمسارات نجمية مقصودة.
تحويل الحركة إلى بكسلات المستشعر
ادمجوا النتيجة الزاوية مع مقياس المنظومة بالثواني القوسية لكل بكسل لتقدير المسار على الكاشف.
الأسئلة الشائعة
ما الصيغة التي تستخدمها الحاسبة؟
تستخدم طول المسار = ثواني التعريض × (360 / 86164.0905) × cos(الميل السماوي)، وتعرض الطول الزاوي الناتج بالدرجات.
لماذا يغيّر الميل السماوي طول المسار؟
ترسم النجوم قرب خط الاستواء السماوي دوائر ظاهرية أكبر من النجوم قرب القطب؛ لذلك يسقط جيب تمام الميل المعدل النجمي على مسار أصغر.
هل يمكن أن تكون مدة التعريض صفرًا؟
نعم. التعريض لمدة صفر ثانية صحيح ويعيد طول مسار يساوي صفرًا؛ أما المدة السالبة فتنتج خطأ إدخال غير صالح.
كيف تُحوّل النتيجة إلى ثوانٍ قوسية أو بكسلات؟
اضربوا الدرجات في 3,600 للحصول على الثواني القوسية، ثم اقسموا على مقياس منظومة التصوير بالثواني القوسية لكل بكسل.
هل يراعي الحساب حاملًا متتبعًا؟
لا. فهو يعطي الحركة النجمية الظاهرية المثالية لنظام ثابت. يحاول الحامل إلغاء هذه الحركة، وتحتاج أخطاؤه المتبقية إلى نموذج منفصل.
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/astro/star-trail-length \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"exposure_seconds":120,"declination_deg":30}'const res = await fetch("https://api.kit.forhosting.com/astro/star-trail-length", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"exposure_seconds": 120,
"declination_deg": 30
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/astro/star-trail-length",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"exposure_seconds": 120,
"declination_deg": 30
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/astro/star-trail-length", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"exposure_seconds":120,"declination_deg":30}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"exposure_seconds":120,"declination_deg":30}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/astro/star-trail-length", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"exposure_seconds": 120,
"declination_deg": 30
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "astro.star_trail_length",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |