Genera una mappa notturna interattiva in SVG che mostra le costellazioni visibili in base a data, ora e posizione. Include rilevamento automatico o input manuale delle coordinate, nomi delle costellazioni, posizioni delle stelle e linea dell'orizzonte.
L'App per la Visualizzazione delle Costellazioni è uno strumento potente per gli appassionati di astronomia e gli osservatori delle stelle. Permette agli utenti di visualizzare il cielo notturno e identificare le costellazioni visibili in base alla loro posizione, data e ora. Questa applicazione interattiva fornisce una semplice mappa del cielo notturno in SVG, mostrando i nomi delle costellazioni, le posizioni base delle stelle e una linea dell'orizzonte, il tutto all'interno di un'interfaccia a pagina singola.
L'app utilizza una combinazione di coordinate celesti e calcoli temporali per determinare quali costellazioni sono visibili nel cielo notturno:
Ascensione Retta (RA) e Declinazione (Dec): Questi sono gli equivalenti celesti della longitudine e della latitudine, rispettivamente. La RA è misurata in ore (0 a 24), e la Dec è misurata in gradi (-90° a +90°).
Tempo Sidereo Locale (LST): Questo è calcolato utilizzando la longitudine dell'osservatore e la data e ora correnti. LST determina quale parte della sfera celeste è attualmente sopra di noi.
Angolo Orario (HA): Questa è la distanza angolare tra il meridiano e un oggetto celeste, calcolata come:
Altitudine (Alt) e Azimut (Az): Questi sono calcolati utilizzando le seguenti formule:
Dove Lat è la latitudine dell'osservatore.
L'app esegue i seguenti passaggi per determinare le costellazioni visibili e rendere la mappa del cielo:
L'App per la Visualizzazione delle Costellazioni ha varie applicazioni:
Mentre la nostra App per la Visualizzazione delle Costellazioni fornisce un modo semplice e accessibile per visualizzare il cielo notturno, ci sono altri strumenti disponibili:
La storia della mappatura delle costellazioni e delle carte stellari risale a migliaia di anni fa:
L'app utilizza un database semplificato delle costellazioni memorizzato in un file TypeScript:
1export interface Star {
2 ra: number; // Ascensione Retta in ore
3 dec: number; // Declinazione in gradi
4 magnitude: number; // Luminosità della stella
5}
6
7export interface Constellation {
8 name: string;
9 stars: Star[];
10}
11
12export const constellations: Constellation[] = [
13 {
14 name: "Ursa Maggiore",
15 stars: [
16 { ra: 11.062, dec: 61.751, magnitude: 1.79 },
17 { ra: 10.229, dec: 60.718, magnitude: 2.37 },
18 // ... altre stelle
19 ]
20 },
21 // ... altre costellazioni
22];
23
Questa struttura dati consente una ricerca e un rendering efficienti delle costellazioni.
L'app utilizza D3.js per creare la mappa del cielo notturno in SVG. Ecco un esempio semplificato del processo di rendering:
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 // Disegna lo sfondo del cielo
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 // Disegna stelle e costellazioni
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 // Aggiungi il nome della costellazione
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 // Disegna la linea dell'orizzonte
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 // Converti RA e Dec in coordinate x, y
60 // Questa è una proiezione semplificata e dovrebbe essere sostituita con una corretta proiezione celeste
61 const x = (star.ra / 24) * width;
62 const y = ((90 - star.dec) / 180) * height;
63 return { x, y };
64}
65
L'app gestisce diversi fusi orari e posizioni:
Sebbene l'app non consideri direttamente l'inquinamento luminoso, gli utenti dovrebbero essere consapevoli che:
La linea dell'orizzonte è calcolata in base alla posizione dell'osservatore:
L'app tiene conto delle variazioni stagionali nelle costellazioni visibili:
Scopri più strumenti che potrebbero essere utili per il tuo flusso di lavoro