libnova  v 0.16.0
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,
67  struct ln_rect_posn *b);
68 
78 double LIBNOVA_EXPORT ln_rad_to_deg(double radians);
79 
84 double LIBNOVA_EXPORT ln_deg_to_rad(double degrees);
85 
90 double LIBNOVA_EXPORT ln_hms_to_deg(struct ln_hms *hms);
91 
96 void LIBNOVA_EXPORT ln_deg_to_hms(double degrees, struct ln_hms *hms);
97 
102 double LIBNOVA_EXPORT ln_hms_to_rad(struct ln_hms *hms);
103 
108 void LIBNOVA_EXPORT ln_rad_to_hms(double radians, struct ln_hms *hms);
109 
114 double LIBNOVA_EXPORT ln_dms_to_deg(struct ln_dms *dms);
115 
120 void LIBNOVA_EXPORT ln_deg_to_dms(double degrees, struct ln_dms *dms);
121 
126 double LIBNOVA_EXPORT ln_dms_to_rad(struct ln_dms *dms);
127 
132 void LIBNOVA_EXPORT ln_rad_to_dms(double radians, struct ln_dms *dms);
133 
138 void LIBNOVA_EXPORT ln_hequ_to_equ(struct lnh_equ_posn *hpos,
139  struct ln_equ_posn *pos);
140 
145 void LIBNOVA_EXPORT ln_equ_to_hequ(struct ln_equ_posn *pos,
146  struct lnh_equ_posn *hpos);
147 
152 void LIBNOVA_EXPORT ln_hhrz_to_hrz(struct lnh_hrz_posn *hpos,
153  struct ln_hrz_posn *pos);
154 
159 void LIBNOVA_EXPORT ln_hrz_to_hhrz(struct ln_hrz_posn *pos,
160  struct lnh_hrz_posn *hpos);
161 
166 const char LIBNOVA_EXPORT * ln_hrz_to_nswe(struct ln_hrz_posn *pos);
167 
172 void LIBNOVA_EXPORT ln_hlnlat_to_lnlat(struct lnh_lnlat_posn *hpos,
173  struct ln_lnlat_posn *pos);
174 
179 void LIBNOVA_EXPORT ln_lnlat_to_hlnlat(struct ln_lnlat_posn *pos,
180  struct lnh_lnlat_posn *hpos);
181 
186 void LIBNOVA_EXPORT ln_add_secs_hms(struct ln_hms *hms, double seconds);
187 
192 void LIBNOVA_EXPORT ln_add_hms(struct ln_hms *source, struct ln_hms *dest);
193 
198 double LIBNOVA_EXPORT ln_range_degrees(double angle);
199 
204 double LIBNOVA_EXPORT ln_range_radians(double angle);
205 double LIBNOVA_EXPORT ln_range_radians2(double angle);
206 
207 /*
208 * \fn double ln_get_light_time(double dist)
209 * \brief Convert units of AU into light days.
210 * \ingroup conversion
211 */
212 double LIBNOVA_EXPORT ln_get_light_time(double dist);
213 
218 double LIBNOVA_EXPORT ln_interpolate3(double n, double y1, double y2, double y3);
219 
224 double LIBNOVA_EXPORT ln_interpolate5(double n, double y1, double y2, double y3,
225  double y4, double y5);
226 
227 #ifdef __WIN32__
228 
229 /* Catches calls to the POSIX gmtime_r and converts them to a related WIN32 version. */
230 struct tm *gmtime_r (time_t *t, struct tm *gmt);
231 
232 #ifndef __MINGW__
233 /* Catches calls to the POSIX gettimeofday and converts them to a related WIN32 version. */
234 int gettimeofday(struct timeval *tp, struct timezone *tzp);
235 #endif // !__MINGW__
236 
237 /* Catches calls to the POSIX strtok_r and converts them to a related WIN32 version. */
238 char *strtok_r(char *str, const char *sep, char **last);
239 
240 #endif /* __WIN32__ */
241 
242 /* C89 substitutions for C99 functions. */
243 #ifdef __C89_SUB__
244 
245 /* Simple cube root */
246 double cbrt(double x);
247 
248 #endif /* __C89_SUB__ */
249 
250 #if defined(__WIN32__) || defined(sun) || defined(__C89_SUB__)
251 
252 /* Not a Number function generator */
253 double nan(const char *code);
254 
255 #endif /* defined(__WIN32__) || defined(sun) || defined(__C89_SUB__) */
256 
257 #ifdef __cplusplus
258 };
259 #endif
260 
261 #endif
double LIBNOVA_EXPORT ln_range_radians(double angle)
puts a large angle in the correct range 0 - 2PI radians
Definition: utility.c:249
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:395
double LIBNOVA_EXPORT ln_rad_to_deg(double radians)
radians to degrees
Definition: utility.c:84
Rectangular coordinates.
Definition: ln_types.h:239
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:385
Horizontal Coordinates.
Definition: ln_types.h:189
double LIBNOVA_EXPORT ln_hms_to_rad(struct ln_hms *hms)
hours to radians.
Definition: utility.c:108
Degrees, minutes and seconds.
Definition: ln_types.h:114
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
Hours, minutes and seconds.
Definition: ln_types.h:127
void LIBNOVA_EXPORT ln_deg_to_dms(double degrees, struct ln_dms *dms)
degrees to dms
Definition: utility.c:194
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
double LIBNOVA_EXPORT ln_interpolate3(double n, double y1, double y2, double y3)
Calculate an intermediate value of the 3 arguments.
Definition: utility.c:623
Equatorial Coordinates.
Definition: ln_types.h:176
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
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
double LIBNOVA_EXPORT ln_range_degrees(double angle)
puts a large angle in the correct range 0 - 360 degrees
Definition: utility.c:234
Ecliptical (or celestial) Longitude and Latitude.
Definition: ln_types.h:204
const char LIBNOVA_EXPORT * ln_get_humanr_location(double location)
Obtains a human readable location in the form: ddÂșmm'ss.ss".
Definition: utility.c:596
void LIBNOVA_EXPORT ln_add_secs_hms(struct ln_hms *hms, double seconds)
add seconds to hms
Definition: utility.c:280
void LIBNOVA_EXPORT ln_rad_to_dms(double radians, struct ln_dms *dms)
radians to dms
Definition: utility.c:225
Right Ascension and Declination.
Definition: ln_types.h:139
const char LIBNOVA_EXPORT * ln_get_version(void)
Library Version Number.
Definition: utility.c:77
void LIBNOVA_EXPORT ln_deg_to_hms(double degrees, struct ln_hms *hms)
degrees to hours
Definition: utility.c:121
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:651
double LIBNOVA_EXPORT ln_dms_to_rad(struct ln_dms *dms)
dms to radians
Definition: utility.c:178
Ecliptical (or celestial) Latitude and Longitude.
Definition: ln_types.h:162
Azimuth and Altitude.
Definition: ln_types.h:150
double LIBNOVA_EXPORT ln_hms_to_deg(struct ln_hms *hms)
hours to degrees
Definition: utility.c:96
double LIBNOVA_EXPORT ln_get_dec_location(char *s)
Obtains Latitude, Longitude, RA or Declination from a string.
Definition: utility.c:512
double LIBNOVA_EXPORT ln_dms_to_deg(struct ln_dms *dms)
dms to degrees
Definition: utility.c:162
double LIBNOVA_EXPORT ln_deg_to_rad(double degrees)
degrees to radians
Definition: utility.c:90
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
void LIBNOVA_EXPORT ln_add_hms(struct ln_hms *source, struct ln_hms *dest)
add hms to hms
Definition: utility.c:297