[Erledigt] Hilfe für Winkelberechnungen erbeten

  • aber ich verstehe wieder nicht ganz, was Du genau willst.



    ich vermute mal, Klaus meint die Satelliten Positionen die man bei +/- Max sehen würde , also schätzungsweise die Satelliten Intelsat 706 auf Position 72° Ost bzw AMC 6 auf 72° West

  • Argus


    Genau das glaube ich nicht. Er kennt den sichtbaren Sattelitenkreis, die technische Winkelbegrenzung des Rotors und der Standort ist auch gegeben. Ich glaube auch nicht, dass er eine Datenbank mit allen Satelliten anlegen will. Er will es den Anwender überlassen, die Werte einzutragen, dann rechnet VDR alles aus. Aber was genau will er diesmal berechnen?


    Albert

  • Ich glaube auch nicht, dass er eine Datenbank mit allen Satelliten anlegen will.


    Die stehen ja bereits in der sources.conf.


    Zitat


    Er will es den Anwender überlassen, die Werte einzutragen, dann rechnet VDR alles aus. Aber was genau will er diesmal berechnen?


    Ich möchte einen Fortschrittsbalken anzeigen, der so aussieht:
    - Die Gesamtlänge des Balkens entspricht dem maximal sichtbaren Ausschnitt des Satellitenkreises (von Horizont Ost bis Horizont West).
    - Innerhalb dieses Balkens zeigt ein zweiter (andersfarbiger) Balken den maximal vom Rotor überstreichbaren Bereich an.
    - Innerhalb dieses zweiten Balkens zeigt ein dritter die Distanz von der momentanen Antennenposition zur neuen Position an. Während sich die Antenne bewegt wird dieser dritte Balken von einem Ende her immer kürzer (das andere bleibt fix).


    Um den maximal vom Rotor überstreichbaren Bereich anzeigen zu können brauche ich eine Möglichkeit, einen Rotor-Winkel ("hour angle") in eine Orbit-Position umrechnen zu können. Gegeben ist ja der Antennenstandort und der maximale Winkel, um den der Rotor nach links bzw. rechts gedreht werden kann. Für diese beiden Winkel möchte ich berechnen können, auf welche Sat-Position (also welchen Längengrad) die Antennen zeigt, wenn der Rotor auf den jeweiligen Winkel gedreht wird.


    Klaus

  • Klaus, ob Du dazu eine Funktion brauchst, da bin ich mir nicht sicher. Vielleicht denke ich zu einfach. Mal sehen:


    - Du kannst den maximal sichtbaren Ausschnitt des Satellitenkreises bereits berechnen.
    - Der Rotor hat einen konstanten Winkel z.B. +-65°.
    - Du kannst innerhalb den ersten Balken den konstanten Balken von dem Rotor nur solange darstellen, bis der maximal sichtbaren Ausschnitt des Satellitenkreises größer/gleich der Rotorwinkel ist.
    - Solange der Gleistand nicht eintritt (das wäre 69° Breite), sind Deine Orbitpositionen für den Rotorbalken: Standort (Längengrad) +-65°.
    - Über 69° Breite sind dann beide Balken gleich (der maximal sichtbaren Ausschnitt des Satellitenkreises).


    Albert

  • Code
    #define SAT_EARTH_RATIO    0.1513 // the distance from the Earth's center to the satellite, divided by the Earth's radius


    Ohne hier alles strubbelig machen zu wollen: Woher kommen denn dieser Wert 0.1513 in der ersten Zeile?
    Falls der Kommentar stimmt, dann muss der Wert größer 1 sein! --- Außer, der Satellit ist irgendwo ziemlich tief eingegraben. :D


    Gruß, Marcus

    Hardware: Zalman HD160XT; Asus H97M-Plus, 1024MB RAM, Digital Devices Cine S2 (rev 7), Atric-Einschalter, NEC3520 DVD-Laufwerk, Samsung 256 GB SSD-Festplatte --> darauf yaVDR 0.6
    Hifi: Denon AVR4306, Samsung UE40ES6300

  • marcuszurhorst


    Dat steht in dem Kommentar verkehrt geschrieben, verstanden haben wir es aber alle richtig. Der Radius der Erde wird durch die Entfernung Erdmittelpunkt zum Satellit geteilt. Das ist nur eine konstante für die Mathematische Vereinfachung der Winkelberechnung.


    Ich verstehe allerdings nicht, wie weit Dein Anliegen zum Problemlösung beiträgt, bzw. Du uns damit sagen willst.


    Albert

  • marcuszurhorst


    Dat steht in dem Kommentar verkehrt geschrieben, verstanden haben wir es aber alle richtig. Der Radius der Erde wird durch die Entfernung Erdmittelpunkt zum Satellit geteilt. Das ist nur eine konstante für die Mathematische Vereinfachung der Winkelberechnung.


    Ich verstehe allerdings nicht, wie weit Dein Anliegen zum Problemlösung beiträgt, bzw. Du uns damit sagen willst.


    Genau so fangen die Anfeindungen an, die leider so manchen Thread aus der Bahn werfen! Also lasst uns bitte sachlich bleiben!
    marcuszurhorst hat auf einen Fehler hingewiesen, was vollkommen OK ist.
    marcuszurhorst: Danke!


    Klaus


  • Das erscheint mir allerdings wirklich zu einfach.
    Wenn ich für die Berechnung des "hour angle" bei gegebenem Satellitenwinkel eine Funktion wie CalcHourAngle() brauche, mit diversen Winkelfunktionen, dann kann doch die Umkehrfunktion wohl kaum so einfach sein wie von dir beschrieben, oder?


    Klaus

  • Klaus, das hat mit Anfeindungen nichts zu tun. Der Ausdruckweise war etwas ungewöhnlich, fall er helfen wollte. Schwamm darauf.


    Hm, was dem Ausschnitt durch die konstante Begrenzung von dem Winkel des Rotors angeht, hast Du höchstwahrscheinlich Recht. Mit zunehmender Entfernung des Spiegels von dem Äquator müssten wir theoretisch immer mehr von dem Satellitenkreis sehen. Also doch eine Funktion.


    Ist das so, dass Du noch eine Funktion suchst um den Dritten Balken (Rotorposition aktuell zu neuem Satellit) zu berechnen? Falls ja, dann wird noch mehr benötigt als die zwei Orbitpositionen. Während der Drehung hast Du keinen Orientierungspunkt mehr. Die Zeit zum neuen Position ist nur von dem Winkeldifferenz zwischen Satellit aktuell zum Satellit neu, Drehgeschwindigkeit des Rotors und wahrscheinlich das Ganze im Kontext von der Breitengrad abhängig.


    Albert


  • Hm, was dem Ausschnitt durch die konstante Begrenzung von dem Winkel des Rotors angeht, hast Du höchstwahrscheinlich Recht. Mit zunehmender Entfernung des Spiegels von dem Äquator müssten wir theoretisch immer mehr von dem Satellitenkreis sehen.


    Du meinst wohl "immer weniger", oder?


    Zitat


    Ist das so, dass Du noch eine Funktion suchst um den Dritten Balken (Rotorposition aktuell zu neuem Satellit) zu berechnen? Falls ja, dann wird noch mehr benötigt als die zwei Orbitpositionen. Während der Drehung hast Du keinen Orientierungspunkt mehr. Die Zeit zum neuen Position ist nur von dem Winkeldifferenz zwischen Satellit aktuell zum Satellit neu, Drehgeschwindigkeit des Rotors und wahrscheinlich das Ganze im Kontext von der Breitengrad abhängig.


    Für die aktuelle Position ließe sich diese Funktion natürlich auch sinnvoll einsetzten. Momentan interpoliere ich einfach linear, denn ich weiß ja, wie lange der Rotor braucht, um von Position A nach B zu kommen. Aber mit einer Funktion, die aus "hour angle" die zugehörige Sat-Position berechnet, ließe sich das sogar ziemlich genau handhaben.


    Klaus

  • Ich meine schon immer mehr, was sich dann wieder umkehren könnte. Wenn Du eine Funktion dafür willst, dann sind wir bei der sphärischen Trigonometrie gelandet, was nur die halbe Wahrheit ist. Flüchtig habe ich mir das mal überflogen, sieht nicht nach ganz einfach aus, aber auch nicht hoffnungslos.


    Albert

  • Ich meine schon immer mehr, was sich dann wieder umkehren könnte.


    Aber am Äquator sehe ich doch viele Satelliten, und am Pol (bzw. jenseits von 81 Grad) gar keinen. Also würde ich erwarten, daß die Zahl der sichtbaren Satelliten auf dem Weg vom Äquator zum Pol stetig abnimmt...


    Zitat


    Wenn Du eine Funktion dafür willst, dann sind wir bei der sphärischen Trigonometrie gelandet, was nur die halbe Wahrheit ist. Flüchtig habe ich mir das mal überflogen, sieht nicht nach ganz einfach aus, aber auch nicht hoffnungslos.


    "Sphärische Trigonometrie" betreibt ja wohl auch die Funktion CalcHourAngle() bereits. Für einen Mathematiker vielleicht eine Fingerübung, diese "umzukehren" ;-).


    Klaus

  • Klaus, versuch's mal damit für die Rotor-Winkel-Begrenzungs-Balken. :)



    Den Code habe ich von Dir und SHF genommen und modifiziert. Es ist schon eine Weile her, dass ich gecodet habe. Falls ich Fehler eingebaut habe, dann korrigiere es bitte. Das wichtigste Teil ist die Berechnung von Delta. Es sollte bei Berlin, 52,3N, 13,2E ca. 54° berechnen. Die 15°, bzw. 14,5° habe ich weggelassen, weil mir es nicht klar ist, wie ihr beide darauf kommt.


    Fall Du dafür eine nähere geometrische Erklärung brauchst, dann frage einfach danach.


    Albert

  • Was ich jetzt bräuchte wäre eine Funktion, die für einen gegebenen Einstellwinkel (z.B. +/-65 Grad) den zugehörigen Satelliten-Längengrad ermittelt.
    Vielleicht hast du hierfür ja auch eine so elegante Lösung wie für den Horizont-Winkel parat ;-). Ansonsten muß ich es halt iterativ ermitteln...

    Du willst aus dem "HourAngle" den "Longitude" Wert berechnen?


    Die Gleichung lässt sich da leider nicht so einfach umstellen, da "Longitude" mehrfach darin vorkommt.


    Prinzipiell müsste es aber eine Gleichung geben und die müsste sich auch herleiten lassen.
    Ich versuche dazu gerade zu verstehen wie dieser "HourAngle" definiert ist.
    Es der Drehwinkel des Aktors, soweit klar.
    So ganz sicher bin ich nur mit der Achse und der 0-Lage noch nicht.
    Ist der Wert nun Relativ zur aktuellen Position zu sehen oder geht die 0 immer nach Süden (BZW. Auf der Südhalbkugel nach Norden)?

    Gruss
    SHF



  • In Nullstellung zeigt ein Rotor immer genau nach Süden (bzw. Norden).
    Ich habe mal auf die Schnelle nach Bildern über die Einrichtung eines Rotors gesucht und das hier gefunden. Der Text ist zwar französisch, aber die Bilder sollten zeigen, wie das aussieht. Der Rotor hat einen gekrümmten Flansch, an dem die Antenne moniert wird. Der "hour angle" ist der Winkel um den sich die Motor-Achse dreht. Die Neigung des Rotors wird abhängig von der geographischen Breite des Antennenstandortes eingestellt.


    Klaus

  • Klaus, das letzte Code-Schnipsel für den min./max. Rotor Winkel war von mir mathematisch falsch. Ich ging dabei von Elevation 0 aus, was natürlich nicht gegeben ist. Diesmal bin ich mir aber so was von sicher. Die Formel ist eine unabhängige Ableitung von dem maximal sichtbaren Ausschnitt des Satellitenkreises. Du wirst Dich wundern, aber mit zunehmender Entfernung sieht der Rotor doch mehr. ;)



    Albert

  • Klaus, das letzte Code-Schnipsel für den min./max. Rotor Winkel war von mir mathematisch falsch. Ich ging dabei von Elevation 0 aus, was natürlich nicht gegeben ist. Diesmal bin ich mir aber so was von sicher. Die Formel ist eine unabhängige Ableitung von dem maximal sichtbaren Ausschnitt des Satellitenkreises. Du wirst Dich wundern, aber mit zunehmender Entfernung sieht der Rotor doch mehr. ;)


    Dann hatte ich das wohl falsch verstanden. Du meinst der Rotor kann einen größeren Anteil des jeweils maximal sichtbaren Satellitenkreises sehen. Das stimmt natürlich. Was ich meinte war, daß der überhaupt maximal sichtbare Ausschnitt des Satellitenkreises vom Äquator zum Pol immer kleiner wird.


    Zitat


    Fehlen hier nicht zwei Operatoren?
    Außerdem sind die Konstanten um den Faktor 10 zu groß (war auch in vorherigen Postings schon so und ich habe es stillschweigend korrigiert).
    Ich vermute mal, es soll heißen

    Code
    if ((Setup.SiteLat < 810 && Setup.SiteLat > 40) || (Setup.SiteLat > -810 && Setup.SiteLat < -40))


    Zitat


    Es wundert mich etwas, daß der Wert für Delta der gleiche sein soll für "über 81" und "unter 4".
    Warum diese Grenze bei +/-4 Grad?


    Wobei insgesamt gesehen eine Funktion


    int CalcLongitude(int HourAngle)


    schon praktisch wäre. Mit der könnte ich dann


    int RotorHardLimitLeft = CalcLongitude(-Swing);
    int RotorHardLimitRight = CalcLongitude(Swing);
    int RotorCurrentLongitude = CalcLongitude(RotorCurrentHourAngle);


    machen. Wobei "Swing" der maximale Auslenkungswinkel des Rotors ist, also z.B. 65 Grad, und RotorCurrentHourAngle der linear interpolierte momentane Stellwinkel des Rotors.


    Klaus

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!