; ; ALLGEMEINE PERSPEKTIVANSICHT DER ERDE ; ===================================== ; ; Name: Allgemeine Perspektivansicht der Erde (General Vertical Perspective) ; Autor: alt ; Quelle: Snyder & Voyland An Albumm of Map Projections, USGS Prof. Paper 1453 (1989) ; Richtung: Direkt-Transformation ; ; Das Programm übernimmt die Koordinaten eines Punktes (x/y) und transformiert ; diese in einen Punkt (x'/y'). ; ; x/y sind ebene Zielpunktkoordinaten, x'/y' geben die geogr. Breite und Länge ; der Position auf der Quell-Erdkugel, auf der der Zielpunkt gelesen werden ; kann. ; (C) Dr.-Ing. Rolf Böhm, U. Hagemann 2006 ; Benutzte Variablen ; ================== ; ; Laufende Koordinaten ; _name Orthographische~Azimutalprojektion~(Snyder) _var phi ; Geographische Breite _var lambda ; Geographische Länge _var z _var K _var sinphi _var cosphi _var sinphi0 _var cosphi0 _var sindl ; sin(Delta(Lambda)) _var cosdl , cos(Delta(Lambda)) _var 1/P ; ; Eingabeparameter ; _var P ; Flughöhe _var lambda0 ; Geogr. Länge des Bildmittelpunktes _var phi0 ; bei Voxland phi1 _var scale ; Kartenmaßstabszahl (also 1000000, nicht 1/1000000) _var -------- ; ; x, y, x', y', Cx', Cy', °(, (°, pi, pi/2 etc. sind vordefinierte globale Konstanten ; ; Initialisierung ; =============== ; tstne initial 077$ ; Dialog pause Hinweis:~Dieses~Programm~rechnet~eine~Vorwärtstransformation.\\Es~muss~mit~einer~direkt~arbeitenden~Projection~engine~abgearbeitet~werden. input scale Maßstabszahl input P Flughöhe~in~km input phi0 Berührungspunktbreite~in~Grad input lambda0 Berührungspunktlänge~in~Grad ; Eingegebene Werte auf Min/Max bringen clip scale 1 1E12 mul P 1000 div P ® ; ® = Earth radiant in m add P 1 clip P -10000 10000 clip phi0 -90 90 clip lambda0 -180 180 ; In Bogenmaß umrechnen mul phi0 °( mul lambda0 °( mov cosphi0 phi0 ; Cos(phi0) braucht man nur einmal rechnen cos cosphi0 mov sinphi0 phi0 ; Sin(phi0) braucht man nur einmal rechnen sin sinphi0 mov 1/P 1 div 1/P P ; Programm ist initialisiert mov initial 1 077$: ; ; SIMD-Laufbereich ; ================ ; ; Eigentlicher Entwurf, dieser direkt! ; ------------------------------------ ; ; Phi, Lambda übernehmen ; mov lambda x ; Geographische Länge mov phi y ; Geographische Breite ; ; Umrechnung in Bogenmaß ; mul phi °( mul lambda °( ; ; Netzentwurf rechnen ; ------------------- ; ; Winkelfunktionen ; mov sinphi phi sin sinphi mov cosphi phi cos cosphi mov sindl lambda sub sindl lambda0 sin sindl mov cosdl lambda sub cosdl lambda0 cos cosdl ; Ausserhalbtest: Sphärisches Dreieck. Kleine Enzyklopädie Mathematik 1969 ("San Franciscs-Leningrad", S.331) mov r0 sinphi0 ; U. Hagemann mul r0 sinphi mov r1 cosphi0 mul r1 cosphi mul r1 cosdl add r0 r1 ; r0: Cos der Distanz Berührungspunkt - aktueller Punkt tstlt r0 $out ; lt: Betrag des Winkels > 90 Grad ; Formula (112) S. 226 mov r0 sinphi0 mul r0 sinphi mov r1 cosphi0 mul r1 cosphi mul r1 cosdl clr z add z r0 add z r1 tstle z $out ; reject the point ; acos z cmplt z 1/P $out ; reject thepoint if cos(z) < 1/P ; Formula (122) S. 227 mov r0 P sub r0 1 mov r1 P sub r1 z ; z: cos(z) mov K r0 div K r1 ; Formula (114) S. 226 mov x sindl mul x cosphi mul x K ; Formel (115) S. 226 mov r0 cosphi0 mul r0 sinphi mov r1 sinphi0 mul r1 cosphi mul r1 cosdl mov y r0 sub y r1 mul y K ; ; Maßstab, Kartenmittelpunkt etc. einrechnen ; ------------------------------------------ ; mul x Rx' ; Erdradius div x scale ; Kartenmaßstab add x Cx' mul y Ry' div y scale add y Cy' ; ; Schlussarbeiten ; --------------- ; mov x' x mov y' y exit out: $out: mov x' -9999 mov y' -9999 _end