; ; WAGNER V = UNECHTZYLINDRISCHER ENTWURF MIT ELLIPTISCHEN MERIDIANEN MIT POLLINIE UND VORGESCHRIEBENER FLÄCHENVERZERRUNG ; ====================================================================================================================== ; ; Nr. bei Wagner: 19b ; Kurzname: Wagners Entwurf V ; Name: Wagners Entwurf V (elliptisch, flächenreguliert) ; Originalname: Unechtzylindrischer Entwurf mit elliptischen Meridianen mit Pollinie und vorgeschriebener Flächenverzerrung ; Autor: Karlheinz Wagner ; Quelle: Karlheinz Wagner, Kartographische Netzentwürfe, Leipzig 1949, S. 194ff. ; Richtung: Invers ; ; 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. ; ; Maßstab und Mittelmeridianlänge werden abgefragt. ; ; Literatur: ; Wagner: Kartographische Netzentwürfe, Leipzig: Bibliographisches Institut 1949 ; (C) Rolf Böhm 2004 ; Benutzte Variablen ; ================== ; Die Variablennamen entsprechen weitgehend denen von Karlheinz Wagner, ; ; Laufende Koordinaten ; _name Wagners~Entwurf~V _var phi ; Geographische Breite _var lambda ; Geographische Länge _var psi ; Parametrisierte Länge _var phi-lim ; Grenzbreite bis zu der die Flächenverzerrung begrenzt werden soll (60°) _var m1 ; s. Wagner _var m2 ; s. Wagner _var n ; s. Wagner _var t1 ; temporär _var t2 ; temporär _var t3 ; temporär _var t4 ; temporär _var C1.65 ; etwa 1.65 aus der Wagnerschen Formal S. 196 _var C0.90 ; etwa 0.90 _var C3.00 ; etwa 3.00 _var C0.88 ; etwa 0.88 _var sin79° ; vgl. Wagner S. 195 _var lambda0 ; Null-Länge ; ; x, y, x', y', Cx', Cy', Rx', Ry', °(, (°, pi, pi/2 etc. sind vordefinierte globale Konstanten ; ; Initialisierung ; =============== ; tstne initial 077$ ; Dialog input scale Entwurf~mit~elliptischen~Meridianen~mit~Pollinie~und~vorgeschriebener~Flächenverzerrung~(Wagner~V)\\Maßstabszahl clip scale 1 1E12 input lambda0 Mittelpunktslänge~in~Grad clip lambda0 -180 180 ; Konstanten (Konfigurationsvariablen) berechnen mov t1 20 ; 20 % Flächenverzerrung zulässig (Formeln von Wagner II) mov phi-lim 60 mul phi-lim °( ; m2 add t1 100 ; + 100 % div t1 100 ; Prozent div t1 2 ; Jetzt Wagners 0.6 acos t1 ; Das ist jetzt der Winkel von 53.1301° div t1 phi-lim mov m2 t1 ; nur zum besseren Programmverständnis mov C0.88 m2 cls prints \Wagner~V~Constants\\0.88=~ printn C0.88 2 20 ; m1 mit mittlerem Ansatz S. 195 oben berechnen mov t1 pi mul t1 2 div t1 3 mov t2 3 root t2 2 div t2 2 add t1 t2 mov t3 C0.88 mul t3 pi div t3 2 sin t3 mov sin79° t3 ; mul t3 pi ; E R R O R I N T H E W A G N E R S. 195 ! ! ! div t1 t3 mov m1 t1 mov C3.00 m1 prints \3.00=~ printn C3.00 2 20 mov t1 3 root t1 2 mul t1 pi mul t1 6 mul t1 sin79° mov t2 3 root t2 2 mul t2 3 mov t3 pi mul t3 4 add t2 t3 mul t2 C0.88 div t1 t2 ; t2 aufheben: (4*pi+3*root(3))*0.88 (***) root t1 2 mul t1 2 div t1 pi mov C0.90 t1 prints \0.90=~ printn C0.90 2 20 mov t1 3 root t1 2 mul t1 pi mul t1 2 mul t1 sin79° div t1 t2 ; Nenner von (***) oben root t1 2 mul t1 2 mov C1.65 t1 prints \1.65=~ printn C1.65 2 20 ; Programm ist initialisiert mov initial 1 077$: ; ; SIMD-Laufbereich ; ================ ; ; Maßstab, Kartenmittelpunkt etc. einrechnen ; ------------------------------------------ sub x Cx' ; Bildmittelpunkt div x Rx' ; Erdradius mul x scale ; Kartenmaßstab sub y Cy' div y Ry' mul y scale ; ; Eigentlicher Entwurf, dieser invers ; ----------------------------------- ; psi berechnen mov psi y div psi C1.65 asin psi errjump out ; phi berechnen mov t2 psi mul t2 2 mov t1 t2 sin t1 add t2 t1 div t2 C3.00 asin t2 errjump out div t2 C0.88 mov phi t2 ; lambda berechnen mov t1 x mov t2 psi cos t2 mul t2 C0.90 div t1 t2 mov lambda t1 ; ; In Gradmaß umrechnen und Ausserhalbtest ; --------------------------------------- mul phi (° mul lambda (° cmplt phi -90 out cmpgt phi 90 out cmplt lambda -180 out cmpgt lambda 180 out ; ; Schlussarbeiten ; --------------- ; mov x' lambda mov y' phi ; Lambda um lambda0 kreisen lassen add x' lambda0 cmod x' -180 180 exit out: mov x' -9999 mov y' -9999 exit _end