Genera un mapa del cel nocturn SVG interactiu que mostra les constel·lacions visibles en funció de la data, l'hora i la ubicació. Inclou detecció automàtica o entrada manual de coordenades, noms de constel·lacions, posicions d'estrelles i línia de l'horitzó.
L'Aplicació Visualitzadora de Constel·lacions és una eina poderosa per als entusiastes de l'astronomia i els observadors d'estrelles. Permet als usuaris visualitzar el cel nocturn i identificar les constel·lacions visibles en funció de la seva ubicació, data i hora. Aquesta aplicació interactiva proporciona un mapa del cel nocturn SVG senzill, mostrant els noms de les constel·lacions, les posicions bàsiques de les estrelles i una línia de l'horitzó, tot dins d'una interfície d'una sola pàgina.
L'aplicació utilitza una combinació de coordenades celestials i càlculs de temps per determinar quines constel·lacions són visibles al cel nocturn:
Ascensió Recta (AR) i Declinació (Dec): Aquestes són les equivalents celestials de la longitud i la latitud, respectivament. AR es mesura en hores (0 a 24), i Dec es mesura en graus (-90° a +90°).
Temps Sideral Local (TSL): Aquest es calcula utilitzant la longitud de l'observador i la data i hora actuals. TSL determina quina part de l'esfera celestials és actualment sobre el cap de l'observador.
Angle Horari (AH): Aquesta és la distància angular entre el meridià i un objecte celestials, calculada com:
Altitud (Alt) i Azimut (Az): Aquestes es calculen utilitzant les següents fórmules:
On Lat és la latitud de l'observador.
L'aplicació realitza els següents passos per determinar les constel·lacions visibles i renderitzar el mapa del cel:
L'Aplicació Visualitzadora de Constel·lacions té diverses aplicacions:
Tot i que la nostra Aplicació Visualitzadora de Constel·lacions proporciona una manera senzilla i accessible de veure el cel nocturn, hi ha altres eines disponibles:
La història del mapeig de constel·lacions i els mapes estel·lars es remunta a milers d'anys:
L'aplicació utilitza una base de dades simplificada de constel·lacions emmagatzemada en un fitxer TypeScript:
1export interface Star {
2 ra: number; // Ascensió Recta en hores
3 dec: number; // Declinació en graus
4 magnitude: number; // Brillantor de l'estrella
5}
6
7export interface Constellation {
8 name: string;
9 stars: Star[];
10}
11
12export const constellations: Constellation[] = [
13 {
14 name: "Ursa Major",
15 stars: [
16 { ra: 11.062, dec: 61.751, magnitude: 1.79 },
17 { ra: 10.229, dec: 60.718, magnitude: 2.37 },
18 // ... més estrelles
19 ]
20 },
21 // ... més constel·lacions
22];
23
Estructura de dades que permet una cerca i renderització eficient de constel·lacions.
L'aplicació utilitza D3.js per crear el mapa del cel nocturn SVG. Aquí teniu un exemple simplificat del procés de renderització:
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 // Dibuixar fons del cel
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 // Dibuixar estrelles i constel·lacions
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 // Afegir nom de la constel·lació
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 // Dibuixar línia de l'horitzó
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 // Convertir AR i Dec a coordenades x, y
60 // Aquesta és una projecció simplificada i hauria de ser substituïda per una projecció celestials adequada
61 const x = (star.ra / 24) * width;
62 const y = ((90 - star.dec) / 180) * height;
63 return { x, y };
64}
65
L'aplicació gestiona diferents zones horàries i ubicacions per:
Tot i que l'aplicació no té en compte directament la contaminació lumínica, els usuaris haurien de ser conscients que:
La línia de l'horitzó es calcula en funció de la ubicació de l'observador:
L'aplicació té en compte les variacions estacionals en les constel·lacions visibles per:
Descobreix més eines que podrien ser útils per al teu flux de treball