[Erledigt] Hilfe für Winkelberechnungen erbeten

  • Für die Ansteuerung eines Antennen-Rotors benutze ich folgenden Code (in Anlehnung an vdr-1.7.22-gotox.diff):


    Alle Winkel sind in "Grad * 10", Setup.SiteLon und Setup.SiteLat sind die Länge und Breite des Antennenstandortes (Ost = positiv, West = negativ).
    Die Funktion berechnet den sog. "hour angle", um den der Rotor nach links (negativ) bzw. rechts (positiv) gedreht werden muß, um die Antenne auf einen Satelliten an der Position Longitude auszurichten.


    Das funktioniert soweit alles. Was ich für die Anzeige der aktuellen Antennenposition noch gerne hätte wären folgende Größen:


    - die beiden Longitude -Werte, bei denen die Antenne gerade auf den Horizont ausgerichtet ist (d.h. Elevation == 0)


    - den Longitude-Wert für einen vorgegebenen Wert des "hour angles" (also quasi die Umkehrung obiger Funktion)


    Diese Werte würde ich gerne benutzen um in der Kanalanzeige einen Balken darzustellen, in dem der maximal sichtbare "Himmelsausschnitt", der maximale Drehbereich der Antenne, sowie die aktuelle Position der Antenne dargestellt wird.


    Vielleicht gibt es ja hier den einen oder anderen, der Lust hat, dieses mathematische Problem zu lösen und etwas Code beisteuern kann ;)


    Klaus

  • - die beiden Longitude -Werte, bei denen die Antenne gerade auf den Horizont ausgerichtet ist (d.h. Elevation == 0)


    Hallo Klaus,


    wenn ich Dich richtig verstanden habe, dann berechnest Du bereits den Winkel zwischen Entfernung (Sattelite von Erdmittelpunkt) und Erdradius (zum Standort des Spiegels). Damit kennst Du den Winkel auch (aus Sich des Stellites) zwischen Erdmittelpunt und Standort. Wenn Du die Summe der beiden von 180 abziehst, dann ergibt das den dritten Winkel im Dreieck. Wenn Du das jetzt aufzeichnest und die Linie von Erdmittelpunkt zum Standort des Spiegels verlängerst, dann ist das was Du suchst die Summe die zwei erstgenannten Winkel (180 - das größte Winkel). Ich glaube ganz ohne einen konkreten Bezugspunkt wird das sonst nicht gehen, denn der Spiegel kann nicht wissen, wo er aufgestellt wurde und die Erde ist rund.


    Habe ich Dich richtig verstanden?


    Albert


  • wenn ich Dich richtig verstanden habe, dann berechnest Du bereits den Winkel zwischen Entfernung (Sattelite von Erdmittelpunkt) und Erdradius (zum Standort des Spiegels). Damit kennst Du den Winkel auch (aus Sich des Stellites) zwischen Erdmittelpunt und Standort. Wenn Du die Summe der beiden von 180 abziehst, dann ergibt das den dritten Winkel im Dreieck. Wenn Du das jetzt aufzeichnest und die Linie von Erdmittelpunkt zum Standort des Spiegels verlängerst, dann ist das was Du suchst die Summe die zwei erstgenannten Winkel (180 - das größte Winkel). Ich glaube ganz ohne einen konkreten Bezugspunkt wird das sonst nicht gehen, denn der Spiegel kann nicht wissen, wo er aufgestellt wurde und die Erde ist rund.


    Habe ich Dich richtig verstanden?


    Da bin ich mir nicht ganz sicher ;-).
    Die Werte, die ich suche, haben nichts mit einem konkreten Satelliten zu tun. Und der Bezugspunkt (Antennen-Standort) ist bekannt, nämlich Setup.SiteLon/Setup.SiteLat.
    Was ich suche ist derjenige (mögliche) Satellitenstandort, den ich gerade noch sehen könnte, wenn ich die Antenne so weit nach Ost bzw. West drehe, daß sie quasi horizontal ausgerichtet ist.
    Unabhängig davon, daß man einen dort befindlichen Satelliten höchstwahrscheinlich gar nicht wirklich empfangen könnte, weil es zum einen vermutlich vom Footprint her schon nicht geht, und zum anderen das Signal durch den viel längeren Weg durch die Atmosphäre zu sehr gedämpft würde. Das soll eigentlich nur dazu dienen, eine passable graphische Darstellung zu ermöglichen.


    Klaus

  • Ok, ich glaube Dich jetzt zu verstehen. Ich fing an nachzudenken, aber an der Stelle wo ich die exakte Höhe von Geostationärer Satelliten gesucht habe, ist schon auch die Lösung präsentiert. Das ist hier unter der Sektion: „Sichtbarkeit eines Satelliten von der Erde“ sehr genau beschrieben. Ich hoffe, das hilft Dir weiter. ;)


    Albert

  • Hallo,


    hier ist ein Rechner, der JavaScript benutzt:
    http://www.satellite-calculati…/Satellite/lookangles.htm


    Den Code kann mit FireFox direkt anschauen:
    - im Menü Webentwickler/Debugger öffnen
    - Source ist in lookangles.online.sat.calc
    function CalculateAngles()
    function calculate_azimuth_table()


    Tschüß Frank

  • FrankJepsen, das ist die erste Webseite in dem von mir geposteten Link unter „Weblinks“ unten. Es gibt aber offensichtlich noch hässlichere Sachen zu berücksichtigen. Footprints.


    Albert

  • @Klaus, die Elevation (epsilon) ist der Winkel zwischen Horizont und Satellit. Steht der Satellit unter dem Horizont, ist die Elevation negativ. Das müsstest Du verwenden können!? Irre ich mich?


    Albert

  • Wenn ich das richtig umgestellt habe, sollte dann das folgende rauskommen:

    Ich hab es bislang nur mit dem Taschenrechner versucht, aber die Werte sind plausibel.

    Gruss
    SHF


  • Wenn ich das richtig umgestellt habe, sollte dann das folgende rauskommen:


    Danke, das sieht ja einfach aus :-).
    Aber wenn oberhalb von 81° kein Satellit sichtbar ist, sollte dann Delta nicht eher 0 sein?
    Oder woher kommen diese 15°?


    Klaus

  • Das verstehe ich auch nicht. Die Extremwertberechnung auf dem maximalen Breitengrad von 81° stimmt (gerundet). Bei diesem Breitengrad muss der Spiegel zwingend lotrecht zum Äquator ausgerichtet sein. Über 81° hinaus, unterstreitet der Cosinus Wert die 0,1513 Marke, damit hätten wir einen negativen Wert für die Elevation. Delta spielt dann keine Rolle mehr. Alles rein geometrisch gesehen. :)


    Albert

  • Klaus,


    ein kleiner Tipp noch. Du müsstest unbedingt den anderen Extremwert an dem Äquator, wo der Winkel zum (nicht mehr vorhandenen) Horizont 90° beträgt abfangen. Je näher Du herankommst, so tangiert der sin. Wert zu 0, cos. zu 1 und damit tan. zu Unendlich. Ist tan. einmal nahezu unendlich, dann hast Du Deinen fast 90° in beiden Richtungen, das ist dann logischerweise die Tangente der Äquator lang. Rechnest Du dort mit 90° zu Horizont, dann rennst Du in die Falle mit NULL zu teilen. Das ist das einzige Fall, was der Formel nicht abdeckt, sonst sind die Werte recht plausibel.


    Hier gibt es auch Mathematiker im Forum. Mehr Meinungen können nicht schaden.


    Albert

  • Hallo Klaus,Ich kann dir zwar bei deine Frage nicht konkret helfen,aber wie macht der USALS das!?


    Kann man das da irgendwie Abfragen?Ich Nutze auch ein Rotor womit ich 8 satelit positionen scane,früher hab ich es mit dbox 2 und gotoX gemacht,ging zwar auch aber USALS ist einfacher.
    Einmal Koordinate oder auf O stellung befindliche Sat position eingeben und rest von Satelite findet der System.


    (Vorasetzung Mast steht in lot) ist aber bei rotor plugin(goto X) selbe.


    Ich denke USALS wird für VDR nicht interessant sein wegen copy r... aber als orientierung(wenn man auf daten dran kommt)


    Mfg;Haris

    Meine VDR Spielzeuge VDR1 -Yavdr 0.6*SilverStone SST-M02B-MXR-GIADA MG-C1037SL -Imon Lcd-Imon FB-
    Intel Celeron 1037U*4GB RAM*GT-630*DD-Cine V5.5*


    Client1-Yavdr
    0.4 -MSI Media LiveGehäuse mit Original board-2 GB Ram60 GB SSD -
    Nvidia Gt210 -DM140 Plugin-Pearldpf display-Harmony
    One
    Onkyo TX-NR906
    Sony-KDL Serie
    Teufel Concept E


    Client2
    Raspberry XBMC auf XBIAN Basis mit xvdr

  • Aber wenn oberhalb von 81° kein Satellit sichtbar ist, sollte dann Delta nicht eher 0 sein?
    Oder woher kommen diese 15°?

    Die Formel ist oberhalb von ~81° nicht mehr definiert.
    Da ist 0° genau genommen genauso falsch wie 15°.


    Die 15°sind in etwa der letzte sinnvolle Wert, den man bekommt. Ich wollte da einfach den Sprung vermeiden.
    Inzwischen bin ich aber der Meinung, dass es wohl keine Rolle spielt, da:

    • Die Satelliten wohl mindestens 10° über dem Horizont stehen müssen um brauchbar empfangbar zu sein.
      Von daher ist man mit der Annahme des Horizonts als Grenze schon auf der sicheren Seite.
    • Ein Blick auf den Globus gezeigt hat, dass der Bereich wohl nicht relevant besiedelt sein wird :D .

    Einsetzen kann man dann mehr oder weniger was man will.
    Sinn machen würden für mich der Wert bei 81° (also 14,7°), oder 0° oder ein sehr kleiner Winkel (1° oder so).
    Der kleine Winkel hätte gegenüber von 0° halt den Vorteil, dass immer ein Bereich raus kommt und man den Sonderfall später nicht abfangen muss muss.



    ein kleiner Tipp noch. Du müsstest unbedingt den anderen Extremwert an dem Äquator, wo der Winkel zum (nicht mehr vorhandenen) Horizont 90° beträgt abfangen.

    Am Äquator bekomme ich 81,3° raus.
    Die 90° kommen nicht zustande, da sich der Betrachter auf der Erdoberfläche, nicht im Erdmittelpunkt befindet.

    Gruss
    SHF



  • Soweit ich weiß macht USALS nichts anderes als den "hour angle" basierend auf der Satellitenposition und den Koordinaten des Antennenstandortes zu berechnen und diesen via "goto x" and den Rotor zu schicken. So macht das der vdr-1.7.22-gotox.diff Patch, und VDR wird es genauso machen.
    Die Horizont-Werte brauche ich nur um eine Fortschrittsanzeige für die Antennenbewegung darzustellen.


    Klaus


  • Die 15°sind in etwa der letzte sinnvolle Wert, den man bekommt. Ich wollte da einfach den Sprung vermeiden.


    Ich hab mir jetzt mal die Werte um 810 herum ausgeben lassen und sehe jetzt auch woher die 15 Grad kommen.
    Bei beliebig feiner Auflösung gäbe es wohl irgendwann den Grenzwert 0, aber das ist wegen...


    Zitat


    Inzwischen bin ich aber der Meinung, dass es wohl keine Rolle spielt, da:

    • Die Satelliten wohl mindestens 10° über dem Horizont stehen müssen um brauchbar empfangbar zu sein.
      Von daher ist man mit der Annahme des Horizonts als Grenze schon auf der sicheren Seite.
    • Ein Blick auf den Globus gezeigt hat, dass der Bereich wohl nicht relevant besiedelt sein wird :D .


    ...sowieso belanglos.


    Zitat


    Einsetzen kann man dann mehr oder weniger was man will.
    Sinn machen würden für mich der Wert bei 81° (also 14,7°), oder 0° oder ein sehr kleiner Winkel (1° oder so).
    Der kleine Winkel hätte gegenüber von 0° halt den Vorteil, dass immer ein Bereich raus kommt und man den Sonderfall später nicht abfangen muss muss.


    Ich werde dann wohl bei 15 Grad bleiben, weil das der "weichste" Übergang ist.


    Zitat

    Am Äquator bekomme ich 81,3° raus.
    Die 90° kommen nicht zustande, da sich der Betrachter auf der Erdoberfläche, nicht im Erdmittelpunkt befindet.


    Kann ich bestätigen.


    Klaus

  • Am Äquator bekomme ich 81,3° raus.


    Wir haben irgendwie einen Denkknoten drin.


    - Klaus sucht NICHT nach Satelliten!
    - Klaus sucht den Schnittpunkt zwischen den Horizont und den sichtbaren Satellitenkreis.
    - Es können zwei davon geben, das ist der Normalfall. Bei 81° Breite, wo der Satellitenkreis den Horizont berührt, gibt es genau ein einziges Schnittpunkt, darüber hinaus gibt keins mehr.
    - Mit NULL zu teilen ist eine nicht definierte (nicht erlaubte) mathematische Operation! Es gibt aber Annäherung.
    - Aus der Definition: tan = sin/cos gibt es auch keinen tan 90°, weil cos 90°= 0 ist, was wiederum eine Teilung durch 0 zu Folge hätte. Lim. tan nahezu 90° tangiert zu Unendlich, das ist OK.
    - Das gesuchte Winkel befindet sich zwischen den Schnittpunkt Horizont und Satellitenkreis zur Mittelpunkt des sichtbaren Sattelitenkreis und dann mal zwei.
    - Von Spiegel zum Mittelpunkt des sichtbaren Satellitenkreis gibt es keine Längendifferenz! Dlambda = 0.
    - Wenn Dlambda = 0 ist, dann ist cos(Dlambda) = cos 0=1!
    - Daraus folgt: cos delta = cos (Breitengrad des Spiegels) * 1. Für delta ist also ganz einfach der Längengrad des Spiegels einzusetzen!
    - Der obige Satz gilt nur für Azimut 0, für die Berechnung der Extremwerte.
    Bei tan = 0 ist sin delta = 0,1513, das ist 81° gerundet. Gebe ich für delta 0,1° ein, dann komme ich auf 89,88° (Äquator). Gemeint ist diese Gleichung.


    Suche: tan = 0, damit ist cos delta = 0,1513. Das entspricht 81,3°!
    Cos delta = cos (Breitengrad des Spiegels) * cos (max. Winkel) -> cos (max. Winkel) =0,1513/cos (Standort des Spiegels)!


    Beispiel Berlin, 52,3N, 13,2E:
    Cos (max. Winkel) =0,1513/0,6115 -> 75,6748° (*2 für den ganzen Ausschnitt).


    Albert

    Einmal editiert, zuletzt von DaKilla ()

  • SHF Sorry, der Denkknoten liegt bei mir. Ich habe die Elevation am Äquator berechnet nicht den Azimut.


    - Den halben Satellitenkreis würden wir ausschließlich von dem Erdmittelpunkt aus sehen können.
    - Die Tangente am Äquator ist um den Erdradius davon versetzt, also sehen wir nur einen Teil von dem halben Satellitenkreis, daher kommen wir nicht auf 90°, sondern nur auf 81°.


    Es ist rechnerisch korrekt, jedoch schlecht für die Darstellung. :(


    Albert

  • Ich werde dann wohl bei 15 Grad bleiben, weil das der "weichste" Übergang ist.

    Da fällt mir jetzt auf, dass ich hätte abrunden und nicht aufrunden wollen.
    Momentan wechselt das Vorzeichen der Steigung an der Stelle, das wollte ich eigentlich vermeiden.
    Da hab ich wohl irgendwie einmal zu viel um die Ecke gedacht und 15 war so ein schöner runder Wert :D .


    -> also 14,5° oder 14,7°.

    Gruss
    SHF



  • -> also 14,5° oder 14,7°.


    OK, dann 14.5.


    Was jetzt noch praktisch wäre, wäre die Umkehrung der "hour angle" Berechnung.
    Hintergrund: ein DiSEqC-Rotor hat einen bestimmten maximalen Winkel, um den er die Antenne drehen kann. Dieser Winkel ist bezogen auf die Drehachse des Rotors (z.B. +/-65 Grad). Für die Fortschrittsanzeige würde ich gerne den maximalen Orbit-Bereich darstellen, den der Rotor überstreichen kann.
    Mit der Funktion


    kann für einen gegebenen Satelliten-Längengrad (z.B. 192 = 19.2 Grad Ost, Astra) der zugehörige Einstellwinkel ("hour angle") des Rotors berechnet werden.
    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...


    Klaus

  • 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.


    Klaus, ich würde gern versuchen Dir zu helfen, aber ich verstehe wieder nicht ganz, was Du genau willst. Kannst Du die Aufgabenstellung bitte anders formulieren!?


    Albert

Jetzt mitmachen!

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