GammaLib 2.0.0
Loading...
Searching...
No Matches
GWcsGLS.cpp
Go to the documentation of this file.
1/***************************************************************************
2 * GWcsGLS.cpp - Global Sinusoidal (GLS) projection class *
3 * ----------------------------------------------------------------------- *
4 * copyright (C) 2017-2018 by Juergen Knoedlseder *
5 * ----------------------------------------------------------------------- *
6 * *
7 * This program is free software: you can redistribute it and/or modify *
8 * it under the terms of the GNU General Public License as published by *
9 * the Free Software Foundation, either version 3 of the License, or *
10 * (at your option) any later version. *
11 * *
12 * This program is distributed in the hope that it will be useful, *
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
15 * GNU General Public License for more details. *
16 * *
17 * You should have received a copy of the GNU General Public License *
18 * along with this program. If not, see <http://www.gnu.org/licenses/>. *
19 * *
20 ***************************************************************************/
21/**
22 * @file GWcsGLS.cpp
23 * @brief Global Sinusoidal (GLS) projection class implementation
24 * @author Juergen Knoedlseder
25 */
26
27/* __ Includes ___________________________________________________________ */
28#ifdef HAVE_CONFIG_H
29#include <config.h>
30#endif
31#include "GException.hpp"
32#include "GMath.hpp"
33#include "GWcsGLS.hpp"
34#include "GWcsRegistry.hpp"
35
36/* __ Method name definitions ____________________________________________ */
37
38/* __ Macros _____________________________________________________________ */
39
40/* __ Coding definitions _________________________________________________ */
41
42/* __ Debug definitions __________________________________________________ */
43
44/* __ Local prototypes ___________________________________________________ */
45
46/* __ Constants __________________________________________________________ */
47
48/* __ Globals ____________________________________________________________ */
50const GWcsRegistry g_wcs_gls_registry(&g_wcs_gls_seed);
51
52
53/*==========================================================================
54 = =
55 = Constructors/destructors =
56 = =
57 ==========================================================================*/
58
59/***********************************************************************//**
60 * @brief Void constructor
61 ***************************************************************************/
63{
64 // Initialise class members
66
67 // Return
68 return;
69}
70
71
72/***********************************************************************//**
73 * @brief Projection constructor
74 *
75 * @param[in] coords Coordinate system.
76 * @param[in] crval1 X value of reference pixel.
77 * @param[in] crval2 Y value of reference pixel.
78 * @param[in] crpix1 X index of reference pixel (starting from 1).
79 * @param[in] crpix2 Y index of reference pixel (starting from 1).
80 * @param[in] cdelt1 Increment in x direction at reference pixel [deg].
81 * @param[in] cdelt2 Increment in y direction at reference pixel [deg].
82 ***************************************************************************/
83GWcsGLS::GWcsGLS(const std::string& coords,
84 const double& crval1, const double& crval2,
85 const double& crpix1, const double& crpix2,
86 const double& cdelt1, const double& cdelt2) :
87 GWcsSFL(coords, crval1, crval2, crpix1, crpix2, cdelt1, cdelt2)
88{
89 // Initialise class members
91
92 // Setup WCS derived parameters
93 wcs_set();
94
95 // Return
96 return;
97}
98
99
100/***********************************************************************//**
101 * @brief Copy constructor
102 *
103 * @param[in] wcs World Coordinate System.
104 ***************************************************************************/
106{
107 // Initialise class members for clean destruction
108 init_members();
109
110 // Copy members
111 copy_members(wcs);
112
113 // Return
114 return;
115}
116
117
118/***********************************************************************//**
119 * @brief Destructor
120 ***************************************************************************/
122{
123 // Free members
124 free_members();
125
126 // Return
127 return;
128}
129
130
131/*==========================================================================
132 = =
133 = Operators =
134 = =
135 ==========================================================================*/
136
137/***********************************************************************//**
138 * @brief Assignment operator
139 *
140 * @param[in] wcs World Coordinate System.
141 * @return World Coordinate System.
142 ***************************************************************************/
144{
145 // Execute only if object is not identical
146 if (this != &wcs) {
147
148 // Copy base class members
149 this->GWcsSFL::operator=(wcs);
150
151 // Free members
152 free_members();
153
154 // Initialise private members for clean destruction
155 init_members();
156
157 // Copy members
158 copy_members(wcs);
159
160 } // endif: object was not identical
161
162 // Return this object
163 return *this;
164}
165
166
167/*==========================================================================
168 = =
169 = Public methods =
170 = =
171 ==========================================================================*/
172
173/***********************************************************************//**
174 * @brief Clear Global Sinusoidal projection
175 *
176 * Resets the Global Sinusoidal projection to an clean initial state.
177 ***************************************************************************/
179{
180 // Free class members (base and derived classes, derived class first)
181 free_members();
182 this->GWcsSFL::free_members();
183 this->GWcs::free_members();
185
186 // Initialise members
188 this->GWcs::init_members();
189 this->GWcsSFL::init_members();
190 init_members();
191
192 // Return
193 return;
194}
195
196
197/***********************************************************************//**
198 * @brief Clone Global Sinusoidal projection
199 *
200 * @return Pointer to deep copy of Global Sinusoidal projection.
201 ***************************************************************************/
203{
204 return new GWcsGLS(*this);
205}
206
207
208/***********************************************************************//**
209 * @brief Print Global Sinusoidal projection information
210 *
211 * @param[in] chatter Chattiness.
212 * @return String containing Global Sinusoidal projection information.
213 ***************************************************************************/
214std::string GWcsGLS::print(const GChatter& chatter) const
215{
216 // Initialise result string
217 std::string result;
218
219 // Continue only if chatter is not silent
220 if (chatter != SILENT) {
221
222 // Append header
223 result.append("=== GWcsGLS ===");
224
225 // Append information
226 result.append(wcs_print(chatter));
227
228 } // endif: chatter was not silent
229
230 // Return result
231 return result;
232}
233
234
235/*==========================================================================
236 = =
237 = Private methods =
238 = =
239 ==========================================================================*/
240
241/***********************************************************************//**
242 * @brief Initialise class members
243 ***************************************************************************/
245{
246 // Return
247 return;
248}
249
250
251/***********************************************************************//**
252 * @brief Copy class members
253 *
254 * @param[in] wcs World Coordinate System.
255 ***************************************************************************/
257{
258 // Return
259 return;
260}
261
262
263/***********************************************************************//**
264 * @brief Delete class members
265 ***************************************************************************/
267{
268 // Return
269 return;
270}
Exception handler interface definition.
Mathematical function definitions.
GChatter
Definition GTypemaps.hpp:33
@ SILENT
Definition GTypemaps.hpp:34
const GWcsGLS g_wcs_gls_seed
Definition GWcsGLS.cpp:49
Global Sinusoidal (GLS) projection class definition.
World Coordinate Projection registry class interface definition.
void free_members(void)
Delete class members.
void init_members(void)
Initialise class members.
Global Sinusoidal (GLS) projection class definition.
Definition GWcsGLS.hpp:45
void copy_members(const GWcsGLS &wcs)
Copy class members.
Definition GWcsGLS.cpp:256
void free_members(void)
Delete class members.
Definition GWcsGLS.cpp:266
GWcsGLS(void)
Void constructor.
Definition GWcsGLS.cpp:62
virtual void clear(void)
Clear Global Sinusoidal projection.
Definition GWcsGLS.cpp:178
virtual std::string print(const GChatter &chatter=NORMAL) const
Print Global Sinusoidal projection information.
Definition GWcsGLS.cpp:214
virtual GWcsGLS * clone(void) const
Clone Global Sinusoidal projection.
Definition GWcsGLS.cpp:202
void init_members(void)
Initialise class members.
Definition GWcsGLS.cpp:244
GWcsGLS & operator=(const GWcsGLS &wcs)
Assignment operator.
Definition GWcsGLS.cpp:143
virtual ~GWcsGLS(void)
Destructor.
Definition GWcsGLS.cpp:121
Interface definition for the WCS registry class.
Sanson-Flamsteed (SFL) projection class definition.
Definition GWcsSFL.hpp:43
GWcsSFL & operator=(const GWcsSFL &wcs)
Assignment operator.
Definition GWcsSFL.cpp:145
void init_members(void)
Initialise class members.
Definition GWcsSFL.cpp:244
void free_members(void)
Delete class members.
Definition GWcsSFL.cpp:266
void free_members(void)
Delete class members.
Definition GWcs.cpp:1066
std::string wcs_print(const GChatter &chatter=NORMAL) const
Print WCS information.
Definition GWcs.cpp:1642
void init_members(void)
Initialise class members.
Definition GWcs.cpp:962
void wcs_set(void) const
Setup of World Coordinate System.
Definition GWcs.cpp:1262