Zeichnen von äquatorialen Koordinaten in die X-, Y-Ebene (Simulation der Teleskop-/Kameraansicht)

Ich möchte eine Teleskopkameraansicht simulieren und Koordinatensätze (RA, Dec) auf eine 2D-Ebene projizieren. Daher besteht die Notwendigkeit darin, äquatoriale Koordinaten in (x, y)-Koordinaten umzuwandeln, wenn wir wissen können, wie viele Grad ein einzelnes Pixel umfasst. Der Einfachheit halber verwende ich hier Grade für RA und Dec, und der Code ist nur Pseudocode.

Beispielhaft seien folgende Basisinformationen genannt: Bildgebende Geräte:

  • Teleskopbrennweite in mm ( flen ): 420
  • Bildauflösung ( BreitePx , HöhePx ): 4000 * 3000
  • Pixelgröße in Mikron ( pxSize ): 8
  • Binning ( Tonne ): 1

Also nach meinem Verständnis können wir daraus für den Anfang ein paar Dinge berechnen. Das Sichtfeld in Grad sollte sein:

fovW = radToDeg( 2 * atan((pxSize * bin * widthPx / 1000) / (2 * flen)) )
fovH = radToDeg( 2 * atan((pxSize * bin * heightPx / 1000) / (2 * flen)) )

Und daraus könnten wir ableiten:

pixelsPerDegWidth = widthPx / fovW;
pixelsPerDegHeight = heightPx / fovH;

Für Standorte näher am Äquator kann ich mit dieser Formel einige gültig aussehende Ergebnisse erhalten:

deltaRa = starRa - imageCenterRa
deltaRa = deltaRa > 180 ? 360 + deltaRa : deltaRa
deltaDec = -1 * (starDec - imageCenterDec)

posX = deltaRa * cosdeg(starDec) * pixelsPerDegWidth + 0.5 * widthPx
posY = deltaDec * pixelsPerDegHeight + 0.5 * heightPx

Mit einigen Katalogsternpositionen, die mit dieser Formel projiziert werden, kann ich sogar den Astrometry.net-Solver dazu bringen, die Mittelposition korrekt zu identifizieren. Wenn wir uns jedoch zu den Polen bewegen, bricht dieser zusammen.

Lassen Sie uns also fortfahren und einen Zielmittelpunkt in der Nähe der Stange verwenden:

  • RA 30 Grad ( imageCenterRa )
  • Dez. 89 Grad ( imageCenterDec )

Nehmen wir auch an, dass wir einen hypothetischen Stern bei RA, Dez. (220, 89,2) haben – das ist nahe am Pol, und sowohl der Stern als auch der Pol werden in das Bild aufgenommen. Was für eine Formel sollten wir verwenden, um den richtigen Standort zu erhalten und das Gebiet auch in den Polarregionen richtig zu zeichnen?

Ich suche schon länger nach einem Beispiel, bin aber auf keins gekommen. Ich habe einige Formeln gesehen, die vielleicht genau das sind, wonach ich suche, aber mein dicker Schädel liebt Beispiele - daher habe ich hier einige genaue Zahlen eingefügt, da ich gerne sehen würde, wie dies in der Praxis berechnet würde.

Zusammenfassend: Wie würden wir die (X, Y)-Koordinate im Bild für den Stern bei RA, Dez (220, 89,2) berechnen?

Antworten (2)

Dies ist kein Code für eine vollständige Implementierung, aber Sie könnten so etwas tun:

  1. Transformieren Sie Ihre RA-, Dec-Koordinaten (die sphärische Polarkoordinaten sind, nur alle mit dem gleichen R ) zu kartesisch X , j , z Koordinaten. (Der R Wert, den Sie hier verwenden würden, ist beispielsweise willkürlich R = 1 , und sollte für alle Sterne gleich sein, nicht ihre wirklichen Entfernungen; Sie projizieren sie nur auf eine Kugel, damit Sie die Transformation durchführen können.)

  2. Wenden Sie eine Rotation des Koordinatenrahmens an, indem Sie Ihre Feldzentrums-RA-, Dec-Koordinaten (oder vielleicht deren Komplemente) als Rotationswinkel verwenden, sodass die Feldzentrumsrichtung die neue ist z Achse.

  3. Plotten Sie das Ergebnis neu X , j Koordinaten, ignorieren z .

Möglicherweise müssen Sie diese noch einmal drehen X , j Koordinaten, um das Diagramm so auszurichten, wie Sie es möchten, oder vielleicht gibt es einen cleveren Weg, dies mit der richtigen Wahl der Winkel in Schritt 2 zu tun.

Ok, ich musste mit den richtigen Wörtern (Astrommetrie, Standardkoordinaten) suchen, um die Gleichungen zu finden, die ich brauchte. Ich werde versuchen, den Prozess hier durchzugehen, um dies zu einer vollständigen Antwort auf meine eigene Frage zu machen.

Die Schlüsselgleichung hier ist die Umwandlung von Himmelskoordinaten (RA, Dec) in Standardkoordinaten (X, Y) auf einer Tangentialebene des Himmels. Diese Abbildung aus dem Artikel Astrometry: The Foundation for Observational Astronomy (Amith Govind et al) erklärt, was benötigt wird.

Standardkoordinaten

Aus demselben Artikel finden wir die Gleichungen zur Berechnung der Standardkoordinaten:

X = C Ö S ( δ ) S ich N ( a a 0 ) C Ö S ( δ 0 ) C Ö S ( δ ) C Ö S ( a a 0 ) + S ich N ( δ ) S ich N ( δ 0 )
Y = S ich N ( δ 0 ) C Ö S ( δ ) C Ö S ( a a 0 ) C Ö S ( δ 0 ) S ich N ( δ ) C Ö S ( δ 0 ) C Ö S ( δ ) C Ö S ( a a 0 ) + S ich N ( δ ) S ich N ( δ 0 )

Wo a ist der Winkel RA des Sterns und δ ist der Winkel Dec des Sterns, und a 0 ist das Feldzentrum RA und δ 0 die Feldmitte Dez, alles im Bogenmaß.

Mit diesen Gleichungen erhalten wir die Standardkoordinaten im Bogenmaß in Bezug auf den Mittelpunkt des Feldes. Um die Pixelkoordinaten zu erhalten, müssen diese Koordinaten noch mit der Anzahl der Pixel pro Bogenmaß multipliziert werden, und diese Verhältnisse können aus der Brennweite, dem Binning, der Bildauflösung und der Pixelgröße des Kamerasensors berechnet werden. Wenn wir eine mögliche Feldrotation berücksichtigen wollen, müssen wir die Rotation der Koordinaten berücksichtigen, indem wir die Koordinaten aus X- und Y-Komponenten mit Sinus- und Kosinusfaktoren bilden. Außerdem wird, wie die obige Abbildung zeigt, die X-Koordinate gespiegelt, sodass wir die endgültig resultierende X-Koordinate umdrehen müssen.

Wenn wir also mit Pseudocode fortfahren, haben wir:

imageWidthRad = 2 * atan((pxSize * bin * widthPx / 1000.0) / (2 * fLen))
imageHeightRad = 2 * atan((pxSize * bin * heightPx / 1000.0) / (2 * fLen))

pixelsPerRadW = widthPx / imageWidthRad
pixelsPerRadH = heightPx / imageHeightRad

imageCenterX = widthPx / 2
imageCenterY = heightPx / 2

( Beachten Sie, dass Pixelgröße (in Mikrometer) und Binning hier für Breite und Höhe als gleich angenommen werden. )

Mit Stern RA, Dec (s_ra, s_dec) und Feldmitte RA, Dec (c_ra, c_dec) im Bogenmaß erhalten wir die Standardkoordinaten:

stdX = cos(s_dec) * sin(s_ra - c_ra) / (cos(c_dec) * cos(s_dec) * cos(s_ra - c_ra) + sin(c_dec) * sin(s_dec))
stdY = (sin(c_dec) * cos(s_dec) * cos(s_ra - c_ra) - cos(c_dec) * sin(s_dec)) / (cos(c_dec) * cos(s_dec) * cos(s_ra - c_ra) + sin(c_dec) * sin(s_dec))

Wenn die Drehung als Null angenommen wird, haben wir jetzt alles, was wir brauchen, um die Sternpositionen zu berechnen:

starPixelX = pixelsPerRadW * stdX + imageCenterX
starPixelY = pixelsPerRadH * stdY + imageCenterY
starPixelX = width - starPixelX

Um die Feldrotation zu berücksichtigen, müssen wir sie ein wenig ändern. Lassen Sie uns den Feldrotationswinkel hinzufügen R .

starPixelX =  cos(r) * pixelsPerRadW * stdX + sin(r) * pixelsPerRadH * stdY + imageCenterX
starPixelY = -sin(r) * pixelsPerRadW * stdX + cos(r) * pixelsPerRadH * stdY + imageCenterY
starPixelX = width - starPixelX

Dabei werden die Sternpositionen entsprechend gedreht. Bei 90 Grad (cos(90deg) == 0, sin(90deg) == 1) sehen wir, dass X effektiv zu Y wird und umgekehrt.

Abschluss

Mit einem Programm, das die RA-, Dec-Koordinaten von Tycho-2-Katalogsternen liest, habe ich die Sterne mit diesen Gleichungen und den folgenden Parametern in ein Bild gezeichnet:

  • Pixelgröße (pxSize) = 3,8 Mikrometer
  • Bildbreite (widthPx) = 4656
  • Bildhöhe (heightPx) = 3520
  • Mitte RA (c_ra) = 194,464 Grad
  • Center Dec (c_dec) = 71,217 Grad
  • Klassierung (bin) = 1
  • Brennweite (fLen) = 25 mm
  • Drehung (r) = -268 Grad

Daraus ergibt sich dieses Bild:Generiertes Bild

Ich habe dies dann durch den astrometrischen Solver http://nova.astrometry.net laufen lassen und das Bild erfolgreich gelöst, wobei das berechnete (RA, Dez) Zentrum: (194.461, 71.223) ist.

Als astrometry.net mit Raster kommentiert:Generiertes gelöstes Bild mit Anmerkungen

Da sind sie also, projizierte Sterne von einer Kugel auf eine flache Ebene.

Danke fürs Teilen, das ist wirklich nützlich zu lesen. Kannst du den Rest teilen, wie hast du die Sterne aus dem Katalog genommen, ein Bild mit ihnen gezeichnet?