Laden...

Silverlight Planetarium - Codebeispiele?

Erstellt von HannesB vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.895 Views
HannesB Themenstarter:in
185 Beiträge seit 2005
vor 13 Jahren
Silverlight Planetarium - Codebeispiele?

hallo,

ich würde gerne ein planetariumsprogramm in silverlight entwickeln.
straonoimsche formeln zur berechnung der positionen von planeten, sternen usw. habe ich mir schon zusammengesucht.
Was ich bisher nicht gefunden habe: Wie kann ich diese positionen grafisch darstellen?
Es sollte ja eine Projektion sein - der Beobachter steht auf der Erde und kann in alle Richtungen blicken können - also so, wie es "in echt" ist. 😉
D.h. ich muss die Position eines Objektes von Rektaszension (=Höhe) und Deklination (=Winkel) auf eine Kugel projezieren und der Betrachter befindet sich im Inneren dieser Kugel. Da ich noch nichts passendes gefunden habe, möchte ich gerne fragen, ob jemand von euch ein paar Informationsquellen im Netz dazu kennt?
Etwas, das ein wenig in diese Richtung geht, habe ich (für Flash) auf dieser Seite gefunden: http://astrotips.com/index.php?module=PostWrap&page=/static_html/flash_planetarium.html

thx
hannes

3.170 Beiträge seit 2006
vor 13 Jahren

Hallo,

👍 find ich gut, hab ich auch mal geschrieben 🙂
Wobei die Rektaszension der Stundenwinkel und die Deklination die Höhe bezüglich des Himmelsäqutors ist.

D.h. ich muss die Position eines Objektes von Rektaszension (=Höhe) und Deklination (=Winkel) auf eine Kugel projezieren

Für die Projektion musst Du

  1. den Winkelabstand des projezierten Punktes zum Mittelpunkt der Ansicht ermitteln
  2. den zugehörigen Kurswinkel ermitteln.
  3. auf dem Winkelabstand wendest Du die Projektionsvorschrift an - für eine orthografische Projektion ist das zum Beispiel einfach der Sinus des Winkeabstands.
  4. Den erhaltenen Wert anhand des Darstellungsbereichs und des Gesichtsfeldes skalieren, damit Du eine gescheite Ausgabegröße bekommst.
  5. Multipliziere den erhaltenen Wert mit Sinus und Kosinus des Kurswinkels um X und Y zu berechnen.

Du kannnst Dir mal Winkel und Kugelkoordinaten ansehen, da gibt es auch eine Methode, die den Abstand zweier Punkte auf der Kugel berechnet und Einiges andere, das Dir das Leben bei diesen Berechnungen leichter macht.
Ich würde Dir auch ein Stück zusammenhängenden Code posten, aber verteilt sich das schon wieder auf eine abstrakte Basisklasse, von der mehrere verschiedene Projektoren erben, und basiert vollständig auf den oben verlinkten Structs - da müsste ich erst mal das wesentlichste rausziehen.

ABER: Rektaszension und Deklination sind vermutlich gar nicht die Koordinaten, die Du haben willst, denn ich denke Du willst einem Beobachter auf der Erde eher azimutale Koordinaten (also Azimut=Horizontwinkel und Altitude=Höhenwinkel (über dem Horizont) anbieten(*).
Dazu müssen die Koordinaten noch von RA/Dec in Alt/Az umgerechnet werden, wobei die Umrechnung von der geographischen Position des Beobachters und der Zeit abhängt.
Ich habe das über das für mein Programm über das nautische Dreieck berechnet, das wäre mal ein Ansatzpunkt in dieser Richtung.

Mit den gesuchten Begriffen kannst Du Dich ja mal an die Implementierung machen, wenn's irgendwo konkret hakt kannst Du ja nochmal nachfragen.

Viel Erfolg!
MarsStein

(*) das Bild im Anhang zeigt als grünes Gitternetz die azimutalen Koordinaten - wobei die dicke grüne Linie der Horizont ist. Das rote Gitternetz ist das parallaktische mit Rektaszension und Deklination. In diesem haben die Sterne (fast) feste Koordinaten, nur die der Planeten ändern sich. Welchen Bereich des Sternenhimmels oder welche Planeten der Benutzer gerade sehen kann, hängt von der Lage der beiden Gitter zueinander - genau genommen von der Lage des Horizonts - ab, welche sich mit der Zeit und der geographischen Position ändert.

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca

HannesB Themenstarter:in
185 Beiträge seit 2005
vor 13 Jahren

Hallo und vielen Dank für deine umfangreiche Antwort!
muss mir zu Hause mal deine Links durchschaun und mich genauer einlesen, um sinnvolle Fragen stellen zu können 😉 - vorab schon mal vielen Dank für deine angebotene Hilfestellung!

ABER: Rektaszension und Deklination sind vermutlich gar nicht die Koordinaten, die Du haben willst, denn ich denke Du willst einem Beobachter auf der Erde eher azimutale Koordinaten (also Azimut=Horizontwinkel und Altitude=Höhenwinkel (über dem Horizont) anbieten(*).

Genau das möchte ich.

Ich hab mich schon etwas mit ephemeridenberechnung beschäftigt, was mir vorerst aber mal egal sein kann - vorab möchte ich einfach mal versuchen, sterne korrekt darzustellen. Ich habe mir gedacht, ich werde es so angehen:

  1. Info's von dir "aufarbeiten" 😉
  2. Sternenkatalog besorgen in dem Positionen enthalten sind (später dann auch mag. usw. auswerten)
  3. Versuchen, diese Einträge darzustellen

Der Screenshot ist von deinem Programm?
Wow - schaut verdammt gut aus!

thx
hannes