Buni ramani ya anga ya usiku ya SVG inayoingiliana ikionyesha nyota zinazoweza kuonekana kulingana na tarehe, muda, na eneo. Inajumuisha kugundua kiotomatiki au kuingiza kwa mikono, majina ya kundinyota, nafasi za nyota, na mstari wa upeo.
Programu ya Kuangalia Nyota ni chombo chenye nguvu kwa wapenzi wa astronomia na wapenzi wa nyota. Inawawezesha watumiaji kuona anga la usiku na kubaini nyota zinazonekana kulingana na eneo lao, tarehe, na wakati. Hii programu ya mwingiliano inatoa ramani rahisi ya anga la usiku ya SVG, ikionyesha majina ya nyota, nafasi za nyota za msingi, na mstari wa upeo, yote ndani ya kiolesura kimoja.
Programu inatumia mchanganyiko wa koordinati za angani na hesabu za wakati ili kubaini ni nyota gani zinazonekana kwenye anga la usiku:
Haki ya Kuinuka (RA) na Uelekeo (Dec): Hizi ni sawa za angani za longitude na latitude, mtawalia. RA hupimwa kwa masaa (0 hadi 24), na Dec hupimwa kwa digrii (-90° hadi +90°).
Wakati wa Sidereal wa Mitaa (LST): Hii inahesabiwa kwa kutumia longitudo ya mtazamaji na tarehe na wakati wa sasa. LST inabaini ni sehemu gani ya anga la angani ambayo kwa sasa iko juu.
Kona ya Saa (HA): Hii ni umbali wa pembe kati ya meridiani na kitu cha angani, inahesabiwa kama:
Kimo (Alt) na Azimuthi (Az): Hizi zinahesabiwa kwa kutumia fomula zifuatazo:
Ambapo Lat ni latitudo ya mtazamaji.
Programu inafanya hatua zifuatazo ili kubaini nyota zinazoweza kuonekana na kuunda ramani ya anga:
Programu ya Kuangalia Nyota ina matumizi mbalimbali:
Ingawa Programu yetu ya Kuangalia Nyota inatoa njia rahisi na inapatikana ya kuona anga la usiku, kuna zana nyingine zinazopatikana:
Historia ya ramani za nyota na ramani za nyota inarudi nyuma maelfu ya miaka:
Programu inatumia hifadhidata rahisi ya nyota iliyohifadhiwa katika faili ya TypeScript:
1export interface Star {
2 ra: number; // Haki ya Kuinuka kwa masaa
3 dec: number; // Uelekeo kwa digrii
4 magnitude: number; // Mwangaza wa nyota
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 // ... nyota zaidi
19 ]
20 },
21 // ... nyota nyingine zaidi
22];
23
Muundo huu wa data unaruhusu utafutaji wa haraka na uwasilishaji wa nyota.
Programu inatumia D3.js kuunda ramani ya anga la usiku ya SVG. Hapa kuna mfano rahisi wa mchakato wa uwasilishaji:
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 // Draw sky background
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 // Draw stars and constellations
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 // Add constellation name
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 // Draw horizon line
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 // Geuza RA na Dec kuwa x, y coordinates
60 // Hii ni mabadiliko rahisi na inapaswa kubadilishwa na uwasilishaji sahihi wa angani
61 const x = (star.ra / 24) * width;
62 const y = ((90 - star.dec) / 180) * height;
63 return { x, y };
64}
65
Programu inashughulikia maeneo tofauti ya wakati na maeneo kwa:
Ingawa programu haijazingatia moja kwa moja uchafuzi wa mwanga, watumiaji wanapaswa kuwa na ufahamu kwamba:
Mstari wa upeo unahesabiwa kulingana na eneo la mtazamaji:
Programu inazingatia tofauti za msimu katika nyota zinazoweza kuonekana kwa:
Gundua zana zaidi ambazo zinaweza kuwa na manufaa kwa mtiririko wako wa kazi