Sukurkite interaktyvų SVG nakties dangaus žemėlapį, rodantį matomas konstelacijas pagal datą, laiką ir vietą. Ypatybės: automatinis aptikimas arba rankinis koordinatų įvedimas, konstelacijų pavadinimai, žvaigždžių padėtys ir horizonto linija.
Žvaigždžių Konsteliacijų Peržiūros Programa yra galingas įrankis astronomijos entuziastams ir žvaigždžių stebėtojams. Ji leidžia vartotojams vizualizuoti naktinį dangų ir identifikuoti matomas konsteliacijas pagal jų vietą, datą ir laiką. Ši interaktyvi programa suteikia paprastą SVG naktinio dangaus žemėlapį, rodančią konsteliacijų pavadinimus, pagrindines žvaigždžių pozicijas ir horizonto liniją, viską vieno puslapio sąsajoje.
Programa naudoja kombinaciją dangaus koordinatėmis ir laiko apskaičiavimais, kad nustatytų, kurios konsteliacijos matomos naktiniame danguje:
Dešinysis Ascensija (RA) ir Deklinacija (Dec): Tai dangaus atitikmenys ilgumai ir platumai, atitinkamai. RA matuojama valandomis (0 iki 24), o Dec matuojama laipsniais (-90° iki +90°).
Vietinė Siderealio Laikas (LST): Tai apskaičiuojama naudojant stebėtojo ilgumą ir dabartinę datą bei laiką. LST nustato, kuri dangaus sferos dalis šiuo metu yra viršuje.
Valandos Kampas (HA): Tai kampinė atstumas tarp meridiano ir dangaus objekto, apskaičiuojama kaip:
Aukštis (Alt) ir Azimut (Az): Tai apskaičiuojama naudojant šias formules:
Kur Lat yra stebėtojo platuma.
Programa atlieka šiuos žingsnius, kad nustatytų matomas konsteliacijas ir sugeneruotų dangaus žemėlapį:
Žvaigždžių Konsteliacijų Peržiūros Programa turi įvairių taikymo sričių:
Nors mūsų Žvaigždžių Konsteliacijų Peržiūros Programa suteikia paprastą ir prieinamą būdą peržiūrėti naktinį dangų, yra ir kitų įrankių:
Konsteliacijų žemėlapių ir žvaigždžių diagramų istorija siekia tūkstančius metų:
Programa naudoja supaprastintą konsteliacijų duomenų bazę, saugomą TypeScript faile:
1export interface Star {
2 ra: number; // Dešinysis Ascensija valandomis
3 dec: number; // Deklinacija laipsniais
4 magnitude: number; // Žvaigždės ryškumas
5}
6
7export interface Constellation {
8 name: string;
9 stars: Star[];
10}
11
12export const constellations: Constellation[] = [
13 {
14 name: "Didysis Vežimas",
15 stars: [
16 { ra: 11.062, dec: 61.751, magnitude: 1.79 },
17 { ra: 10.229, dec: 60.718, magnitude: 2.37 },
18 // ... daugiau žvaigždžių
19 ]
20 },
21 // ... daugiau konsteliacijų
22];
23
Ši duomenų struktūra leidžia efektyviai ieškoti ir atvaizduoti konsteliacijas.
Programa naudoja D3.js, kad sukurtų SVG naktinio dangaus žemėlapį. Štai supaprastintas atvaizdavimo proceso pavyzdys:
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 // Nupiešti dangaus foną
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 // Nupiešti žvaigždes ir konsteliacijas
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 // Pridėti konsteliacijos pavadinimą
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 // Nupiešti horizonto liniją
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 // Konvertuoti RA ir Dec į x, y koordinates
60 // Tai yra supaprastinta projekcija ir turėtų būti pakeista tinkama dangaus projekcija
61 const x = (star.ra / 24) * width;
62 const y = ((90 - star.dec) / 180) * height;
63 return { x, y };
64}
65
Programa tvarko skirtingas laiko juostas ir vietas:
Nors programa tiesiogiai neatsižvelgia į šviesos taršą, vartotojai turėtų žinoti, kad:
Horizonto linija apskaičiuojama pagal stebėtojo vietą:
Programa atsižvelgia į sezonines matomų konsteliacijų variacijas:
Raskite daugiau įrankių, kurie gali būti naudingi jūsų darbo eiga.