Astro-Nova
view release on metacpan or search on metacpan
libnova-0.15.0/src/utility.c view on Meta::CPAN
* Copyright (C) 1999, 2000 Juan Carlos Remis
* Copyright (C) 2002 Liam Girdwood
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
*/
/*------------------------------------------------------------------------*/
/* */
/* Module: */
/* */
/* Description: */
/* */
/* */
/* "CAVEAT UTILITOR". */
/* */
/* "Non sunt multiplicanda entia praeter necessitatem" */
/* Guillermo de Occam. */
/*------------------------------------------------------------------------*/
/* Revision History: */
/* */
/*------------------------------------------------------------------------*/
/**/
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
#include <string.h>
#include <math.h>
#include <ctype.h>
#include <libnova/libnova.h>
#ifndef __APPLE__
#include <malloc.h>
#endif
/* Include unistd.h only if not on a Win32 platform */
/* Include Win32 Headers sys/types.h and sys/timeb.h if on Win32 */
#ifndef __WIN32__
#include <unistd.h>
#else
#include <sys/types.h>
#include <sys/timeb.h>
#endif
/* Conversion factors between degrees and radians */
#define D2R (1.7453292519943295769e-2) /* deg->radian */
#define R2D (5.7295779513082320877e1) /* radian->deg */
#define R2S (2.0626480624709635516e5) /* arc seconds per radian */
#define S2R (4.8481368110953599359e-6) /* radians per arc second */
#define DM_PI (2*M_PI)
#define RADIAN (180.0 / M_PI)
static const char ln_version[] = LIBNOVA_VERSION;
/*! \fn char * ln_get_version (void)
* \return Null terminated version string.
*
* Return the libnova library version number string
* e.g. "0.4.0"
*/
const char * ln_get_version (void)
{
return ln_version;
}
/* convert radians to degrees */
double ln_rad_to_deg (double radians)
{
return (radians * R2D);
}
/* convert degrees to radians */
double ln_deg_to_rad (double degrees)
{
return (degrees * D2R);
}
/* convert hours:mins:secs to degrees */
double ln_hms_to_deg (struct ln_hms *hms)
{
double degrees;
degrees = ((double)hms->hours / 24) * 360;
degrees += ((double)hms->minutes / 60) * 15;
degrees += ((double)hms->seconds / 60) * 0.25;
return degrees;
}
/* convert hours:mins:secs to radians */
double ln_hms_to_rad (struct ln_hms *hms)
{
double radians;
radians = ((double)hms->hours / 24.0) * 2.0 * M_PI;
radians += ((double)hms->minutes / 60.0) * 2.0 * M_PI / 24.0;
radians += ((double)hms->seconds / 60.0) * 2.0 * M_PI / 1440.0;
return radians;
}
/* convert degrees to hh:mm:ss */
void ln_deg_to_hms (double degrees, struct ln_hms * hms)
{
double dtemp;
( run in 2.932 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )