; ; CANTERS LOW ERROR EQUAL-AREA FOR THE EUROPEAN UNION P37 (POSTPROCESS) ; ===================================================================== ; ; Name: Canters low-error equal-area transformation of the oblique ; azimuthal equal-area projection for the European Union; ; fifth order transformation, ; with one-fold symmetry, ; 8 coefficients, 26.69° rotation. ; Source: Canters, Small-scale Map Projection Design, Taylor & Francis, London 2002, ; p. 243., Table 5.26, without figure ; 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)~P37 ; _var X _var Y _var X' _var Y' ; ; The Coefficients ; _var c1 _var c2 _var c3 _var c4 _var c5 ; _var c'1 _var c'2 _var c'3 _var c'4 _var c'5 ; ; Powers ; _var x0 ; The x-Powers _var x1 _var x2 _var x3 _var x4 _var x5 ; _var Y0 ; The Y-Powers _var Y1 _var Y2 _var Y3 _var Y4 _var Y5 ; ; 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.0016 mov c2 0 mov c3 -0.0477 mov c4 0 mov c5 +0.3216 ; mov c'1 +1.0007 mov c'2 -0.0030 mov c'3 +0.0622 mov c'4 +0.0701 mov c'5 -0.2578 ; 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 mov x4 x mov x5 x power x2 2 power x3 3 power x4 4 power x5 5 ; 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 mov a c4 mul a x4 add X a mov a c5 mul a x5 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 a 4 mul a c4 mul a x3 add p a mov a 5 mul a c5 mul a x4 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 mov Y4 Y mov Y5 Y power Y2 2 power Y3 3 power Y4 4 power Y5 5 ; 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 a 4 mul a c'4 mul a Y3 add q a mov a 5 mul a c'5 mul a Y4 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 mov a c'4 mul a Y4 add Y' a mov a c'5 mul a Y5 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