libnova v 0.15.0

- Main Page
- Related Pages
- Modules
- Data Structures
- Files
- Examples

- File List

utility.h
1 /*
2 * This library is free software; you can redistribute it and/or
3 * modify it under the terms of the GNU Lesser General Public
4 * License as published by the Free Software Foundation; either
5 * version 2 of the License, or (at your option) any later version.
6 *
7 * This library is distributed in the hope that it will be useful,
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
10 * Lesser General Public License for more details.
11 *
12 * You should have received a copy of the GNU General Public License
13 * along with this program; if not, write to the Free Software
14 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
15 *
16 * Copyright (C) 2000 - 2005 Liam Girdwood
17 */
18
19 #ifndef _LN_UTILITY_H
20 #define _LN_UTILITY_H
21
22 #include <libnova/ln_types.h>
23
24 #ifdef __WIN32__
25 #include <time.h>
26 // cbrt replacement
27 #define cbrt(x) pow (x,1.0/3.0)
28 #endif
29
30 #ifdef __cplusplus
31 extern "C" {
32 #endif
33
34
42 const char LIBNOVA_EXPORT * ln_get_version (void);
43
53 double LIBNOVA_EXPORT ln_get_dec_location(char *s);
54
55
60 const char LIBNOVA_EXPORT * ln_get_humanr_location(double location);
61
62 /*
63 * \fn double ln_get_rect_distance (struct ln_rect_posn * a, struct ln_rect_posn * b)
64 * \ingroup misc
65 */
66 double LIBNOVA_EXPORT ln_get_rect_distance (struct ln_rect_posn * a, struct ln_rect_posn * b);
67
77 double LIBNOVA_EXPORT ln_rad_to_deg (double radians);
78
83 double LIBNOVA_EXPORT ln_deg_to_rad (double degrees);
84
89 double LIBNOVA_EXPORT ln_hms_to_deg (struct ln_hms * hms);
90
95 void LIBNOVA_EXPORT ln_deg_to_hms (double degrees, struct ln_hms * hms);
96
101 double LIBNOVA_EXPORT ln_hms_to_rad (struct ln_hms * hms);
102
107 void LIBNOVA_EXPORT ln_rad_to_hms (double radians, struct ln_hms * hms);
108
113 double LIBNOVA_EXPORT ln_dms_to_deg (struct ln_dms * dms);
114
119 void LIBNOVA_EXPORT ln_deg_to_dms (double degrees, struct ln_dms * dms);
120
125 double LIBNOVA_EXPORT ln_dms_to_rad (struct ln_dms * dms);
126
131 void LIBNOVA_EXPORT ln_rad_to_dms (double radians, struct ln_dms * dms);
132
137 void LIBNOVA_EXPORT ln_hequ_to_equ (struct lnh_equ_posn * hpos, struct ln_equ_posn * pos);
138
143 void LIBNOVA_EXPORT ln_equ_to_hequ (struct ln_equ_posn * pos, struct lnh_equ_posn * hpos);
144
149 void LIBNOVA_EXPORT ln_hhrz_to_hrz (struct lnh_hrz_posn * hpos, struct ln_hrz_posn * pos);
150
155 void LIBNOVA_EXPORT ln_hrz_to_hhrz (struct ln_hrz_posn * pos, struct lnh_hrz_posn * hpos);
156
161 const char LIBNOVA_EXPORT * ln_hrz_to_nswe (struct ln_hrz_posn * pos);
162
167 void LIBNOVA_EXPORT ln_hlnlat_to_lnlat (struct lnh_lnlat_posn * hpos, struct ln_lnlat_posn * pos);
168
173 void LIBNOVA_EXPORT ln_lnlat_to_hlnlat (struct ln_lnlat_posn * pos, struct lnh_lnlat_posn * hpos);
174
179 void LIBNOVA_EXPORT ln_add_secs_hms (struct ln_hms * hms, double seconds);
180
185 void LIBNOVA_EXPORT ln_add_hms (struct ln_hms * source, struct ln_hms * dest);
186
191 double LIBNOVA_EXPORT ln_range_degrees (double angle);
192
197 double LIBNOVA_EXPORT ln_range_radians (double angle);
198 double LIBNOVA_EXPORT ln_range_radians2 (double angle);
199
200 /*
201 * \fn double ln_get_light_time (double dist)
202 * \brief Convert units of AU into light days.
203 * \ingroup conversion
204 */
205 double LIBNOVA_EXPORT ln_get_light_time (double dist);
206
211 double LIBNOVA_EXPORT ln_interpolate3 (double n, double y1, double y2, double y3);
212
217 double LIBNOVA_EXPORT ln_interpolate5 (double n, double y1, double y2, double y3, double y4, double y5);
218
219 #ifdef __WIN32__
220
221 /* Catches calls to the POSIX gmtime_r and converts them to a related WIN32 version. */
222 struct tm *gmtime_r (time_t *t, struct tm *gmt);
223
224 /* Catches calls to the POSIX gettimeofday and converts them to a related WIN32 version. */
225 int gettimeofday(struct timeval *tp, struct timezone *tzp);
226
227 /* Catches calls to the POSIX strtok_r and converts them to a related WIN32 version. */
228 char *strtok_r(char *str, const char *sep, char **last);
229
230 #endif /* __WIN32__ */
231
232 /* C89 substitutions for C99 functions. */
233 #ifdef __C89_SUB__
234
235 /* Simple cube root */
236 double cbrt (double x);
237
238 #endif /* __C89_SUB__ */
239
240 #if defined(__WIN32__) || defined(sun) || defined(__C89_SUB__)
241
242 /* Not a Number function generator */
243 double nan (const char *code);
244
245 #endif /* defined(__WIN32__) || defined(sun) || defined(__C89_SUB__) */
246
247 #ifdef __cplusplus
248 };
249 #endif
250
251 #endif
ln_range_radians
double LIBNOVA_EXPORT ln_range_radians(double angle)
puts a large angle in the correct range 0 - 2PI radians
Definition: utility.c:249
ln_lnlat_to_hlnlat
void LIBNOVA_EXPORT ln_lnlat_to_hlnlat(struct ln_lnlat_posn *pos, struct lnh_lnlat_posn *hpos)
double long/lat position to human readable long/lat position
Definition: utility.c:393
ln_rad_to_deg
double LIBNOVA_EXPORT ln_rad_to_deg(double radians)
radians to degrees
Definition: utility.c:84
ln_rect_posn
Rectangular coordinates.
Definition: ln_types.h:237
ln_hlnlat_to_lnlat
void LIBNOVA_EXPORT ln_hlnlat_to_lnlat(struct lnh_lnlat_posn *hpos, struct ln_lnlat_posn *pos)
human readable long/lat position to double long/lat position
Definition: utility.c:383
ln_hrz_posn
Horizontal Coordinates.
Definition: ln_types.h:184
ln_hms_to_rad
double LIBNOVA_EXPORT ln_hms_to_rad(struct ln_hms *hms)
hours to radians.
Definition: utility.c:108
ln_dms
Degrees, minutes and seconds.
Definition: ln_types.h:103
ln_hhrz_to_hrz
void LIBNOVA_EXPORT ln_hhrz_to_hrz(struct lnh_hrz_posn *hpos, struct ln_hrz_posn *pos)
human readable horizontal position to double horizontal position
Definition: utility.c:352
ln_hms
Hours, minutes and seconds.
Definition: ln_types.h:117
ln_deg_to_dms
void LIBNOVA_EXPORT ln_deg_to_dms(double degrees, struct ln_dms *dms)
degrees to dms
Definition: utility.c:194
ln_hequ_to_equ
void LIBNOVA_EXPORT ln_hequ_to_equ(struct lnh_equ_posn *hpos, struct ln_equ_posn *pos)
human readable equatorial position to double equatorial position
Definition: utility.c:332
ln_interpolate3
double LIBNOVA_EXPORT ln_interpolate3(double n, double y1, double y2, double y3)
Calculate an intermediate value of the 3 arguments.
Definition: utility.c:618
ln_equ_posn
Equatorial Coordinates.
Definition: ln_types.h:170
ln_hrz_to_nswe
const char LIBNOVA_EXPORT * ln_hrz_to_nswe(struct ln_hrz_posn *pos)
returns direction of given azimuth - like N,S,W,E,NSW,...
Definition: utility.c:372
ln_equ_to_hequ
void LIBNOVA_EXPORT ln_equ_to_hequ(struct ln_equ_posn *pos, struct lnh_equ_posn *hpos)
human double equatorial position to human readable equatorial position
Definition: utility.c:342
ln_range_degrees
double LIBNOVA_EXPORT ln_range_degrees(double angle)
puts a large angle in the correct range 0 - 360 degrees
Definition: utility.c:234
ln_lnlat_posn
Ecliptical (or celestial) Longitude and Latitude.
Definition: ln_types.h:200
ln_get_humanr_location
const char LIBNOVA_EXPORT * ln_get_humanr_location(double location)
Obtains a human readable location in the form: ddºmm&#39;ss.ss".
Definition: utility.c:593
ln_add_secs_hms
void LIBNOVA_EXPORT ln_add_secs_hms(struct ln_hms *hms, double seconds)
add seconds to hms
Definition: utility.c:280
ln_rad_to_dms
void LIBNOVA_EXPORT ln_rad_to_dms(double radians, struct ln_dms *dms)
radians to dms
Definition: utility.c:225
lnh_equ_posn
Right Ascension and Declination.
Definition: ln_types.h:130
ln_get_version
const char LIBNOVA_EXPORT * ln_get_version(void)
Library Version Number.
Definition: utility.c:77
ln_deg_to_hms
void LIBNOVA_EXPORT ln_deg_to_hms(double degrees, struct ln_hms *hms)
degrees to hours
Definition: utility.c:121
ln_interpolate5
double LIBNOVA_EXPORT ln_interpolate5(double n, double y1, double y2, double y3, double y4, double y5)
Calculate an intermediate value of the 5 arguments.
Definition: utility.c:646
ln_dms_to_rad
double LIBNOVA_EXPORT ln_dms_to_rad(struct ln_dms *dms)
dms to radians
Definition: utility.c:178
lnh_lnlat_posn
Ecliptical (or celestial) Latitude and Longitude.
Definition: ln_types.h:155
lnh_hrz_posn
Azimuth and Altitude.
Definition: ln_types.h:142
ln_hms_to_deg
double LIBNOVA_EXPORT ln_hms_to_deg(struct ln_hms *hms)
hours to degrees
Definition: utility.c:96
ln_get_dec_location
double LIBNOVA_EXPORT ln_get_dec_location(char *s)
Obtains Latitude, Longitude, RA or Declination from a string.
Definition: utility.c:510
ln_dms_to_deg
double LIBNOVA_EXPORT ln_dms_to_deg(struct ln_dms *dms)
dms to degrees
Definition: utility.c:162
ln_deg_to_rad
double LIBNOVA_EXPORT ln_deg_to_rad(double degrees)
degrees to radians
Definition: utility.c:90
ln_hrz_to_hhrz
void LIBNOVA_EXPORT ln_hrz_to_hhrz(struct ln_hrz_posn *pos, struct lnh_hrz_posn *hpos)
double horizontal position to human readable horizontal position
Definition: utility.c:362
ln_add_hms
void LIBNOVA_EXPORT ln_add_hms(struct ln_hms *source, struct ln_hms *dest)
add hms to hms
Definition: utility.c:297