Berechnung der Rektaszension und Deklination eines Sterns

Fohnbit

Top Contributor
Hallo,

ich habe mit Hilfe eines Astroforum Teilnehmer eine Methode zum Berechnen von Azimuth und Höhe, wenn die Rektaszension und Deklination eines Sterns gegeben sind.
Ich habe das mit Stellarium gegen geprüft und scheint alles zu stimmen.

Ich benötige aber die andere Richtung. Berechnung der Rektaszension und Deklination, wenn der Azimut und Höhe gegeben sind.

Kennt da jemand eine Library? Den gegebenen Code umschreiben gelingt mir nicht. Dazu bin ich zu wenig Mathematiker :-(

Also privater kleiner Sternefotograf möchte ich von einem Neigungssensor die Winkelinformation in Rekt und Dekl ausgeben lassen, damit ich leichter "anzielen" kann :)

Für Eure Hilfe wäre ich sehr dankbar!
 

Fohnbit

Top Contributor
anbei noch die Berechnung die ich soweit fertig habe:
Java:
public class PositionCalculator {

    static final double LATITUDE = 47;
    static final double LONGITUDE = 15;

    static final LocalDateTime OBJECT_DATE_TIME = LocalDateTime.of(2020, Month.APRIL, 11, 22, 00, 00);

    public static void main(String[] args) {
        new PositionCalculator("Beteigeuze", "5h56m17.41s", "7°24'33.3''");
        new PositionCalculator("Sirius", "6h46m03.40s", "-16°44'45.7''");
        new PositionCalculator("Regulus", "10h09m28.14s", "11°51'57.0''");
        new PositionCalculator("Aldebaran", "4h37m06.45s", "16°32'56.8''");
        new PositionCalculator("Capella", "5h18m13.17s", "46°01'00.0''");
        new PositionCalculator("Vega", "18h37m38.10s", "38°48'15.3''");
        new PositionCalculator("Spica", "13h26m17.00s", "-11°16'06.5''");
        new PositionCalculator("Alphard", "9h28m36.10s", "-8°44'56.3''");
        new PositionCalculator("West 1", "4h51m44.33s", "8°56'02.3''");
        new PositionCalculator("West 2", "4h50m57.74s", "6°59'44.5''");
        new PositionCalculator("Denebola", "11h50m06.68s", "14°27'23.7''");
        new PositionCalculator("Test 1", "10h33m53.80s", "9°11'59.2''");

    }

    public PositionCalculator(String name, String object_Rekt, String object_Dekl) {

        double raHour = Double.valueOf(object_Rekt.split("h")[0]);
        double raMinute = Double.valueOf(object_Rekt.split("h")[1].split("m")[0]);
        double raSecond = Double.valueOf(object_Rekt.split("h")[1].split("m")[1].split("s")[0]);
        raMinute += raSecond / 60;

        double rightAscensionInDegrees = raHour * 15 + raMinute / 4;

        double dekDegree = Double.valueOf(object_Dekl.split("°")[0]);
        double dekMinute = Double.valueOf(object_Dekl.split("°")[1].split("'")[0]);
        double dekSecond = Double.valueOf(object_Dekl.split("°")[1].split("'")[1].split("''")[0]);
        dekMinute += dekSecond / 60;

        if (dekDegree < 0) {
            dekDegree = (dekDegree * -1 + dekMinute / 60) * -1;

        } else {
            dekDegree = dekDegree + dekMinute / 60;
        }

        ZonedDateTime localDateTimeAtZone = OBJECT_DATE_TIME.atZone(ZoneId.of("Europe/Berlin"));
        ZonedDateTime localDateTimeAtInUTC = ZonedDateTime.ofInstant(localDateTimeAtZone.toInstant(), ZoneOffset.UTC);

        SiderealTimeCalculator siderealTimeCalculator = new SiderealTimeCalculator(localDateTimeAtInUTC);

        double hourAngle = siderealTimeCalculator.getSiderealTimeAsDegree() - rightAscensionInDegrees;

        double sinOfa = Math.sin(Math.toRadians(LATITUDE)) * Math.sin(Math.toRadians(dekDegree))
                + Math.cos(Math.toRadians(LATITUDE)) * Math.cos(Math.toRadians(dekDegree))
                        * Math.cos(Math.toRadians(hourAngle));
        double altitude = Math.toDegrees(Math.asin(sinOfa));

        double tanAzimuth = Math.sin(Math.toRadians(hourAngle))
                / ((Math.cos(Math.toRadians(hourAngle)) * Math.sin(Math.toRadians(LATITUDE)))
                        - (Math.tan(Math.toRadians(dekDegree)) * Math.cos(Math.toRadians(LATITUDE))));

        double azimuth = Math.toDegrees(Math.atan(tanAzimuth));
        azimuth = (azimuth + 360) % 360;

        if (raHour < 12 && azimuth > 0 && azimuth < 90) {
            azimuth += 180;
        } else if (raHour > 8 && raHour < 18 && azimuth > 270 && azimuth < 360) {
            azimuth -= 180;
        }
        //System.out.println(azimuth);
        System.out.println("Name\t" + name);
        System.out.println("RA\t" + object_Rekt + "\tAzimuth\t" + azimuth);
        System.out.println("Dek\t" + object_Dekl + "\tHöhe\t" + altitude);
        System.out.println("");
    }
}

und die SiderealTimeCalculator Klasse:
Java:
public class SiderealTimeCalculator {

    private double siderealTimeHours;
    private double siderealTimeMinutes;
    private double siderealTimeSeconds;

    public SiderealTimeCalculator(ZonedDateTime localDateTimeInUTC) {
        calculateSiderealTime(localDateTimeInUTC);
    }

    private void calculateSiderealTime(ZonedDateTime localDateTimeInUTC) {

        double julianDate = calculateJulianDate(localDateTimeInUTC);

        double t = (julianDate - 2451545.0) / 36525;
        double GMST_ZERO = 24110.54841 + (8640184.812866 * t) + (0.093104 * (t * t)) - (0.0000062 * (t * t * t));

        GMST_ZERO += 1.00273790935 * (localDateTimeInUTC.getHour() * 3600 + localDateTimeInUTC.getMinute() * 60
                + localDateTimeInUTC.getSecond());

        double LMST = GMST_ZERO + (PositionCalculator.LONGITUDE / 15) * 3600;

        siderealTimeHours = (LMST / 3600) % 24;
        siderealTimeMinutes = (siderealTimeHours - ((int) siderealTimeHours)) * 60;
        siderealTimeSeconds = (siderealTimeMinutes - (int) siderealTimeMinutes) * 60;

    }

    public static double calculateJulianDate(ZonedDateTime utcDateTime) {
        int month = utcDateTime.getMonth().getValue();
        int year = utcDateTime.getYear();
        int day = utcDateTime.getDayOfMonth();

        double jd = 2415020.5 - 64;
        if (month <= 2) {
            year--;
            month += 12;
        }
        jd += (int) ((year - 1900) * 365.25);
        jd += (int) (30.6001 * (1 + month));
        return (jd + day);
    }

    public int getSiderealTimeHours() {
        return (int) siderealTimeHours;
    }

    public int getSiderealTimeMinutes() {
        return (int) siderealTimeMinutes;
    }

    public int getSiderealTimeSeconds() {
        return (int) siderealTimeSeconds;
    }

    public double getSiderealTimeAsDegree() {
        return getSiderealTimeHours() * 15 + (getSiderealTimeMinutes() / 4.0) + (getSiderealTimeSeconds() / 240.0);
    }

}
 
X

Xyz1

Gast
Ich bin zwar auch kein Physiker, aber ich verstehe nur Bahnhof. :D Kannst du vielleicht einmal in Prosa beschreiben was du machen möchtest? Also: Ich habe ein Fernglas/Teleskop und möchte den Andromeda-Nebel M31 beobachten. Wie muss ich dafür das Teleskop einstellen? Der Andromeda-Nebel hat dabei folgende Eigenschaften: ... usw.
 

Fohnbit

Top Contributor
Also :)

ich habe ein Teleskop, das den Bahnen der Sterne folgt ... das macht das System selbst und passt.

Aber wenn ich als Beispiel M31 fotografieren möchte, muss ich das mal finden und in den Sucher der Kamera bekommen :) Nun, M31 sieht man ja fast mit freiem Auge, aber die kleinen ... da braucht man ein paar Testschüsse bis es passt.

Ich möchte mir nun einen Neigungssensor montieren, welcher mir den Winkel der montierten Kamera zurückgibt. Ausgehend von meiner Position und Zeit kann ich dann sagen, wohin im Sternenatlas die Kamera schaut.

(1) Die Sterne werden mit dem Äquatoriales Koordinatensystem angegeben: Rektaszion und Deklination
Diese Position ist von jedem Punkt auf der Erde gleich (Zum selben Zeitpunkt)

(2) Wenn ich aber auf der Erde stehe und den Stern anschaue, habe ich von meiner Position aus Azimuth (Himmelsrichtung) und Höhe (Winkel vom Äquator) zum Stern

Wenn ich also einen Stern aussuche, der auf (1) liegt, kann ich meinen Code oben nehmen und weiß Himmelsrichtung und Höhe von meinem gegenwärtigen Standpunkt. Beispiel 180° (Süden) und 57,5° hoch.

Aber durch den neuen Neigungswinkel Sensor, habe ich (2) eine Höhe und Richtung und müsste wissen, wohin ich schau, im Äquatoriales Koordinatensystem System.

Also wenn der Sensor anzeigt:
Azimuth: 180°
Höhe: 57,5°

So drehe ich solange die Anlage, bis ich die gewünscht (1) Position erreicht habe und dann sollte der Stern in meinem Sucher sein :)

Ich gebe dann eben nicht Azimut und Höhe aus, sondern rechne auf Rektaszion und Deklination um.

Denn wenn ich M31 fotografieren möchte, weiß ich er liegt auf:
Rekt: 0h43m35s
Dekl: 41°20m5s

Dann drehe ich die Anlage so lange, bis ich diese Werte angezeigt bekomme. Aber dafür muss ich Azimuth und Winkel zu Rest und Dekl umrechnen

Danke!
 

Fohnbit

Top Contributor
Man müsste also meine Berechnung oben zurück rechnen.Von Azimut und Höhe zur Rektaszension und Deklination, aber dafür sind meine Mathe Kenntnisse zu gering :-(
 

AndiE

Top Contributor
Vielleicht hilft das weiter:
am 21.3. , dem Frühlingspunkt, schaue ich um 12 Uhr in die gleiche Richtung wie
am 21.6. um 18 Uhr
am 21.9. um 0 Uhr und
am 21.12. um 6 Uhr

am 21.3. und am 21.9. liegt mein Zenit bei 54 °
das ändert sich am 21.12. zu 54-23,5=30,5° und
am 21.6, zu 54+23,5=67,5°
und das zu dem Zeitpunkt, in dem ich zur Sonne schaue.

Nach obiger Berechnung verschiebt sich dieser "Mittagspunkt" täglich um 1/365. Das heißt, wenn es 12 Uhr ist, schaue ich immer zur Sonne.

Die Frage, ob ich nach Azimut und Winkel den Ort bestimmen kann, ist ja erstmal, wie ich das bestimme. Sicher am einfachsten ist es, diese in Winkel zu Nord( Osten sind 90° etc) zu bestimmen und die Höhe über dem Horizont in Grad.

Könnte man jetzt sagen, dass ein Stern, den ich am 21.9. am 0 Uhr am Horizont in Nordrichtung gesehen habe, am 21. 3. um 12 Uhr in Richtung Süd am Horizont steht? Dann kann ich ihn aber nicht sehen, da ja Tag ist.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I File Uploader... Statusanzeige, Berechnung des Status etc. Java Basics - Anfänger-Themen 0
Bugs Bunny Fehlerhafte Berechnung beim erneuten Durchlaufen der Schleife Java Basics - Anfänger-Themen 5
Jamie logische Verknüpfung zur Schaltjahr-Berechnung Java Basics - Anfänger-Themen 30
Stephan_kl Reihenwert-Berechnung, Ergebnis mit vorherigem Ergebnis vergleichen Java Basics - Anfänger-Themen 11
Abraham42 Berechnung der Kühlung Java Java Basics - Anfänger-Themen 12
S Hashcode-Berechnung + ^ Java Basics - Anfänger-Themen 2
J Median-Berechnung von 2D-Teilarrays Java Basics - Anfänger-Themen 56
F Tabelle - Berechnung Rang Java Basics - Anfänger-Themen 2
B Berechnung der Position von Kinderelemente von einem Elternknoten Java Basics - Anfänger-Themen 23
S Berechnung der sleep time ist falsch Java Basics - Anfänger-Themen 46
S Switch-Case zur Berechnung der Einkommensteuer Java Basics - Anfänger-Themen 15
2 Taschenrechner mit GUI Problem bei der Berechnung Java Basics - Anfänger-Themen 8
V Erste Schritte Pi Berechnung Java Basics - Anfänger-Themen 47
M Berechnung der Reststrecke bei Graphen Java Basics - Anfänger-Themen 1
V Algorithmus zur fortlaufenden Berechnung des duechscjnt Java Basics - Anfänger-Themen 1
B Berechnung zu einer Schleife formen Java Basics - Anfänger-Themen 6
B Berechnung Median mit Methode Java Basics - Anfänger-Themen 7
CptK Methoden Berechnung von Anfangsgeschwindigkeit und Winkel Java Basics - Anfänger-Themen 27
K Erste Schritte Berechnung der Summe zweier Arrays Java Basics - Anfänger-Themen 15
S Erste Schritte Berechnung des Paketportos - Problem/Frage Java Basics - Anfänger-Themen 52
J Gleitkommazahlen, Berechnung von pi Java Basics - Anfänger-Themen 4
J Berechnung liefert falsches Ergebnis Java Basics - Anfänger-Themen 2
kilopack15 Verzweiflung wegen Berechnung mit Multithreading Java Basics - Anfänger-Themen 1
A Die Werte zur Berechnung müssen als Parameter übergeben werden? Java Basics - Anfänger-Themen 7
Salo Berechnung von Winkeln Java Basics - Anfänger-Themen 28
M Restbuchwert Berechnung geht nicht Java Basics - Anfänger-Themen 45
Ghostman1711 Pi berechnung Methode aufrufen Java Basics - Anfänger-Themen 2
L Rekursive Methode zur Berechnung der Potenz q hoch p Java Basics - Anfänger-Themen 17
beatles Operatoren Operatoren - Berechnung Java Basics - Anfänger-Themen 40
K Best Practice Algorithmus für Berechnung von Zahlenreihenfolge Java Basics - Anfänger-Themen 12
N Verzögerte Berechnung "Lazy" Java Basics - Anfänger-Themen 8
J Erste Schritte Rundungsproblem - Berechnung Notendurchschnitt Java Basics - Anfänger-Themen 13
S Variablen Vektor zur Berechnung verwenden Java Basics - Anfänger-Themen 4
T Java double berechnung fehler Java Basics - Anfänger-Themen 2
M Berechnung in Java Java Basics - Anfänger-Themen 4
S Berechnung der Arbeitstage in einem Zeitraum Java Basics - Anfänger-Themen 9
E Problem bei rekursiver Berechnung des Binomialkoeffizienten Java Basics - Anfänger-Themen 5
T Iterative Pi Berechnung in Rekursive Java Basics - Anfänger-Themen 2
S Double, int, Berechnung Java Basics - Anfänger-Themen 3
C Nach Berechnung runden und Wert ausgeben Java Basics - Anfänger-Themen 7
E Berechnung für Shop einbinden Java Basics - Anfänger-Themen 8
S Klassen Formel zur Berechnung .... Bitte um Hilfe Java Basics - Anfänger-Themen 7
S Euklid Algorithmus zur Berechnung des GGTs Java Basics - Anfänger-Themen 2
OnDemand Berechnung in die start und paint Methode eines Applets Java Basics - Anfänger-Themen 28
P Schleife zur Berechnung von einer Summe Java Basics - Anfänger-Themen 16
F Berechnung einer linearen Abschreibung Java Basics - Anfänger-Themen 5
E Berechnung von Punkten Java Basics - Anfänger-Themen 4
D Berechnung des Abstandes von zwei Punkten in einem Koordinatensystem Java Basics - Anfänger-Themen 14
A Methoden PI-Berechnung Java Basics - Anfänger-Themen 22
S Erste Schritte Berechnung mit Daten aus CSV und Date Objekt Java Basics - Anfänger-Themen 2
C Programm zur Berechnung der Spur einer Matrix Java Basics - Anfänger-Themen 4
P Pythagoras Baum - Berechnung der Punkte Java Basics - Anfänger-Themen 9
A Erste Schritte Steuer Berechnung, Alters Abhängig Java Basics - Anfänger-Themen 5
T Erste Schritte Berechnung von gerade und ungerade Zahlen Java Basics - Anfänger-Themen 10
J Erste Schritte Berechnung Ratten vermehrung Java Basics - Anfänger-Themen 4
P falsches ergebnis bei einfacher berechnung Java Basics - Anfänger-Themen 3
T Iterative Berechnung einer Satellitenbahn Java Basics - Anfänger-Themen 20
M Java Berechnung mit mehreren Lösungen? Java Basics - Anfänger-Themen 9
D Nullstellen-Berechnung Java Basics - Anfänger-Themen 10
L Fehlermeldung bei falscher Berechnung anzeigen Java Basics - Anfänger-Themen 31
A berechnung multiplikatives inverses Java Basics - Anfänger-Themen 5
J Berechnung des aktuellen Alters auf Basis des Geburtstags Java Basics - Anfänger-Themen 45
J Datentypen Fehler bei Berechnung mit Double und Int-Werten Java Basics - Anfänger-Themen 22
G Berechnung von Winkeln mit Cosinussatz Java Basics - Anfänger-Themen 2
B Arrays verwenden für Berechnung Java Basics - Anfänger-Themen 3
R Merkwürdige Modulo Berechnung Java Basics - Anfänger-Themen 7
B Hausaufgabe Berechnung quadratischer Funktion Java Basics - Anfänger-Themen 16
U Alter Berechnung + sortierung Java Basics - Anfänger-Themen 6
P Berechnung wird nicht durchgeführt Java Basics - Anfänger-Themen 2
D Berechnung von Ostern und Ramadan! Java Basics - Anfänger-Themen 24
N Algorithmus für Berechnung einer Quersumme Java Basics - Anfänger-Themen 9
D Berechnung von Geldausgabe Java Basics - Anfänger-Themen 22
F Berechnung von Kugeln! Java Basics - Anfänger-Themen 9
M rekursive Funktion zur Berechnung der Spiegelzahl Java Basics - Anfänger-Themen 7
S Hausaufgabe: Java-Programm schreiben zur Berechnung von x und y Java Basics - Anfänger-Themen 9
Y Ergebnis einer Berechnung an die Main Methode übergeben Java Basics - Anfänger-Themen 11
Semox Ersten Wert eines Intervalls bei Berechnung einschließen Java Basics - Anfänger-Themen 8
J Logarithmische Berechnung und Arrays Java Basics - Anfänger-Themen 2
B LinkedList - Berechnung des Produkts Java Basics - Anfänger-Themen 6
B Berechnung von Preisen per Java-Programm Java Basics - Anfänger-Themen 27
M Alters berechnung aus Geburtsjahr aus dem Buch Java Basics - Anfänger-Themen 5
O Fehler in der String-Distanz-Berechnung Java Basics - Anfänger-Themen 5
-horn- "Berechnung vorwärts, Optimierung rückwärts?" - Wie würdet ihr das machen? Java Basics - Anfänger-Themen 8
P iterative Berechnung Java Basics - Anfänger-Themen 9
1 Berechnung von PI mithilfe von Buffons Nadelproblem Java Basics - Anfänger-Themen 2
G Berechnung zwei Komplexen Zahlen Java Basics - Anfänger-Themen 34
N Rekursive Berechnung der Höhe eines binären Baumes Java Basics - Anfänger-Themen 4
J Programm für interaktive Berechnung von Temperaturverläufen Java Basics - Anfänger-Themen 9
K Annährende ganzzahlige Berechnung der Wurzel Java Basics - Anfänger-Themen 8
L Berechnung von Perioden Java Basics - Anfänger-Themen 4
D einfach berechnung einer onlinezeit Java Basics - Anfänger-Themen 25
S Euklid Klasse mit Methoden zur Berechnung des ggT Java Basics - Anfänger-Themen 23
G Frage zur Primzahlen berechnung Java Basics - Anfänger-Themen 11
G Berechnung von N-Tageslinien von Aktienkursen Java Basics - Anfänger-Themen 13
G Rekursive Berechnung von n über k schlägt fehl Java Basics - Anfänger-Themen 5
G Einfache Berechnung liefert falsches Ergebnis Java Basics - Anfänger-Themen 2
W Schaltjahr Berechnung Java Basics - Anfänger-Themen 24
A Probleme mit Programm zur Pi-Berechnung Java Basics - Anfänger-Themen 6
X Temperatur-Berechnung /Array(?) Java Basics - Anfänger-Themen 5
L Berechnung Summe Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben