Генеруйте інтерактивну SVG карту нічного неба, що показує видимі сузір'я на основі дати, часу та місця. Має функцію автоматичного визначення або ручного введення координат, назви сузір'їв, позиції зірок та лінію горизонту.
Додаток для перегляду сузір'їв є потужним інструментом для любителів астрономії та спостерігачів за зірками. Він дозволяє користувачам візуалізувати нічне небо і визначати видимі сузір'я в залежності від їхнього місця розташування, дати та часу. Ця інтерактивна програма надає просту SVG-карту нічного неба, що показує назви сузір'їв, основні позиції зірок та лінію горизонту, все в рамках односторінкового інтерфейсу.
Додаток використовує комбінацію небесних координат і розрахунків часу, щоб визначити, які сузір'я видимі на нічному небі:
Правий підйом (RA) та схилення (Dec): Це небесні еквіваленти довготи та широти відповідно. RA вимірюється в годинах (0 до 24), а Dec вимірюється в градусах (-90° до +90°).
Місцевий сидеричний час (LST): Він розраховується з урахуванням довготи спостерігача та поточної дати і часу. LST визначає, яка частина небесної сфери наразі знаходиться над головою.
Кут години (HA): Це кутова відстань між меридіаном і небесним об'єктом, розрахована за формулою:
Висота (Alt) та азимут (Az): Вони розраховуються за такими формулами:
Де Lat — це широта спостерігача.
Додаток виконує наступні кроки для визначення видимих сузір'їв і відображення карти неба:
Додаток для перегляду сузір'їв має різні застосування:
Хоча наш Додаток для перегляду сузір'їв надає простий та доступний спосіб перегляду нічного неба, існують й інші доступні інструменти:
Історія картографії сузір'їв та зоряних карт налічує тисячі років:
Додаток використовує спрощену базу даних сузір'їв, збережену у файлі TypeScript:
1export interface Star {
2 ra: number; // Правий підйом в годинах
3 dec: number; // Схилення в градусах
4 magnitude: number; // Яскравість зірки
5}
6
7export interface Constellation {
8 name: string;
9 stars: Star[];
10}
11
12export const constellations: Constellation[] = [
13 {
14 name: "Велика Ведмедиця",
15 stars: [
16 { ra: 11.062, dec: 61.751, magnitude: 1.79 },
17 { ra: 10.229, dec: 60.718, magnitude: 2.37 },
18 // ... більше зірок
19 ]
20 },
21 // ... більше сузір'їв
22];
23
Ця структура даних дозволяє ефективно шукати та відображати сузір'я.
Додаток використовує D3.js для створення SVG-карти нічного неба. Ось спрощений приклад процесу відображення:
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 // Малювання фону неба
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 // Малювання зірок та сузір'їв
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 // Додавання назви сузір'я
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 // Малювання лінії горизонту
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 та Dec в координати x, y
60 // Це спрощена проекція і повинна бути замінена на правильну небесну проекцію
61 const x = (star.ra / 24) * width;
62 const y = ((90 - star.dec) / 180) * height;
63 return { x, y };
64}
65
Додаток обробляє різні часові зони та місця, виконуючи наступні дії:
Хоча додаток не враховує безпосередньо світлове забруднення, користувачі повинні бути обізнані, що:
Лінія горизонту розраховується на основі місця розташування спостерігача:
Додаток враховує сезонні варіації у видимих сузір'ях, виконуючи наступні дії:
Відкрийте більше інструментів, які можуть бути корисними для вашого робочого процесу