summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohannes Hofmann <Johannes.Hofmann@gmx.de>2007-08-13 20:40:24 +0200
committerJohannes Hofmann <Johannes.Hofmann@gmx.de>2007-08-13 20:40:24 +0200
commitd6948bd07f2d8dd4d41bfeb9f4dfbcfc89179eb9 (patch)
treee4710e4deec0ec8f8298fc26280e6476a2e2d665
parent156f9abea4f1a575324e5b9269d48407241718c3 (diff)
fix cylindrical projection wrap-around
-rw-r--r--src/ProjectionLSQ.cxx8
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,