Δημιουργήστε έναν διαδραστικό χάρτη νυχτερινού ουρανού 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
Η εφαρμογή διαχειρίζεται διαφορετικές ζώνες ώρας και τοποθεσίες με:
Ενώ η εφαρμογή δεν λαμβάνει άμεσα υπόψη τη ρύπανση φωτός, οι χρήστες θα πρέπει να είναι ενήμεροι ότι:
Η γραμμή του ορίζοντα υπολογίζεται με βάση την τοποθεσία του παρατηρητή:
Η εφαρμογή λαμβάνει υπόψη τις εποχιακές διακυμάνσεις στους ορατούς αστερισμούς με:
Ανακαλύψτε περισσότερα εργαλεία που μπορεί να είναι χρήσιμα για τη ροή εργασίας σας