; ; VAN DER GRINTEN I ; ================= ; ; Nr. bei Evenden: 8.1.10 (2005) ; Name: Van der Grinten I ; Quelle: Evenden, G. I.: Libroj4 Documentation ; 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) Rolf Böhm 2005 ; Benutzte Variablen ; ================== ; ; Laufende Koordinaten ; _name Van~der~Grinten~I _var phi ; Geographische Breite _var lambda ; Geographische Länge _var phi² _var lambda² _var A ; siehe G. I. Evenden _var A² _var B _var B² _var C _var D _var E _var F _var G _var G² _var P _var P² _var Q _var Q² _var S _var T _var T² _var t1 ; temporär _var t2 ; temporär _var t3 ; temporär ; ; Konstanten der Transformation ; _var lambda0 ; Geogr. Länge des Bildmittelpunktes _var scale ; Kartenmaßstabszahl (also 1000000, nicht 1/1000000) ; ; 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 lambda0 Mittelpunktslänge~in~Grad ; Eingegebene Werte auf Min/Max bringen clip scale 1 1E12 clip lambda0 -180 180 clip phi0 -90 90 ; Programm ist initialisiert mov initial 1 077$: ; ; SIMD-Laufbereich ; ================ ; ; Eigentlicher Entwurf, dieser direkt! ; ------------------------------------ ; mov lambda x ; Geographische Länge mov phi y ; Geographische Breite sub lambda lambda0 cmpgt lambda -180 10$ add lambda 360 10$: cmpgt lambda -180 30$ add lambda 360 30$: cmplt lambda 180 40$ sub lambda 360 40$: cmplt lambda 180 50$ sub lambda 360 50$: ; ; Umrechnung in Bogenmaß ; ---------------------- ; mul phi °( mul lambda °( ; ; Netzentwurf rechnen ; ------------------- mov B phi ; (8.81) abs B mul B 2 div B pi mov B² B ; also (8.81) power B² 2 mov C 1 sub C B² root C 2 mov t2 lambda ; A (8.85) and A² div t2 pi mov A pi div A lambda sub A t2 abs A div A 2 mov A² A power A² 2 mov t1 B ; G (8.86) and G² add t1 C sub t1 1 mov G C div G t1 mov G² G power G² 2 mov P 2 ; P (8.87) and P² div P B sub P 1 mul P G mov P² P power P² 2 mov Q A² ; Q (8.88) and Q² add Q G mov Q² Q power Q² 2 mov S P² ; S (8.89) add S A² mov T G ; T (8.90) and T² sub T P² mov T² T power T² 2 mov t2 G² ; x (8.91) sub t2 P² mul t2 S mov t1 T² mul t1 A² sub t1 t2 root t1 2 mov x A mul x T add x t1 mul x pi div x S abs x ; give x the sign of lambda ... sgn lambda mul x lambda mov t2 A² ; y (8.92) add t2 1 mul t2 S sub t2 Q² root t2 2 mul t2 A mov y P mul y Q sub y t2 mul y pi div y S abs y ; give y the sign of phi ... sgn phi mul y phi ; ; 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 ; --------------- ; 111$: mov x' x mov y' y exit out: mov x' -9999 mov y' -9999 exit _end