Vygenerujte interaktívnu SVG mapu nočnej oblohy, ktorá zobrazuje viditeľné súhvezdia na základe dátumu, času a miesta. Funkcie automatického zistenia alebo manuálneho zadania súradníc, názvy súhvezdí, polohy hviezd a horizontálna línia.
Aplikácia na prezeranie súhvezdí je mocný nástroj pre nadšencov astronómie a pozorovateľov hviezd. Umožňuje používateľom vizualizovať nočnú oblohu a identifikovať viditeľné súhvezdia na základe ich polohy, dátumu a času. Táto interaktívna aplikácia poskytuje jednoduchú SVG mapu nočnej oblohy, ktorá zobrazuje názvy súhvezdí, základné pozície hviezd a horizontálnu čiaru, všetko v rámci jedinej stránky.
Aplikácia používa kombináciu nebeských súradníc a časových výpočtov na určenie, ktoré súhvezdia sú viditeľné na nočnej oblohe:
Pravý vzostup (RA) a deklinácia (Dec): Tieto sú nebeskými ekvivalentmi zemepisnej dĺžky a šírky. RA sa meria v hodinách (0 až 24) a Dec sa meria v stupňoch (-90° až +90°).
Lokálny siderický čas (LST): Tento čas sa vypočítava pomocou zemepisnej dĺžky pozorovateľa a aktuálneho dátumu a času. LST určuje, ktorá časť nebeskej sféry je aktuálne nad hlavou.
Hodinový uhol (HA): Toto je uhlová vzdialenosť medzi poludníkom a nebeským objektom, vypočítaná ako:
Výška (Alt) a azimut (Az): Tieto sa vypočítavajú pomocou nasledujúcich vzorcov:
Kde Lat je zemepisná šírka pozorovateľa.
Aplikácia vykonáva nasledujúce kroky na určenie viditeľných súhvezdí a vykreslenie mapy oblohy:
Aplikácia na prezeranie súhvezdí má rôzne aplikácie:
Zatiaľ čo naša aplikácia na prezeranie súhvezdí poskytuje jednoduchý a prístupný spôsob, ako vidieť nočnú oblohu, existujú aj iné dostupné nástroje:
História mapovania súhvezdí a hviezdnych máp siaha tisíce rokov späť:
Aplikácia používa zjednodušenú databázu súhvezdí uloženú v TypeScript súbore:
1export interface Star {
2 ra: number; // Pravý vzostup v hodinách
3 dec: number; // Deklinácia v stupňoch
4 magnitude: number; // Jasnosť hviezdy
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 // ... viac hviezd
19 ]
20 },
21 // ... viac súhvezdí
22];
23
Táto dátová štruktúra umožňuje efektívne vyhľadávanie a vykresľovanie súhvezdí.
Aplikácia používa D3.js na vytvorenie SVG mapy nočnej oblohy. Tu je zjednodušený príklad vykresľovacieho procesu:
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 // Nakreslite pozadie oblohy
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 // Nakreslite hviezdy a súhvezdia
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 // Pridajte názov súhvezdia
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 // Nakreslite horizontálnu čiaru
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 // Preveďte RA a Dec na x, y súradnice
60 // Toto je zjednodušená projekcia a mala by byť nahradená správnou nebeskou projekciou
61 const x = (star.ra / 24) * width;
62 const y = ((90 - star.dec) / 180) * height;
63 return { x, y };
64}
65
Aplikácia zvláda rôzne časové pásma a polohy tým, že:
Hoci aplikácia priamo nezohľadňuje svetelné znečistenie, používatelia by mali mať na pamäti, že:
Horizontálna čiara sa vypočítava na základe polohy pozorovateľa:
Aplikácia zohľadňuje sezónne variácie v viditeľných súhvezdiach tým, že:
Objavte ďalšie nástroje, ktoré by mohli byť užitočné pre vašu pracovnú postupnosť