diff options
author | Johannes Hofmann <Johannes.Hofmann@gmx.de> | 2007-08-13 20:40:24 +0200 |
---|---|---|
committer | Johannes Hofmann <Johannes.Hofmann@gmx.de> | 2007-08-13 20:40:24 +0200 |
commit | d6948bd07f2d8dd4d41bfeb9f4dfbcfc89179eb9 (patch) | |
tree | e4710e4deec0ec8f8298fc26280e6476a2e2d665 | |
parent | 156f9abea4f1a575324e5b9269d48407241718c3 (diff) |
fix cylindrical projection wrap-around
-rw-r--r-- | src/ProjectionLSQ.cxx | 8 |
1 files changed, 8 insertions, 0 deletions
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, |