Generați o hartă interactivă SVG a cerului nocturn care arată constelațiile vizibile în funcție de dată, oră și locație. Include detectare automată sau introducere manuală a coordonatelor, numele constelațiilor, pozițiile stelelor și linia orizontului.
Aplicația de Vizualizare a Constelațiilor este un instrument puternic pentru entuziaștii astronomiei și observatorii de stele. Aceasta permite utilizatorilor să vizualizeze cerul nopții și să identifice constelațiile vizibile în funcție de locația, data și ora lor. Această aplicație interactivă oferă o hartă SVG simplă a cerului nocturn, afișând numele constelațiilor, pozițiile de bază ale stelelor și o linie a orizontului, toate într-o interfață de pagină unică.
Aplicația folosește o combinație de coordonate celeste și calcule de timp pentru a determina care constelații sunt vizibile în cerul nopții:
Ascensiune Dreaptă (RA) și Declinație (Dec): Acestea sunt echivalentele celeste ale longitudinii și latitudinii, respectiv. RA este măsurată în ore (0 la 24), iar Dec este măsurată în grade (-90° la +90°).
Timp Sidereal Local (LST): Acesta este calculat folosind longitudinea observatorului și data și ora curente. LST determină care parte a sferei cerești este în prezent deasupra capului.
Unghiul Orar (HA): Acesta este distanța unghiulară dintre meridian și un obiect ceresc, calculată ca:
Altitudine (Alt) și Azimut (Az): Acestea sunt calculate folosind următoarele formule:
Unde Lat este latitudinea observatorului.
Aplicația efectuează următorii pași pentru a determina constelațiile vizibile și a reda harta cerului:
Aplicația de Vizualizare a Constelațiilor are diverse aplicații:
Deși aplicația noastră de Vizualizare a Constelațiilor oferă o modalitate simplă și accesibilă de a vizualiza cerul nocturn, există și alte instrumente disponibile:
Istoria cartografierii constelațiilor și a hărților stelare datează de mii de ani:
Aplicația folosește o bază de date simplificată a constelațiilor stocată într-un fișier TypeScript:
1export interface Star {
2 ra: number; // Ascensiune Dreaptă în ore
3 dec: number; // Declinație în grade
4 magnitude: number; // Luminozitatea stelei
5}
6
7export interface Constellation {
8 name: string;
9 stars: Star[];
10}
11
12export const constellations: Constellation[] = [
13 {
14 name: "Ursa Mare",
15 stars: [
16 { ra: 11.062, dec: 61.751, magnitude: 1.79 },
17 { ra: 10.229, dec: 60.718, magnitude: 2.37 },
18 // ... mai multe stele
19 ]
20 },
21 // ... mai multe constelații
22];
23
Această structură de date permite căutarea eficientă și redarea constelațiilor.
Aplicația folosește D3.js pentru a crea harta SVG a cerului nocturn. Iată un exemplu simplificat al procesului de redare:
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 // Desenează fundalul cerului
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 // Desenează stelele și constelațiile
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 // Adaugă numele constelației
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 // Desenează linia orizontului
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 // Convertește RA și Dec în coordonate x, y
60 // Aceasta este o proiecție simplificată și ar trebui înlocuită cu o proiecție celestă adecvată
61 const x = (star.ra / 24) * width;
62 const y = ((90 - star.dec) / 180) * height;
63 return { x, y };
64}
65
Aplicația gestionează diferite fusuri orare și locații prin:
Deși aplicația nu ține cont direct de poluarea luminoasă, utilizatorii ar trebui să fie conștienți că:
Linia orizontului este calculată pe baza locației observatorului:
Aplicația ține cont de variațiile sezoniere ale constelațiilor vizibile prin:
Descoperiți mai multe instrumente care ar putea fi utile pentru fluxul dvs. de lucru