; ; WAGNER IX = AÏTOFF-WAGNER-ENTWURF MIT POLLINIE ; ============================================== ; ; Nr. bei Wagner: 21b ; Kurzname: Aïtoff-Wagner oder Wagners Entwurf IX ; Name: Aïtoff-Wagner-Entwurf mit Pollinie ; Originalname: Aïtoffscher Entwurf mit Pollinie (flächentreu) ; Autor: Karlheinz Wagner 1949 ; Quelle: Karlheinz Wagner, Kartographische Netzentwürfe, Leipzig 1949, S. 214ff. ; Richtung: Inverse Transformation ; ; In Filename named viiii - not ix to sort automatically ; ; 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 Berührungslänge werden abgefragt. ; Die Zielbildgeometrie wird dem Sekundäroperanden oder einem Fixbild entnommen. ; ; Literatur: ; Wagner: Kartographische Netzentwürfe, Leipzig: Bibliographisches Institut 1949 ; Fiala: Mathematische Kartographie, Berlin: Verlag Technik 1957 ; Anmerkung: ; Es gibt 2 Wagner IX, hier den "Originalentwurf" und ausserdem den "Y5". ; Der Originalentwurf beruht auf Wagners Formeln und wird so u. a. von Evenden zitiert. ; Der "Y5" beruht auf Wagners Zeichnung und wird so u. a. von Canters zitiert. ; Worum geht es?: In Wagners Text unter der Formel wird ein "Zusammendrückungsfaktor" ; a=0.88 angegeben, in der Formelsammlung steht lediglich als Fußnote "a<1". ; Dieser Faktor a überführt den "Originalentwurf" in den "Y5". ; Der Aïtoffsche Entwurf mit Pollinie (ï=Alt/239) ist der Wagnersche Entwurf 21b; Seite 214 ff. ; In der Literatur als Wagner IX (IX ist der letzte) oder Aïtoff-Wagner. ; (C) Rolf Böhm 2004, 2020 ; Benutzte Variablen ; ================== ; ; Die Variablennamen entsprechen weitgehend denen von Karlheinz Wagner, ; ; Laufende Koordinaten ; _name Wagners~Entwurf~IX _var phi ; Geographische Breite _var psi ; Substituiertes phi _var lambda ; Geographische Länge _var alpha ; Polarkoordinaten Winkel _var delta ; Polarkoordianten Distanz _var delta0 ; Mittelpunktslänge _var n _var m _var k _var C3.60 _var C1.28 _var t1 ; temporär _var t2 ; temporär ; ; Konstanten der Transformation ; _var scale ; Kartenmaßstabszahl (also 1000000, nicht 1/1000000) ; ; x, y, x', y', Cx', Cy', Rx', Ry', °(, (°, pi, pi/2 etc. sind vordefinierte globale Konstanten ; ; Initialisierung ; =============== ; tstne initial 077$ ; Dialog input scale Maßstabszahl input lambda0 Mittelpunktslänge~in~Grad ; Eingegebene Werte auf Min/Max bringen clip scale 1 1E12 clip lambda0 -180 180 ; Konstanten berechnen mov phi- 70 mul phi- °( mov lambda- 50 mul lambda- °( mov k phi- mul k 2 div k lambda- root k 2 ; k fertig mov n 5 div n 18 ; n fertig mov m 7 div m 9 ; m fertig mov t1 k mov t2 n mul t2 m root t2 2 div t1 t2 mov C3.60 t1 ; C3.60 fertig mov t1 1 mul t2 k ; auf t2 steht noch root (m * n ) div t1 t2 mov C1.28 t1 ; C1.28 fertig ; 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 ; ----------------------------------- ; ; alpha berechnen mov t1 y mul t1 C3.60 mov t2 x mul t2 C1.28 div t1 t2 acot t1 mov x' t1 ; Den doppeldeutigen acot quadrantenweise korrigieren tstgt x $1 sub t1 pi $1: mov alpha t1 ; alpha fertig ; delta berechnen mov t1 y mov t2 alpha cos t2 mul t2 C1.28 div t1 t2 mov delta t1 ; delta fertig ; psi berechnen mov t1 alpha cos t1 mov t2 delta sin t2 mul t1 t2 asin t1 mov psi t1 ; psi fertig ; lambda berechnen mov t1 delta cos t1 mov t2 psi cos t2 div t1 t2 acos t1 mov lambda t1 div lambda n tstgt alpha $13 ; dem doppeldeutigen acos das Vorzeichen geben ... neg lambda $13: ; phi berechnen mov phi psi div phi m ; ; 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 ; mul alpha (° ; mov x' alpha ; mul delta (° ; mov y' delta ; Lambda um lambda0 kreisen lassen add x' lambda0 cmod x' -180 180 exit out: mov x' -9999 mov y' -9999 exit _end