; ; CANTERS LOW ERROR EQUAL-AREA FOR THE EUROPEAN UNION P34 (POSTPROCESS) ; ===================================================================== ; ; Name: Canters low-error equal-area transformation of the oblique ; azimuthal equal-area projection for the European Union; ; third order transformation, ; with one-fold symmetry, ; 5 coefficients, 26.69° rotation. ; Source: Canters, Small-scale Map Projection Design, Taylor & Francis, London 2002, ; p. 243., Table 5.26, Fig. 5.45 ; Formula 4.84, 4.85, 4.88 (p. 145), see also 5.22, 5.23 (p. 212) ; and rotation formula ; Direction: Direkt-Transformation ; ; Remark: Post-Transformation. Transformation of an oblique azimuthal equal-area ; projection, meta-pole 50° N, 7° E. ; ; Exactly there are two transformations, 1st a rotation, 2nd a polynomial. ; ; Given co-ordinate: x, y ; Result co-ordinate: x', y' ; (C) Rolf Böhm 2006 ; Declarations ; ============ ; ; The variable names by Frank Canters ; ; Current coords ; _name Canters~Low-error~Equal-area~(European~Union)~P34 ; _var X _var Y _var X' _var Y' ; ; The Coefficients ; _var c1 _var c2 _var c3 ; _var c'1 _var c'2 _var c'3 ; ; Powers ; _var x0 ; The x-Powers _var x1 _var x2 _var x3 ; _var Y0 ; The Y-Powers _var Y1 _var Y2 _var Y3 ; ; Misc ; _var theta ; Angle _var sinth ; sin(theta) _var costh ; cos(theta) _var theta' ; Negative Angle _var sinth' ; sin(theta') _var costh' ; cos(theta') _var a ; Accumulator _var p ; Y Divisor _var q ; X' Divisor _var scale ; ; x, y, x', y', Cx', Cy', °(, (°, pi, pi/2 etc. are pre-defined ; ; Initialisation ; ============== ; tstne initial 077$ ; Dialog pause Hinweis:~Dieses~Programm~rechnet~eine~Vorwärtstransformation.\¶ Es~muss~mit~einer~direkt~arbeitenden~Projection~engine~abgearbeitet~werden.\\¶ Das~Quellbild~muss~ein~schiefachsiger~flächentreuer~Azimutalentwurf~(50°N,7°E)~sein. input scale Kartenmaßstabszahl~mit~der~der~Hauptentwurf~gerechnet~wurde. clip scale 1 1e9 ; Theta Sine and Cosine mov theta 26.69 mul theta °( mov sinth theta sin sinth mov costh theta cos costh mov theta' theta neg theta' mov sinth' theta' sin sinth' mov costh' theta' cos costh' ; Set the coeff mov c1 +1.0004 mov c2 0 mov c3 -0.0170 ; mov c'1 +1.0001 mov c'2 +0.0025 mov c'3 +0.0360 ; Programm is initialised mov initial 1 077$: ; ; SIMD-Code ; ========= ; x, y are given ; x', y' were computed ; ; Transformation 5.22/5.23 (Canters 2002, p. 212, see also chapter 4.2.2, p. 145, formula 4.84, 4.85, 4.88) ; --------------------------------------------------------------------------------------------------------- ; ; Note: Formula 5.22 is a rudiment from C6-5 and here no really in use! See also the coefficients. ; (But it's code that runs -- why change it?) ; reduction to normal sphere sub x Cx sub y Cy div x Rx div y Ry mul x scale mul y scale ; Rotation mov r0 x mov r1 y mov r2 x mov r3 y mul r0 costh mul r1 sinth mul r2 sinth neg r2 mul r3 costh mov x r0 add x r1 mov y r2 add y r3 ; The x powers in formula 5.22 mov x1 x mov x2 x mov x3 x power x2 2 power x3 3 ; formula 5.22 clr X ; Note that x and X are 2 different Variables (in RTA Language and also in Canters book) mov a c1 mul a x1 add X a mov a c2 mul a x2 add X a mov a c3 mul a x3 add X a ; That's X in 5.22 also with even coeff mov p c1 mov a 2 mul a c2 mul a x1 add p a mov a 3 mul a c3 mul a x2 add p a mov Y y div Y p ; That's Y in 5.22 also with even coeff ; The Y powers in formula 5.23 mov Y1 Y mov Y2 Y mov Y3 Y power Y2 2 power Y3 3 ; formula 5.23 mov q c'1 mov a 2 mul a c'2 mul a Y1 add q a mov a 3 mul a c'3 mul a Y2 add q a mov X' X div X' q ; That's X' in 5.23 also with even coefficients clr Y' mov a c'1 mul a Y1 add Y' a mov a c'2 mul a Y2 add Y' a mov a c'3 mul a Y3 add Y' a ; That's Y' in 5.23 also with even coefficients ; ; Finale ; ------ ; 111$: mov x' X' mov y' Y' ; Rotation backward mov r0 x' mov r1 y' mov r2 x' mov r3 y' mul r0 costh' mul r1 sinth' mul r2 sinth' neg r2 mul r3 costh' mov x' r0 add x' r1 mov y' r2 add y' r3 ; normal sphere back to map plane mul x' Rx' mul y' Ry' div x' scale div y' scale add x' Cx' add y' Cy' ; exit exit _end