צור מפה אינטראקטיבית של השמים בלילה בפורמט 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
האפליקציה מטפלת באזורים שונים ובמיקומים על ידי:
בעוד שהאפליקציה לא מתחשבת ישירות בזיהום אור, המשתמשים צריכים להיות מודעים לכך:
קו האופק מחושב בהתבסס על מיקום הצופה:
האפליקציה מתחשבת בשינויים עונתיים בקבוצות כוכבים נראות על ידי:
גלה עוד כלים שעשויים להיות שימושיים עבור זרימת העבודה שלך