Sonnenstandberechnung Umsetzung C++



  • Hallo zusammen,

    ich versuche mich gerade an einer Sonnenstandsberechnung nach den Formeln von Wikipedia:
    https://de.wikipedia.org/wiki/Sonnenstand

    habe mich die letzten Tage schon durchgekämpft scheitere aber gerade an der Rektaszension a (alpha)
    Es wird mit arctan gerechnet, in meinem Code habe ich dies folgendermaßen umgesetzt, bekomme aber als Ergebnis
    359.9200138 raus und es sollte eigentlich mit der Beispielrechnung München weiter unten -43,881 bzw. +180--> 136,119
    heraus bekommen. Ich verstehe aktuell ehrlich gesagt auch nicht ganz warum die 180 grad dazugezählt werden, aber auch so wäre es bei mir ein anderes Ergebnis. Die vorigen zahlen stimmen auch alle.

    Vielen Dank schon einmal

    //Rektaszension
    
      if (cos(this->A) > 0) {
    
          this->a = degr( atan2(cos(this->e), tan(this->A) ) ,360);
      }
    
      if (cos(this->A) < 0) {
    
          this->a = degr( atan2(cos(this->e), tan(this->A) ) + 4 *atan(1) ,360);
      }
    

    die funktion degr rechnet mit den 360 Grad max:

    double SonnenBerechnung::degr(double x, double y)
    {
       if (x < 0)
       {
           x = x + y;
       }
       return((x - (floor(x / y) * y)));
    }
    


  • Sorry anbei noch die vorigen Zahlen:
    A= 132.942322
    e= 23.4380365

    auch so habe ich es versucht:

    if (cos(this->A) > 0) {
    
           this->a = degr(atan(cos(this->e)*tan(this->A)),360);
           
       }
    
       if (cos(this->A) < 0) {
    
           this->a = degr(atan(cos(this->e)*tan(this->A)) + 4 *atan(1),360);
           
       }
    


  • Die Winkelfunktionen arbeiten mit Radiant, nicht mit Grad. Du musst also umrechenen.



  • @cube4d Schreibe bitte in eine Zeile vor Deinem Code ``` und in eine Zeile nach Deinem Code ```. Alternativ markiere Deinen Code und klicke auf das </> in der Symbolleiste über dem Eingabefeld.
    Du kannst Deine Beiträge im Nachhinein bearbeiten. Den Menüpunkt "Bearbeiten" findest Du in dem Drei-Punkte-Menü rechts unter Deinen Beiträgen.
    Danke.



  • @Swordfish ok gemacht, sorry



  • @manni66 Ahhh 🤦🏼 vielen Dank das bringt mich schon mal weiter 🙂
    danke danke danke



  • @manni66 Müssen Breitengrad und Längengrad auch in Radiant umgerechnet werden ?



  • @cube4d sagte in Sonnenstandberechnung Umsetzung C++:

    @manni66 Müssen Breitengrad und Längengrad auch in Radiant umgerechnet werden ?

    Wenn sie an die Winkelfunktionen übergeben werden: ja.


  • Mod

    Alle Trignometriefunktionen in C++ (und so ziemlich jeder anderen Computersprache) rechnen überall mit Winkeln im Bogenmaß, sowohl als Parameter, als auch als Ergebnis. Wenn du Eingaben und Ausgaben in Grad oder anderen Winkelmaßen machen möchtest, dann rechnest du am besten sofort nach der Eingabe um, und erst direkt nach vor der Ausgabe zurück. Zwischenergebnisse lässt du unangetastet.


Log in to reply