Tarih, saat ve konuma dayalı olarak görülebilen takımyıldızları gösteren etkileşimli SVG gece gökyüzü haritası oluşturun. Otomatik algılama veya manuel koordinat girişi, takımyıldızı isimleri, yıldız konumları ve ufuk çizgisi özellikleri içerir.
Takımyıldız Görüntüleyici Uygulaması, astronomi meraklıları ve yıldız gözlemcileri için güçlü bir araçtır. Kullanıcıların, konumlarına, tarih ve saate göre görülebilir takımyıldızları görselleştirmelerine olanak tanır. Bu etkileşimli uygulama, takımyıldız adlarını, temel yıldız konumlarını ve ufuk çizgisini gösteren basit bir SVG gece gökyüzü haritası sağlar ve tek sayfalık bir arayüz içinde sunulur.
Uygulama, hangi takımyıldızların gece gökyüzünde görülebilir olduğunu belirlemek için gökyüzü koordinatları ve zaman hesaplamalarının bir kombinasyonunu kullanır:
Sağ Açıklık (RA) ve Deklinasyon (Dec): Bunlar, sırasıyla boylam ve enlemin gökyüzü eşdeğerleridir. RA saat cinsinden (0'dan 24'e kadar) ölçülürken, Dec derece cinsinden (-90° ile +90° arasında) ölçülür.
Yerel Sidereal Zaman (LST): Bu, gözlemcinin boylamı ve mevcut tarih ve saati kullanarak hesaplanır. LST, gökyüzü küresinin hangi kısmının şu anda üstte olduğunu belirler.
Saat Açısı (HA): Bu, meridyen ile bir gök cismi arasındaki açısal mesafedir ve şu şekilde hesaplanır:
Yükseklik (Alt) ve Azimut (Az): Bunlar aşağıdaki formüller kullanılarak hesaplanır:
Burada Lat, gözlemcinin enlemidir.
Uygulama, görülebilir takımyıldızları belirlemek ve gökyüzü haritasını oluşturmak için aşağıdaki adımları gerçekleştirir:
Takımyıldız Görüntüleyici Uygulaması'nın çeşitli uygulamaları vardır:
Takımyıldız Görüntüleyici Uygulamamız, gece gökyüzünü görüntülemenin basit ve erişilebilir bir yolunu sunarken, başka araçlar da mevcuttur:
Takımyıldız haritalama ve yıldız haritalarının tarihi binlerce yıl öncesine dayanır:
Uygulama, TypeScript dosyasında saklanan basitleştirilmiş bir takımyıldız veritabanı kullanmaktadır:
1export interface Star {
2 ra: number; // Sağ Açıklık saat cinsinden
3 dec: number; // Deklinasyon derece cinsinden
4 magnitude: number; // Yıldız parlaklığı
5}
6
7export interface Constellation {
8 name: string;
9 stars: Star[];
10}
11
12export const constellations: Constellation[] = [
13 {
14 name: "Büyük Ayı",
15 stars: [
16 { ra: 11.062, dec: 61.751, magnitude: 1.79 },
17 { ra: 10.229, dec: 60.718, magnitude: 2.37 },
18 // ... daha fazla yıldız
19 ]
20 },
21 // ... daha fazla takımyıldız
22];
23
Bu veri yapısı, takımyıldızların verimli bir şekilde aranmasını ve görüntülenmesini sağlar.
Uygulama, SVG gece gökyüzü haritasını oluşturmak için D3.js kullanmaktadır. İşte görselleştirme sürecinin basitleştirilmiş bir örneği:
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 // Gökyüzü arka planını çiz
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 // Yıldızları ve takımyıldızları çiz
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 // Takımyıldız adını ekle
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 // Ufuk çizgisini çiz
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 ve Dec'yi x, y koordinatlarına dönüştür
60 // Bu, basit bir projeksiyondur ve uygun bir göksel projeksiyon ile değiştirilmelidir
61 const x = (star.ra / 24) * width;
62 const y = ((90 - star.dec) / 180) * height;
63 return { x, y };
64}
65
Uygulama, farklı saat dilimlerini ve konumları şu şekilde yönetir:
Uygulama doğrudan ışık kirliliğini hesaba katmasa da, kullanıcıların şunları dikkate alması gerekir:
Ufuk çizgisi, gözlemcinin konumuna göre hesaplanır:
Uygulama, görülebilir takımyıldızlardaki mevsimsel varyasyonları şu şekilde dikkate alır:
İş akışınız için faydalı olabilecek daha fazla aracı keşfedin