Loading [MathJax]/extensions/TeX/AMSsymbols.js
LAL 7.7.0.1-00ddc7f
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
SkyCoordinates.h
Go to the documentation of this file.
1/*
2* Copyright (C) 2007 Jolien Creighton, Reinhard Prix, Teviet Creighton
3*
4* This program is free software; you can redistribute it and/or modify
5* it under the terms of the GNU General Public License as published by
6* the Free Software Foundation; either version 2 of the License, or
7* (at your option) any later version.
8*
9* This program is distributed in the hope that it will be useful,
10* but WITHOUT ANY WARRANTY; without even the implied warranty of
11* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12* GNU General Public License for more details.
13*
14* You should have received a copy of the GNU General Public License
15* along with with program; see the file COPYING. If not, write to the
16* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
17* MA 02110-1301 USA
18*/
19
20#ifndef _SKYCOORDINATES_H
21#define _SKYCOORDINATES_H
22
23#include <lal/LALStdlib.h>
24
25#ifdef __cplusplus
26extern "C" {
27#endif
28
29/**
30 * \addtogroup SkyCoordinates_h
31 * @{
32 */
33
34/** \name Error codes */
35/** @{ */
36#define SKYCOORDINATESH_ENUL 1 /**< Unexpected null pointer in arguments */
37#define SKYCOORDINATESH_ESYS 2 /**< Wrong coordinate system in input */
38#define SKYCOORDINATESH_EZERO 3 /**< Angular coordinates undefined at origin */
39#define SKYCOORDINATESH_ESING 4 /**< Point is inside singular ellipsoid */
40/** @} */
41
42/** \cond DONT_DOXYGEN */
43#define SKYCOORDINATESH_MSGENUL "Unexpected null pointer in arguments"
44#define SKYCOORDINATESH_MSGESYS "Wrong coordinate system in input"
45#define SKYCOORDINATESH_MSGEZERO "Angular coordinates undefined at origin"
46#define SKYCOORDINATESH_MSGESING "Point is inside singular ellipsoid"
47/** \endcond */
48
49
50/*---------- exported types ---------- */
51
52/**
53 * This enumerated type is used to identify data as being in one of the
54 * coordinate systems discussed in \ref SkyCoordinates_h.
55 */
56typedef enum tagCoordinateSystem {
57 COORDINATESYSTEM_HORIZON, /**< A horizon coordinate system. */
58 COORDINATESYSTEM_GEOGRAPHIC, /**< The Earth-fixed geographic coordinate system. */
59 COORDINATESYSTEM_EQUATORIAL, /**< The sky-fixed equatorial coordinate system. */
60 COORDINATESYSTEM_ECLIPTIC, /**< The ecliptic coordinate system. */
61 COORDINATESYSTEM_GALACTIC /**< The galactic coordinate system. */
63
64/**
65 * This structure stores the two spherical coordinates of a sky position;
66 * ie a generic latitude and longitude; the structure is not defined
67 * specific to a particular coordinate system, but maintains a tag
68 * indicating which coordinate system it is expressed in.
69 */
70typedef struct tagSkyPosition {
71 REAL8 longitude; /**< The longitudinal coordinate (in radians), as defined above.*/
72 REAL8 latitude; /**< The latitudinal coordinate (in radians), as defined above. */
73 CoordinateSystem system; /**< The coordinate system in which latitude/longitude are expressed. */
75
76/**
77 * This structure stores the location of a point on (or near) the surface
78 * of the Earth in both geodetic and geocentric coordinates, as described
79 * in TerrestrialCoordinates.c .
80 */
81typedef struct tagEarthPosition {
82 SkyPosition geodetic; /**< The geographic coordinates of the
83 * upward vertical direction from the point; that is, the point's
84 * <em>geodetic</em> latitude and longitude. */
85
86 REAL8 elevation; /**< The vertical distance of the point above the reference ellipsoid,
87 * in metres.*/
88
89 REAL8 x, y, z; /**< The Earth-fixed geocentric Cartesian coordinates of the point,
90 *in metres.*/
91
92 REAL8 radius; /**< The distance of the point from the geocentre, in metres. */
93
94 SkyPosition geocentric; /**< The geographic coordinates of the direction from the centre
95 * of the Earth through the point; that is, the point's
96 * <em>geocentric</em> latitude and longitude.*/
98
99
100/**
101 * This structure stores parameters for the function <tt>LALConvertSkyPosition()</tt>.
102 */
103typedef struct tagConvertSkyParams {
104 CoordinateSystem system; /**< The coordinate system to which one is transforming. */
105
106 SkyPosition *zenith; /**< The position of the zenith of the horizon coordinate system;
107 * may be <tt>NULL</tt> if one is neither converting to nor from
108 * a horizon system. */
109
110 LIGOTimeGPS *gpsTime; /**< The GPS time for conversions between Earth-fixed and
111 * sky-fixed coordinates; may be <tt>NULL</tt> if no such conversion
112 * is required (or if one is transforming to or from horizon
113 * coordinates and <tt>*zenith</tt> is given in the sky-fixed
114 * equatorial system). */
116
117/** @} */
118
119/* ---------- Function prototypes ---------- */
120
121void
124 SkyPosition *input );
125
126void
129 SkyPosition *input );
130
131void
134 SkyPosition *input );
135
136void
139 SkyPosition *input );
140
141void
144 SkyPosition *input,
145 LIGOTimeGPS *gpsTime );
146
147void
150 SkyPosition *input,
151 LIGOTimeGPS *gpsTime );
152
153void
156 SkyPosition *input,
157 const SkyPosition *zenith );
158
159void
162 SkyPosition *input,
163 const SkyPosition *zenith );
164
165void
167
168void
170
171void
174 SkyPosition *input,
175 ConvertSkyParams *params );
176
177void LALNormalizeSkyPosition (LALStatus *status, SkyPosition *posOut, const SkyPosition *posIn);
178
179#ifdef SWIG /* SWIG interface directives */
180SWIGLAL(INOUT_SCALARS(double*, longitude, latitude));
181#endif
182
183void XLALNormalizeSkyPosition ( double *_LAL_RESTRICT_ longitude, double *_LAL_RESTRICT_ latitude );
184
185#ifdef __cplusplus
186}
187#endif
188
189#endif /* _SKYCOORDINATES_H */
#define _LAL_RESTRICT_
Definition: LALStddef.h:35
void XLALNormalizeSkyPosition(double *_LAL_RESTRICT_ longitude, double *_LAL_RESTRICT_ latitude)
void LALEquatorialToGalactic(LALStatus *, SkyPosition *output, SkyPosition *input)
void LALEquatorialToEcliptic(LALStatus *, SkyPosition *output, SkyPosition *input)
void LALEclipticToEquatorial(LALStatus *, SkyPosition *output, SkyPosition *input)
void LALGalacticToEquatorial(LALStatus *, SkyPosition *output, SkyPosition *input)
double REAL8
Double precision real floating-point number (8 bytes).
void LALConvertSkyCoordinates(LALStatus *, SkyPosition *output, SkyPosition *input, ConvertSkyParams *params)
void LALNormalizeSkyPosition(LALStatus *status, SkyPosition *posOut, const SkyPosition *posIn)
CoordinateSystem
This enumerated type is used to identify data as being in one of the coordinate systems discussed in ...
@ COORDINATESYSTEM_GALACTIC
The galactic coordinate system.
@ COORDINATESYSTEM_ECLIPTIC
The ecliptic coordinate system.
@ COORDINATESYSTEM_GEOGRAPHIC
The Earth-fixed geographic coordinate system.
@ COORDINATESYSTEM_HORIZON
A horizon coordinate system.
@ COORDINATESYSTEM_EQUATORIAL
The sky-fixed equatorial coordinate system.
void LALGeocentricToGeodetic(LALStatus *, EarthPosition *location)
void LALEquatorialToGeographic(LALStatus *, SkyPosition *output, SkyPosition *input, LIGOTimeGPS *gpsTime)
void LALHorizonToSystem(LALStatus *, SkyPosition *output, SkyPosition *input, const SkyPosition *zenith)
void LALGeographicToEquatorial(LALStatus *, SkyPosition *output, SkyPosition *input, LIGOTimeGPS *gpsTime)
void LALGeodeticToGeocentric(LALStatus *, EarthPosition *location)
void LALSystemToHorizon(LALStatus *, SkyPosition *output, SkyPosition *input, const SkyPosition *zenith)
This structure stores parameters for the function LALConvertSkyPosition().
CoordinateSystem system
The coordinate system to which one is transforming.
SkyPosition * zenith
The position of the zenith of the horizon coordinate system; may be NULL if one is neither converting...
LIGOTimeGPS * gpsTime
The GPS time for conversions between Earth-fixed and sky-fixed coordinates; may be NULL if no such co...
This structure stores the location of a point on (or near) the surface of the Earth in both geodetic ...
SkyPosition geocentric
The geographic coordinates of the direction from the centre of the Earth through the point; that is,...
REAL8 radius
The distance of the point from the geocentre, in metres.
REAL8 elevation
The vertical distance of the point above the reference ellipsoid, in metres.
SkyPosition geodetic
The geographic coordinates of the upward vertical direction from the point; that is,...
LAL status structure, see The LALStatus structure for more details.
Definition: LALDatatypes.h:947
Epoch relative to GPS epoch, see LIGOTimeGPS type for more details.
Definition: LALDatatypes.h:458
This structure stores the two spherical coordinates of a sky position; ie a generic latitude and long...
REAL8 longitude
The longitudinal coordinate (in radians), as defined above.
REAL8 latitude
The latitudinal coordinate (in radians), as defined above.
CoordinateSystem system
The coordinate system in which latitude/longitude are expressed.
void output(int gps_sec, int output_type)
Definition: tconvert.c:440