نقشه تعاملی SVG آسمان شب را تولید کنید که صورتهای فلکی قابل مشاهده را بر اساس تاریخ، زمان و مکان نشان میدهد. ویژگیها شامل شناسایی خودکار یا ورودی مختصات دستی، نامهای صورت فلکی، موقعیت ستارهها و خط افق است.
برنامه مشاهده صورتهای فلکی ابزاری قدرتمند برای علاقهمندان به نجوم و ستارهشناسان است. این برنامه به کاربران اجازه میدهد تا آسمان شب را تجسم کنند و صورتهای فلکی قابل مشاهده را بر اساس موقعیت، تاریخ و زمان خود شناسایی کنند. این برنامه تعاملی یک نقشه آسمان شب SVG ساده را ارائه میدهد که نامهای صورتهای فلکی، موقعیتهای اساسی ستارهها و خط افق را در یک رابط تک صفحهای نمایش میدهد.
این برنامه از ترکیبی از مختصات سماوی و محاسبات زمان برای تعیین اینکه کدام صورتهای فلکی در آسمان شب قابل مشاهده هستند، استفاده میکند:
صعود راست (RA) و انحراف (Dec): اینها معادلهای سماوی طول و عرض جغرافیایی هستند. RA به ساعت (0 تا 24) اندازهگیری میشود و Dec به درجه (-90° تا +90°).
زمان ستارهای محلی (LST): این با استفاده از طول جغرافیایی ناظر و تاریخ و زمان فعلی محاسبه میشود. LST تعیین میکند که کدام قسمت از کره سماوی در حال حاضر در بالای سر است.
زاویه ساعت (HA): این فاصله زاویهای بین نصفالنهار و یک جسم سماوی است که به صورت زیر محاسبه میشود:
ارتفاع (Alt) و ازیموت (Az): اینها با استفاده از فرمولهای زیر محاسبه میشوند:
که در آن Lat عرض جغرافیایی ناظر است.
این برنامه مراحل زیر را برای تعیین صورتهای فلکی قابل مشاهده و رندر نقشه آسمان انجام میدهد:
برنامه مشاهده صورتهای فلکی کاربردهای مختلفی دارد:
در حالی که برنامه مشاهده صورتهای فلکی ما یک روش ساده و قابل دسترس برای مشاهده آسمان شب ارائه میدهد، ابزارهای دیگری نیز در دسترس هستند:
تاریخچه نقشهبرداری صورتهای فلکی و نمودارهای ستارهای به هزاران سال پیش برمیگردد:
این برنامه از یک پایگاه داده سادهشده صورتهای فلکی استفاده میکند که در یک فایل TypeScript ذخیره شده است:
1export interface Star {
2 ra: number; // صعود راست به ساعت
3 dec: number; // انحراف به درجه
4 magnitude: number; // روشنایی ستاره
5}
6
7export interface Constellation {
8 name: string;
9 stars: Star[];
10}
11
12export const constellations: Constellation[] = [
13 {
14 name: "اورسا ماژور",
15 stars: [
16 { ra: 11.062, dec: 61.751, magnitude: 1.79 },
17 { ra: 10.229, dec: 60.718, magnitude: 2.37 },
18 // ... ستارههای بیشتر
19 ]
20 },
21 // ... صورتهای فلکی بیشتر
22];
23
این ساختار دادهای اجازه جستجوی کارآمد و رندر صورتهای فلکی را میدهد.
این برنامه از D3.js برای ایجاد نقشه آسمان شب SVG استفاده میکند. در اینجا یک مثال ساده از فرآیند رندر وجود دارد:
1import * as d3 from 'd3';
2
3function renderSkyMap(visibleConstellations, width, height) {
4 const svg = d3.create("svg")
5 .attr("width", width)
6 .attr("height", height)
7 .attr("viewBox", [0, 0, width, height]);
8
9 // رسم پسزمینه آسمان
10 svg.append("circle")
11 .attr("cx", width / 2)
12 .attr("cy", height / 2)
13 .attr("r", Math.min(width, height) / 2)
14 .attr("fill", "navy");
15
16 // رسم ستارهها و صورتهای فلکی
17 visibleConstellations.forEach(constellation => {
18 const lineGenerator = d3.line()
19 .x(d => projectStar(d).x)
20 .y(d => projectStar(d).y);
21
22 svg.append("path")
23 .attr("d", lineGenerator(constellation.stars))
24 .attr("stroke", "white")
25 .attr("fill", "none");
26
27 constellation.stars.forEach(star => {
28 const { x, y } = projectStar(star);
29 svg.append("circle")
30 .attr("cx", x)
31 .attr("cy", y)
32 .attr("r", 5 - star.magnitude)
33 .attr("fill", "white");
34 });
35
36 // اضافه کردن نام صورت فلکی
37 const firstStar = projectStar(constellation.stars[0]);
38 svg.append("text")
39 .attr("x", firstStar.x)
40 .attr("y", firstStar.y - 10)
41 .text(constellation.name)
42 .attr("fill", "white")
43 .attr("font-size", "12px");
44 });
45
46 // رسم خط افق
47 svg.append("line")
48 .attr("x1", 0)
49 .attr("y1", height / 2)
50 .attr("x2", width)
51 .attr("y2", height / 2)
52 .attr("stroke", "green")
53 .attr("stroke-width", 2);
54
55 return svg.node();
56}
57
58function projectStar(star) {
59 // تبدیل RA و Dec به مختصات x، y
60 // این یک پروجکشن ساده شده است و باید با یک پروجکشن سماوی مناسب جایگزین شود
61 const x = (star.ra / 24) * width;
62 const y = ((90 - star.dec) / 180) * height;
63 return { x, y };
64}
65
این برنامه با مناطق زمانی و موقعیتهای مختلف به روشهای زیر برخورد میکند:
در حالی که این برنامه بهطور مستقیم آلودگی نوری را در نظر نمیگیرد، کاربران باید آگاه باشند که:
خط افق بر اساس موقعیت ناظر محاسبه میشود:
این برنامه تغییرات فصلی در صورتهای فلکی قابل مشاهده را با استفاده از تاریخ ورودی برای محاسبه موقعیت دقیق ستارهها در نظر میگیرد.
کشف ابزارهای بیشتری که ممکن است برای جریان کاری شما مفید باشند