Generera en interaktiv SVG-nattkarta som visar synliga konstellationer baserat på datum, tid och plats. Funktioner inkluderar automatisk detektering eller manuell koordinatinmatning, konstellationsnamn, stjärnpositioner och horisontlinje.
Konstellationsvisare App är ett kraftfullt verktyg för astronomientusiaster och stjärnskådare. Det låter användare visualisera natthimlen och identifiera synliga konstellationer baserat på deras plats, datum och tid. Denna interaktiva applikation tillhandahåller en enkel SVG-natthimmelskarta som visar konstellationsnamn, grundläggande stjärnpositioner och en horisontlinje, allt inom ett enda sidgränssnitt.
Appen använder en kombination av himlakartor och tidsberäkningar för att avgöra vilka konstellationer som är synliga på natthimlen:
Rätt ascension (RA) och deklination (Dec): Dessa är de himmelska motsvarigheterna till longitud och latitud, respektive. RA mäts i timmar (0 till 24), och Dec mäts i grader (-90° till +90°).
Lokal sidereal tid (LST): Detta beräknas med hjälp av observatörens longitud och det aktuella datumet och tiden. LST avgör vilken del av den himmelska sfären som för närvarande är rakt ovanför.
Timvinkel (HA): Detta är den vinkliga avståndet mellan meridianen och ett himmelskt objekt, beräknat som:
Altitud (Alt) och azimut (Az): Dessa beräknas med följande formler:
Där Lat är observatörens latitud.
Appen utför följande steg för att bestämma synliga konstellationer och rendera himmelskartan:
Konstellationsvisare App har olika tillämpningar:
Även om vår Konstellationsvisare App tillhandahåller ett enkelt och tillgängligt sätt att se natthimlen, finns det andra verktyg tillgängliga:
Historien om konstellationskartläggning och stjärnkartor sträcker sig tillbaka tusentals år:
Appen använder en förenklad konstellationsdatabas lagrad i en TypeScript-fil:
1export interface Star {
2 ra: number; // Rätt ascension i timmar
3 dec: number; // Deklination i grader
4 magnitude: number; // Stjärnljusstyrka
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 // ... fler stjärnor
19 ]
20 },
21 // ... fler konstellationer
22];
23
Denna datastruktur möjliggör effektiv uppslagning och rendering av konstellationer.
Appen använder D3.js för att skapa SVG-natthimmelskartan. Här är ett förenklat exempel på renderingsprocessen:
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 // Rita himmelbakgrund
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 // Rita stjärnor och konstellationer
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 // Lägg till konstellationsnamn
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 // Rita horisontlinje
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 // Konvertera RA och Dec till x, y-koordinater
60 // Detta är en förenklad projektion och bör ersättas med en korrekt himmelsk projektion
61 const x = (star.ra / 24) * width;
62 const y = ((90 - star.dec) / 180) * height;
63 return { x, y };
64}
65
Appen hanterar olika tidszoner och platser genom att:
Även om appen inte direkt tar hänsyn till ljusföroreningar, bör användare vara medvetna om att:
Horisontlinjen beräknas baserat på observatörens plats:
Appen tar hänsyn till säsongsvariationer i synliga konstellationer genom att:
Upptäck fler verktyg som kan vara användbara för din arbetsflöde