From d6948bd07f2d8dd4d41bfeb9f4dfbcfc89179eb9 Mon Sep 17 00:00:00 2001
From: Johannes Hofmann <Johannes.Hofmann@gmx.de>
Date: Mon, 13 Aug 2007 20:40:24 +0200
Subject: fix cylindrical projection wrap-around

---
 src/ProjectionLSQ.cxx | 8 ++++++++
 1 file changed, 8 insertions(+)

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