! &1 name of the first array (x) ! &2 name of the second array (y) ! &3 sign of the rotation ! define real nonono sign let found1 exist(nonono&1) /new logi let found2 exist(nonono&2) /new logi if (found1.or.found2) then say "Usage: ROTATE Array1 Array2 [Clockwise = 1, CounterClockwise = -1]" return endif if (.not.found1.and..not.exist(&1)) then say "Undefined array &1" return endif if (.not.found2.and..not.exist(&2)) then say "Undefined array &2" return endif if (.not.exist(el)) then say "No scan (elevation undefined)" return endif let sign 0&3 if (sign.eq.0) then say "... rotating clockwise" endif let sign sign+1e-6 let sign nint(abs(sign)|sign) ! define real du /like &2 define real m cm sm em define inte n let du[1] 1 compute m mean du ! let n nint(1|m) compute em mean el let em em|180*pi*sign let cm cos(em) let sm sin(em) let du &1*cm-&2*sm let &2 &1*sm+&2*cm let &1 du