Generáljon egy interaktív SVG éjszakai égbolt térképet, amely a látható csillagképeket mutatja a dátum, idő és hely alapján. Jellemzői az automatikus és a manuális koordináta bevitel, csillagképek nevei, csillagok pozíciói és a horizontvonal.
A Csillagkép Néző Alkalmazás egy erőteljes eszköz az asztronómia kedvelői és csillagászok számára. Lehetővé teszi a felhasználók számára, hogy vizualizálják az éjszakai eget és azonosítsák a látható csillagképeket a helyük, dátumuk és időpontjuk alapján. Ez az interaktív alkalmazás egy egyszerű SVG éjszakai égbolt térképet biztosít, amely megjeleníti a csillagképek neveit, alapvető csillagpozíciókat és egy horizontvonalat, mindezt egyetlen oldalon.
Az alkalmazás égi koordináták és időszámítás kombinációját használja annak meghatározására, hogy mely csillagképek láthatók az éjszakai égbolton:
Jobb Ascendens (RA) és Deklináció (Dec): Ezek a földi hosszúság és szélesség égi megfelelői. Az RA órákban (0-tól 24-ig), a Dec pedig fokokban (-90°-tól +90°-ig) van mérve.
Helyi Sidereális Idő (LST): Ezt a megfigyelő hosszúsága és a jelenlegi dátum és idő alapján számítják ki. Az LST meghatározza, hogy a csillagászati gömb mely része van éppen a megfigyelő felett.
Óra Szög (HA): Ez a szög távolság a meridián és egy égi objektum között, amelyet a következőképpen számítanak ki:
Magasság (Alt) és Azimut (Az): Ezeket a következő képletek segítségével számítják ki:
Ahol Lat a megfigyelő szélessége.
Az alkalmazás a következő lépéseket hajtja végre a látható csillagképek meghatározására és az égbolt térkép megjelenítésére:
A Csillagkép Néző Alkalmazásnak különböző alkalmazásai vannak:
Bár a Csillagkép Néző Alkalmazás egyszerű és hozzáférhető módot biztosít az éjszakai égbolt megtekintésére, más eszközök is elérhetők:
A csillagképek térképezésének és csillagtérképeknek a története évezredekkel ezelőtt kezdődött:
Az alkalmazás egy egyszerűsített csillagkép adatbázist használ, amely egy TypeScript fájlban van tárolva:
1export interface Star {
2 ra: number; // Jobb Ascendens órákban
3 dec: number; // Deklináció fokokban
4 magnitude: number; // Csillag fényessége
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 // ... több csillag
19 ]
20 },
21 // ... több csillagkép
22];
23
Ez az adatstruktúra lehetővé teszi a csillagképek hatékony keresését és megjelenítését.
Az alkalmazás a D3.js-t használja az SVG éjszakai égbolt térkép létrehozásához. Íme egy leegyszerűsített példa a megjelenítési folyamatra:
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 // Ég háttér rajzolása
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 // Csillagok és csillagképek rajzolása
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 // Csillagkép neve
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 // Horizontvonal rajzolása
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 // RA és Dec konvertálása x, y koordinátákra
60 // Ez egy leegyszerűsített projekció, és helyettesíteni kell egy megfelelő csillagászati projekcióval
61 const x = (star.ra / 24) * width;
62 const y = ((90 - star.dec) / 180) * height;
63 return { x, y };
64}
65
Az alkalmazás különböző időzónák és helyek kezelésére a következőket teszi:
Bár az alkalmazás nem veszi közvetlenül figyelembe a fény szennyezést, a felhasználóknak tudatában kell lenniük, hogy:
A horizontvonal a megfigyelő helyzete alapján van kiszámítva:
Az alkalmazás figyelembe veszi a szezonális változásokat a látható csillagképekben az alábbiak szerint:
Fedezzen fel több olyan eszközt, amely hasznos lehet a munkafolyamatához