Genera un mapa del cielo nocturno SVG interactivo que muestra las constelaciones visibles según la fecha, hora y ubicación. Incluye detección automática o entrada manual de coordenadas, nombres de constelaciones, posiciones de estrellas y línea del horizonte.
La Aplicación de Visualización de Constelaciones es una herramienta poderosa para entusiastas de la astronomía y observadores de estrellas. Permite a los usuarios visualizar el cielo nocturno e identificar constelaciones visibles según su ubicación, fecha y hora. Esta aplicación interactiva proporciona un simple mapa del cielo nocturno en SVG, mostrando nombres de constelaciones, posiciones básicas de estrellas y una línea del horizonte, todo dentro de una interfaz de una sola página.
La aplicación utiliza una combinación de coordenadas celestiales y cálculos de tiempo para determinar qué constelaciones son visibles en el cielo nocturno:
Ascensión Recta (AR) y Declinación (Dec): Estos son los equivalentes celestiales de la longitud y la latitud, respectivamente. La AR se mide en horas (0 a 24), y la Dec se mide en grados (-90° a +90°).
Tiempo Sideral Local (TSL): Esto se calcula utilizando la longitud del observador y la fecha y hora actuales. El TSL determina qué parte de la esfera celeste está actualmente sobre la cabeza del observador.
Ángulo Horario (AH): Esta es la distancia angular entre el meridiano y un objeto celeste, calculada como:
Altitud (Alt) y Azimut (Az): Estos se calculan utilizando las siguientes fórmulas:
Donde Lat es la latitud del observador.
La aplicación realiza los siguientes pasos para determinar las constelaciones visibles y renderizar el mapa del cielo:
La Aplicación de Visualización de Constelaciones tiene diversas aplicaciones:
Mientras que nuestra Aplicación de Visualización de Constelaciones proporciona una manera simple y accesible de ver el cielo nocturno, hay otras herramientas disponibles:
La historia de la cartografía de constelaciones y cartas estelares se remonta a miles de años:
La aplicación utiliza una base de datos de constelaciones simplificada almacenada en un archivo TypeScript:
1export interface Star {
2 ra: number; // Ascensión Recta en horas
3 dec: number; // Declinación en grados
4 magnitude: number; // Brillo de la 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 estrellas
19 ]
20 },
21 // ... más constelaciones
22];
23
Esta estructura de datos permite una búsqueda y renderizado eficientes de constelaciones.
La aplicación utiliza D3.js para crear el mapa del cielo nocturno en SVG. Aquí hay un ejemplo simplificado del proceso de renderizado:
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 // Dibujar fondo 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 // Dibujar estrellas y constelaciones
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 // Añadir nombre de la constelación
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 // Dibujar línea del horizonte
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 y Dec a coordenadas x, y
60 // Esta es una proyección simplificada y debe ser reemplazada por una proyección celeste adecuada
61 const x = (star.ra / 24) * width;
62 const y = ((90 - star.dec) / 180) * height;
63 return { x, y };
64}
65
La aplicación maneja diferentes zonas horarias y ubicaciones de la siguiente manera:
Si bien la aplicación no tiene en cuenta directamente la contaminación lumínica, los usuarios deben ser conscientes de que:
La línea del horizonte se calcula según la ubicación del observador:
La aplicación tiene en cuenta las variaciones estacionales en las constelaciones visibles al:
Descubre más herramientas que podrían ser útiles para tu flujo de trabajo