Geostationäre Satelliten berechnen

mit Pascal...

{$E+,N+}                  {alle Rechnungen im IEEE-Format(1+15+64 Bit) }
program tvsat;            {TurboPascal 5.5, 6 oder 7}

const D     : extended = 12756.27;           {Erddurchmesser am Äquator}
      qR    : extended = 40680606.1;         {Erdradius am Äquator(=6378.135 km)}
                                             {quadriert}
      sath  : extended = 42164.18;           {Höhe der geostationären Umlaufbahn}
                                             {über Erdmittelpunkt in km}
      qsath : extended = 1777818075.0724;    {Höhe quadriert}
      bm    : extended = 0.0174532925199433; {pi/180 = Bogenmaß-Koeffizient}

var   satpos,                                {Satpositionswinkel in Ostrichtung}
      c,                                     {Entfernung des Sat vom QTH in km}
      dl,                                    {Längendifferenz von Sat und QTH}
      qthl,                                  {QTH-Länge in Grad Ost}
      qthb,                                  {QTH-Breite in Grad Nord}
      elevation,                             {...}
      azimut : extended;                     {...}
      key : char;                            {Eingabedummy}

function arccos(wert:extended):extended;
{berechnet den Arcuscosinus im Bogenmaß}
begin
  arccos:=pi/2-arctan(wert/(sqrt(1-wert*wert)+1e-18))
end;

begin
    {Eingabe}
  writeln('TV-SAT Version 1.1 (C) DB1HZ 1990');
  writeln;
  write('Standort des TV-Satelliten in Grad Ost: ');
  readln(satpos);
  writeln;
  write('eigene Länge in Grad Ost: ');
  readln(qthl);
  writeln;
  write('eigene Breite in Grad Nord: ');
  readln(qthb);
  qthb:=qthb*bm;
    {Längendifferenz von Satellit und QTH}
  dl:=(qthl-satpos)*bm;
    {Entfernung QTH-Satellit in km über Seitencosinussatz}
  c:=sqrt(qR+qsath-D*sath*cos(dl)*cos(qthb));
    {Elevationswinkel des Satelliten am QTH vom Erdmittelpunkt in Grad}
    {über Seitencosinussatz}
  elevation:=arccos((qR+c*c-qsath)/(D*c))/bm-90;
    {Azimutwinkel des Satelliten am QTH zur Südrichtung in Grad}
    {über rechtwinkliges sphärisches Dreieck}
  azimut:=arctan(sin(dl)/(cos(dl)*sin(qthb)))/bm;
    {Nördl. und südl. Hemisphäre unterscheiden, da ARCTAN nicht eindeutig}
  if (qthb<0) then azimut:=360*frac(azimut/360+1) else azimut:=azimut+180;
    {Ausgabe}
  writeln;
  writeln('Azimut    = ',azimut:3:3,' Grad');
  writeln;
  writeln('Elevation = ',elevation:3:3,' Grad');
  writeln
end.

und mit JavaScript online...

Eingabe:
Standort:   ° Ost
   ° Nord
Position:   ° Ost
  Ausgabe:
Azimut: 
Elevation: 

© DB1HZ - Verwendung mit Hinweis auf den Urheber gestattet..
Diese Seite wurde zuletzt am 15. Januar 2003 geändert.