From adc38b256199b9a6c88a687b1675fa2cabdb8377 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9=20Offringa?= <offringa@astron.nl>
Date: Wed, 15 Dec 2010 09:43:33 +0000
Subject: [PATCH] Bug 1491: RA en DEC string tools

---
 .../include/AOFlagger/msio/antennainfo.h      | 35 ++++++++++++++++---
 1 file changed, 30 insertions(+), 5 deletions(-)

diff --git a/CEP/DP3/AOFlagger/include/AOFlagger/msio/antennainfo.h b/CEP/DP3/AOFlagger/include/AOFlagger/msio/antennainfo.h
index 8daa802bcbb..003532114fb 100644
--- a/CEP/DP3/AOFlagger/include/AOFlagger/msio/antennainfo.h
+++ b/CEP/DP3/AOFlagger/include/AOFlagger/msio/antennainfo.h
@@ -155,18 +155,43 @@ struct Frequency {
 	}
 };
 
-struct Declination {
+struct RightAscension {
 	static std::string ToString(numl_t value)
 	{
-		return "";
+		value = fmod(value, 2.0*M_PInl);
+		if(value < 0.0) value += 2.0*M_PInl;
+		std::stringstream s;
+		s << (int) floorn(value*12.0/M_PInl) << ':';
+		int d2 = (int) floornl(fmodnl(value*12.0*60.0/M_PInl, 60.0));
+		if(d2 < 10) s << '0';
+		s << d2 << ':';
+		numl_t d3 = fmodnl(value*12.0*60.0*60.0/M_PInl, 60.0);
+		if(d3 < 10.0) s << '0';
+		s << d3;
+		return s.str();
 	}
 };
 
-struct RightAscension {
+struct Declination {
 	static std::string ToString(numl_t value)
 	{
-		return "";
+		value = fmod(value, 2.0*M_PInl);
+		if(value < 0.0) value += 2.0*M_PInl;
+		if(value > M_PInl*0.5) value = M_PInl - value;
+		std::stringstream s;
+		if(value > 0.0)
+			s << '+';
+		else
+			s << '-';
+		value = fabsnl(value);
+		s << (int) floornl(value*180.0/M_PIn) << '.';
+		int d2 = (int) fmodnl(value*180.0*60.0/M_PIn, 60.0);
+		if(d2 < 10) s << '0';
+		s << d2 << '.';
+		numl_t d3 = fmodnl(value*180.0*60.0*60.0/M_PIn, 60.0);
+		if(d3 < 10.0) s << '0';
+		s << d3;
+		return s.str();
 	}
 };
-
 #endif
-- 
GitLab