Ist das nicht die gleiche Fragestellung, wie diese hier:
Aufgabe 4 (Aufgabentyp: Programmierung)
a) Schreiben Sie ein C-Programm, welches die kürzeste Flugstrecke F
zwischen zwei Flughäfen
berechnet. Die beiden Flughäfen entsprechen zwei Punkten P1 bzw. P2 auf
der Erdoberfläche, deren
Positionen durch die Längengrade a1 bzw. a2 und die Breitengrade j1 bzw.
j2 gegeben sind.
Die kürzeste Flugstrecke kann in zwei Schritten berechnet werden. Zu
einem Punkt P auf der Erdkugel
sei p
r
= (x,y,z) der auf die Einheitskugel projizierte Punkt bzw. Ortsvektor
mit den kartesischen
Koordinaten x, y und z. Diese lassen sich aus dem Längengrad a und dem
Breitengrad j wie folgt
berechnen:
x = cos(a) cos(j), y = sin(a) cos(j), z = sin(j)
Für die zwei Punkte P1 bzw. P2 sind natürlich entsprechende Indizes 1
und 2 zu verwenden. Mit Hilfe
des Skalarproduktes der Einheitsvektoren 1 p
r
und 2 p
r
und der Arcuscosinus-Funktion erhält man den
Winkel (im Bogenmaß) zwischen 1 p
r
und 2 p
r
. Unter Berücksichtigung des Erdradius R = 6371 km erhält
man schließlich die kürzeste Flugstrecke F:
F = R . arccos( x1 x2 + y1 y2 + z1 z2 ) Für das Programm ist nur diese
Formel und nicht ihre Herleitung wichtig !
Das Programm soll folgenden Spezifikationen genügen:
· Die Längengrade a1 bzw. a2 und die Breitengrade j1 bzw. j2 beider
Punkte sind in der Funktion main()
sinnvoll kommentiert einzulesen. Alle Winkel sollen im Gradmaß
eingegeben werden.
· Die Berechnung der Flugstrecke F soll durch eine in der gleichen
Programmquelle enthaltene Funktion
abstand() erfolgen, der als Parameter die Werte a1, a2, j1, j2 übergeben
werden sollen. Das Ergebnis
soll als return-Wert geliefert werden.
· Die Funktion abstand() soll in der Programmquelle hinter der Funktion
main() angeordnet sein.
· Die berechnete kürzeste Flugstrecke F ist in main() kommentiert
auszugeben.
Hinweise:
· Beachten Sie, dass sich die Winkelfunktionen in C auf Argumente im
Bogenmaß beziehen.
· Die Kreiszahl p kann hier mit dem Wert 3.14159 angenähert werden.
· Beachten Sie auch die genaue Bezeichnung der Arcuscosinus-Funktion,
die als C-Standardfunktion
existiert.