From d6948bd07f2d8dd4d41bfeb9f4dfbcfc89179eb9 Mon Sep 17 00:00:00 2001 From: Johannes Hofmann Date: Mon, 13 Aug 2007 20:40:24 +0200 Subject: fix cylindrical projection wrap-around --- src/ProjectionLSQ.cxx | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src') diff --git a/src/ProjectionLSQ.cxx b/src/ProjectionLSQ.cxx index 5da4369..901c721 100644 --- a/src/ProjectionLSQ.cxx +++ b/src/ProjectionLSQ.cxx @@ -17,6 +17,7 @@ #include "ProjectionLSQ.H" +static double pi_d = asin(1.0) * 2.0; ProjectionLSQ::ProjectionLSQ() { } @@ -236,6 +237,13 @@ void ProjectionLSQ::get_coordinates(double alph, double a_nick, const ViewParams *parms, double *x, double *y) { + // Normalize alph - parms->a_center to [-pi/2, pi/2] + if (alph - parms->a_center > pi_d) { + alph -= 2.0 * pi_d; + } else if (alph - parms->a_center < -pi_d) { + alph += 2.0 * pi_d; + } + *x = mac_x(parms->a_center, parms->a_nick, parms->a_tilt, parms->scale, parms->k0, parms->k1, parms->x0, alph, a_nick); *y = mac_y(parms->a_center, parms->a_nick, parms->a_tilt, parms->scale, -- cgit v1.2.3