Hasilkan peta langit malam SVG interaktif yang menunjukkan konstelasi yang boleh dilihat berdasarkan tarikh, masa, dan lokasi. Ciri-ciri pengesanan automatik atau input koordinat manual, nama konstelasi, kedudukan bintang, dan garis ufuk.
Aplikasi Pemandu Konstelasi adalah alat yang kuat untuk penggemar astronomi dan pengamat bintang. Ia membolehkan pengguna untuk memvisualisasikan langit malam dan mengenal pasti konstelasi yang terlihat berdasarkan lokasi, tarikh, dan waktu mereka. Aplikasi interaktif ini menyediakan peta langit SVG yang sederhana, memaparkan nama konstelasi, posisi bintang asas, dan garis horizon, semuanya dalam antaramuka satu halaman.
Aplikasi ini menggunakan kombinasi koordinat selestial dan pengiraan waktu untuk menentukan konstelasi mana yang terlihat di langit malam:
Ascension Kanan (RA) dan Deklinasi (Dec): Ini adalah setara selestial bagi longitud dan latitud, masing-masing. RA diukur dalam jam (0 hingga 24), dan Dec diukur dalam darjah (-90° hingga +90°).
Waktu Sidereal Tempatan (LST): Ini dikira menggunakan longitud pengamat dan tarikh serta waktu semasa. LST menentukan bahagian mana dari sfera selestial yang sedang berada di atas kepala.
Sudut Jam (HA): Ini adalah jarak sudut antara meridian dan objek selestial, dikira sebagai:
Ketinggian (Alt) dan Azimut (Az): Ini dikira menggunakan formula berikut:
Di mana Lat adalah latitud pengamat.
Aplikasi ini melakukan langkah-langkah berikut untuk menentukan konstelasi yang terlihat dan menghasilkan peta langit:
Aplikasi Pemandu Konstelasi mempunyai pelbagai aplikasi:
Walaupun Aplikasi Pemandu Konstelasi kami menyediakan cara yang sederhana dan mudah untuk melihat langit malam, terdapat alat lain yang tersedia:
Sejarah pemetaan konstelasi dan carta bintang bermula ribuan tahun yang lalu:
Aplikasi ini menggunakan pangkalan data konstelasi yang disederhanakan yang disimpan dalam fail TypeScript:
1export interface Star {
2 ra: number; // Ascension Kanan dalam jam
3 dec: number; // Deklinasi dalam darjah
4 magnitude: number; // Kecerahan bintang
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 // ... lebih banyak bintang
19 ]
20 },
21 // ... lebih banyak konstelasi
22];
23
Struktur data ini membolehkan pencarian dan rendering konstelasi yang efisien.
Aplikasi ini menggunakan D3.js untuk membuat peta langit SVG. Berikut adalah contoh yang disederhanakan dari proses rendering:
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 // Lukis latar belakang langit
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 // Lukis bintang dan konstelasi
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 // Tambah nama konstelasi
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 // Lukis garis horizon
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 // Tukar RA dan Dec kepada koordinat x, y
60 // Ini adalah proyeksi yang disederhanakan dan harus digantikan dengan proyeksi selestial yang tepat
61 const x = (star.ra / 24) * width;
62 const y = ((90 - star.dec) / 180) * height;
63 return { x, y };
64}
65
Aplikasi ini mengendalikan zon waktu dan lokasi yang berbeza dengan:
Walaupun aplikasi ini tidak secara langsung mengambil kira pencemaran cahaya, pengguna harus sedar bahawa:
Garis horizon dikira berdasarkan lokasi pengamat:
Aplikasi ini mengambil kira variasi musiman dalam konstelasi yang terlihat dengan:
Temui lebih banyak alat yang mungkin berguna untuk aliran kerja anda