808 lines
31 KiB
C
808 lines
31 KiB
C
|
|
/************************************************************
|
|
$Header: /home/dieter/sweph/RCS/swephexp.h,v 1.75 2009/04/08 07:19:08 dieter Exp $
|
|
SWISSEPH: exported definitions and constants
|
|
|
|
This file represents the standard application interface (API)
|
|
to the Swiss Ephemeris.
|
|
|
|
A C programmer needs only to include this file, and link his code
|
|
with the SwissEph library.
|
|
|
|
The function calls are documented in the Programmer's documentation,
|
|
which is online in HTML format.
|
|
|
|
Structure of this file:
|
|
Public API definitions
|
|
Internal developer's definitions
|
|
Public API functions.
|
|
|
|
Authors: Dieter Koch and Alois Treindl, Astrodienst Zurich
|
|
|
|
************************************************************/
|
|
|
|
/* Copyright (C) 1997 - 2008 Astrodienst AG, Switzerland. All rights reserved.
|
|
|
|
License conditions
|
|
------------------
|
|
|
|
This file is part of Swiss Ephemeris.
|
|
|
|
Swiss Ephemeris is distributed with NO WARRANTY OF ANY KIND. No author
|
|
or distributor accepts any responsibility for the consequences of using it,
|
|
or for whether it serves any particular purpose or works at all, unless he
|
|
or she says so in writing.
|
|
|
|
Swiss Ephemeris is made available by its authors under a dual licensing
|
|
system. The software developer, who uses any part of Swiss Ephemeris
|
|
in his or her software, must choose between one of the two license models,
|
|
which are
|
|
a) GNU public license version 2 or later
|
|
b) Swiss Ephemeris Professional License
|
|
|
|
The choice must be made before the software developer distributes software
|
|
containing parts of Swiss Ephemeris to others, and before any public
|
|
service using the developed software is activated.
|
|
|
|
If the developer choses the GNU GPL software license, he or she must fulfill
|
|
the conditions of that license, which includes the obligation to place his
|
|
or her whole software project under the GNU GPL or a compatible license.
|
|
See http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
|
|
|
If the developer choses the Swiss Ephemeris Professional license,
|
|
he must follow the instructions as found in http://www.astro.com/swisseph/
|
|
and purchase the Swiss Ephemeris Professional Edition from Astrodienst
|
|
and sign the corresponding license contract.
|
|
|
|
The License grants you the right to use, copy, modify and redistribute
|
|
Swiss Ephemeris, but only under certain conditions described in the License.
|
|
Among other things, the License requires that the copyright notices and
|
|
this notice be preserved on all copies.
|
|
|
|
Authors of the Swiss Ephemeris: Dieter Koch and Alois Treindl
|
|
|
|
The authors of Swiss Ephemeris have no control or influence over any of
|
|
the derived works, i.e. over software or services created by other
|
|
programmers which use Swiss Ephemeris functions.
|
|
|
|
The names of the authors or of the copyright holder (Astrodienst) must not
|
|
be used for promoting any software, product or service which uses or contains
|
|
the Swiss Ephemeris. This copyright notice is the ONLY place where the
|
|
names of the authors can legally appear, except in cases where they have
|
|
given special permission in writing.
|
|
|
|
The trademarks 'Swiss Ephemeris' and 'Swiss Ephemeris inside' may be used
|
|
for promoting such software, products or services.
|
|
*/
|
|
|
|
#ifdef __cplusplus
|
|
extern "C"
|
|
{
|
|
#endif
|
|
|
|
#ifndef _SWEPHEXP_INCLUDED /* allow multiple #includes of swephexp.h */
|
|
#define _SWEPHEXP_INCLUDED
|
|
|
|
#include "sweodef.h"
|
|
|
|
/***********************************************************
|
|
* definitions for use also by non-C programmers
|
|
***********************************************************/
|
|
|
|
/* values for gregflag in swe_julday() and swe_revjul() */
|
|
#define SE_JUL_CAL 0
|
|
#define SE_GREG_CAL 1
|
|
|
|
/*
|
|
* planet numbers for the ipl parameter in swe_calc()
|
|
*/
|
|
#define SE_ECL_NUT -1
|
|
|
|
#define SE_SUN 0
|
|
#define SE_MOON 1
|
|
#define SE_MERCURY 2
|
|
#define SE_VENUS 3
|
|
#define SE_MARS 4
|
|
#define SE_JUPITER 5
|
|
#define SE_SATURN 6
|
|
#define SE_URANUS 7
|
|
#define SE_NEPTUNE 8
|
|
#define SE_PLUTO 9
|
|
#define SE_MEAN_NODE 10
|
|
#define SE_TRUE_NODE 11
|
|
#define SE_MEAN_APOG 12
|
|
#define SE_OSCU_APOG 13
|
|
#define SE_EARTH 14
|
|
#define SE_CHIRON 15
|
|
#define SE_PHOLUS 16
|
|
#define SE_CERES 17
|
|
#define SE_PALLAS 18
|
|
#define SE_JUNO 19
|
|
#define SE_VESTA 20
|
|
#define SE_INTP_APOG 21
|
|
#define SE_INTP_PERG 22
|
|
|
|
#define SE_NPLANETS 23
|
|
|
|
#define SE_AST_OFFSET 10000
|
|
#define SE_VARUNA (SE_AST_OFFSET + 20000)
|
|
|
|
#define SE_FICT_OFFSET 40
|
|
#define SE_FICT_OFFSET_1 39
|
|
#define SE_FICT_MAX 999
|
|
#define SE_NFICT_ELEM 15
|
|
|
|
#define SE_COMET_OFFSET 1000
|
|
|
|
#define SE_NALL_NAT_POINTS (SE_NPLANETS + SE_NFICT_ELEM)
|
|
|
|
/* Hamburger or Uranian "planets" */
|
|
#define SE_CUPIDO 40
|
|
#define SE_HADES 41
|
|
#define SE_ZEUS 42
|
|
#define SE_KRONOS 43
|
|
#define SE_APOLLON 44
|
|
#define SE_ADMETOS 45
|
|
#define SE_VULKANUS 46
|
|
#define SE_POSEIDON 47
|
|
|
|
/* other fictitious bodies */
|
|
#define SE_ISIS 48
|
|
#define SE_NIBIRU 49
|
|
#define SE_HARRINGTON 50
|
|
#define SE_NEPTUNE_LEVERRIER 51
|
|
#define SE_NEPTUNE_ADAMS 52
|
|
#define SE_PLUTO_LOWELL 53
|
|
#define SE_PLUTO_PICKERING 54
|
|
#define SE_VULCAN 55
|
|
#define SE_WHITE_MOON 56
|
|
#define SE_PROSERPINA 57
|
|
#define SE_WALDEMATH 58
|
|
|
|
#define SE_FIXSTAR -10
|
|
|
|
#define SE_ASC 0
|
|
#define SE_MC 1
|
|
#define SE_ARMC 2
|
|
#define SE_VERTEX 3
|
|
#define SE_EQUASC 4 /* "equatorial ascendant" */
|
|
#define SE_COASC1 5 /* "co-ascendant" (W. Koch) */
|
|
#define SE_COASC2 6 /* "co-ascendant" (M. Munkasey) */
|
|
#define SE_POLASC 7 /* "polar ascendant" (M. Munkasey) */
|
|
#define SE_NASCMC 8
|
|
|
|
/*
|
|
* flag bits for parameter iflag in function swe_calc()
|
|
* The flag bits are defined in such a way that iflag = 0 delivers what one
|
|
* usually wants:
|
|
* - the default ephemeris (SWISS EPHEMERIS) is used,
|
|
* - apparent geocentric positions referring to the true equinox of date
|
|
* are returned.
|
|
* If not only coordinates, but also speed values are required, use
|
|
* flag = SEFLG_SPEED.
|
|
*
|
|
* The 'L' behind the number indicates that 32-bit integers (Long) are used.
|
|
*/
|
|
#define SEFLG_JPLEPH 1 /* use JPL ephemeris */
|
|
#define SEFLG_SWIEPH 2 /* use SWISSEPH ephemeris */
|
|
#define SEFLG_MOSEPH 4 /* use Moshier ephemeris */
|
|
|
|
#define SEFLG_HELCTR 8 /* return heliocentric position */
|
|
#define SEFLG_TRUEPOS 16 /* return true positions, not apparent */
|
|
#define SEFLG_J2000 32 /* no precession, i.e. give J2000 equinox */
|
|
#define SEFLG_NONUT 64 /* no nutation, i.e. mean equinox of date */
|
|
#define SEFLG_SPEED3 128 /* speed from 3 positions (do not use it,
|
|
* SEFLG_SPEED is faster and more precise.) */
|
|
#define SEFLG_SPEED 256 /* high precision speed */
|
|
#define SEFLG_NOGDEFL 512 /* turn off gravitational deflection */
|
|
#define SEFLG_NOABERR 1024 /* turn off 'annual' aberration of light */
|
|
#define SEFLG_EQUATORIAL (2*1024) /* equatorial positions are wanted */
|
|
#define SEFLG_XYZ (4*1024) /* cartesian, not polar, coordinates */
|
|
#define SEFLG_RADIANS (8*1024) /* coordinates in radians, not degrees */
|
|
#define SEFLG_BARYCTR (16*1024) /* barycentric positions */
|
|
#define SEFLG_TOPOCTR (32*1024) /* topocentric positions */
|
|
#define SEFLG_SIDEREAL (64*1024) /* sidereal positions */
|
|
#define SEFLG_ICRS (128*1024) /* ICRS (DE406 reference frame) */
|
|
|
|
#define SE_SIDBITS 256
|
|
|
|
/* for projection onto ecliptic of t0 */
|
|
#define SE_SIDBIT_ECL_T0 256
|
|
|
|
/* for projection onto solar system plane */
|
|
#define SE_SIDBIT_SSY_PLANE 512
|
|
|
|
/* sidereal modes (ayanamsas) */
|
|
#define SE_SIDM_FAGAN_BRADLEY 0
|
|
#define SE_SIDM_LAHIRI 1
|
|
#define SE_SIDM_DELUCE 2
|
|
#define SE_SIDM_RAMAN 3
|
|
#define SE_SIDM_USHASHASHI 4
|
|
#define SE_SIDM_KRISHNAMURTI 5
|
|
#define SE_SIDM_DJWHAL_KHUL 6
|
|
#define SE_SIDM_YUKTESHWAR 7
|
|
#define SE_SIDM_JN_BHASIN 8
|
|
#define SE_SIDM_BABYL_KUGLER1 9
|
|
#define SE_SIDM_BABYL_KUGLER2 10
|
|
#define SE_SIDM_BABYL_KUGLER3 11
|
|
#define SE_SIDM_BABYL_HUBER 12
|
|
#define SE_SIDM_BABYL_ETPSC 13
|
|
#define SE_SIDM_ALDEBARAN_15TAU 14
|
|
#define SE_SIDM_HIPPARCHOS 15
|
|
#define SE_SIDM_SASSANIAN 16
|
|
#define SE_SIDM_GALCENT_0SAG 17
|
|
#define SE_SIDM_J2000 18
|
|
#define SE_SIDM_J1900 19
|
|
#define SE_SIDM_B1950 20
|
|
#define SE_SIDM_SURYASIDDHANTA 21
|
|
#define SE_SIDM_SURYASIDDHANTA_MSUN 22
|
|
#define SE_SIDM_ARYABHATA 23
|
|
#define SE_SIDM_ARYABHATA_MSUN 24
|
|
#define SE_SIDM_USER 255
|
|
|
|
#define SE_NSIDM_PREDEF 27
|
|
|
|
/* used for swe_nod_aps(): */
|
|
#define SE_NODBIT_MEAN 1 /* mean nodes/apsides */
|
|
#define SE_NODBIT_OSCU 2 /* osculating nodes/apsides */
|
|
#define SE_NODBIT_OSCU_BAR 4 /* same, but motion about solar system barycenter is considered */
|
|
#define SE_NODBIT_FOPOINT 256 /* focal point of orbit instead of aphelion */
|
|
|
|
/* default ephemeris used when no ephemeris flagbit is set */
|
|
#define SEFLG_DEFAULTEPH SEFLG_SWIEPH
|
|
|
|
#define SE_MAX_STNAME 256 /* maximum size of fixstar name;
|
|
* the parameter star in swe_fixstar
|
|
* must allow twice this space for
|
|
* the returned star name.
|
|
*/
|
|
|
|
/* defines for eclipse computations */
|
|
|
|
#define SE_ECL_CENTRAL 1
|
|
#define SE_ECL_NONCENTRAL 2
|
|
#define SE_ECL_TOTAL 4
|
|
#define SE_ECL_ANNULAR 8
|
|
#define SE_ECL_PARTIAL 16
|
|
#define SE_ECL_ANNULAR_TOTAL 32
|
|
#define SE_ECL_PENUMBRAL 64
|
|
#define SE_ECL_ALLTYPES_SOLAR (SE_ECL_CENTRAL|SE_ECL_NONCENTRAL|SE_ECL_TOTAL|SE_ECL_ANNULAR|SE_ECL_PARTIAL|SE_ECL_ANNULAR_TOTAL)
|
|
#define SE_ECL_ALLTYPES_LUNAR (SE_ECL_TOTAL|SE_ECL_PARTIAL|SE_ECL_PENUMBRAL)
|
|
#define SE_ECL_VISIBLE 128
|
|
#define SE_ECL_MAX_VISIBLE 256
|
|
#define SE_ECL_1ST_VISIBLE 512
|
|
#define SE_ECL_2ND_VISIBLE 1024
|
|
#define SE_ECL_3RD_VISIBLE 2048
|
|
#define SE_ECL_4TH_VISIBLE 4096
|
|
#define SE_ECL_ONE_TRY (32*1024)
|
|
/* check if the next conjunction of the moon with
|
|
* a planet is an occultation; don't search further */
|
|
|
|
/* for swe_rise_transit() */
|
|
#define SE_CALC_RISE 1
|
|
#define SE_CALC_SET 2
|
|
#define SE_CALC_MTRANSIT 4
|
|
#define SE_CALC_ITRANSIT 8
|
|
#define SE_BIT_DISC_CENTER 256 /* to be or'ed to SE_CALC_RISE/SET,
|
|
* if rise or set of disc center is
|
|
* required */
|
|
#define SE_BIT_DISC_BOTTOM 8192 /* to be or'ed to SE_CALC_RISE/SET,
|
|
* if rise or set of lower limb of
|
|
* disc is requried */
|
|
#define SE_BIT_NO_REFRACTION 512 /* to be or'ed to SE_CALC_RISE/SET,
|
|
* if refraction is to be ignored */
|
|
#define SE_BIT_CIVIL_TWILIGHT 1024 /* to be or'ed to SE_CALC_RISE/SET */
|
|
#define SE_BIT_NAUTIC_TWILIGHT 2048 /* to be or'ed to SE_CALC_RISE/SET */
|
|
#define SE_BIT_ASTRO_TWILIGHT 4096 /* to be or'ed to SE_CALC_RISE/SET */
|
|
#define SE_BIT_FIXED_DISC_SIZE (16*1024) /* or'ed to SE_CALC_RISE/SET:
|
|
* neglect the effect of distance on
|
|
* disc size */
|
|
|
|
|
|
/* for swe_azalt() and swe_azalt_rev() */
|
|
#define SE_ECL2HOR 0
|
|
#define SE_EQU2HOR 1
|
|
#define SE_HOR2ECL 0
|
|
#define SE_HOR2EQU 1
|
|
|
|
/* for swe_refrac() */
|
|
#define SE_TRUE_TO_APP 0
|
|
#define SE_APP_TO_TRUE 1
|
|
|
|
/*
|
|
* only used for experimenting with various JPL ephemeris files
|
|
* which are available at Astrodienst's internal network
|
|
*/
|
|
#define SE_DE_NUMBER 406
|
|
#define SE_FNAME_DE200 "de200.eph"
|
|
#define SE_FNAME_DE403 "de403.eph"
|
|
#define SE_FNAME_DE404 "de404.eph"
|
|
#define SE_FNAME_DE405 "de405.eph"
|
|
#define SE_FNAME_DE406 "de406.eph"
|
|
#define SE_FNAME_DFT SE_FNAME_DE406
|
|
#define SE_STARFILE_OLD "fixstars.cat"
|
|
#define SE_STARFILE "sefstars.txt"
|
|
#define SE_ASTNAMFILE "seasnam.txt"
|
|
#define SE_FICTFILE "seorbel.txt"
|
|
|
|
/*
|
|
* ephemeris path
|
|
* this defines where ephemeris files are expected if the function
|
|
* swe_set_ephe_path() is not called by the application.
|
|
* Normally, every application should make this call to define its
|
|
* own place for the ephemeris files.
|
|
*/
|
|
|
|
#ifndef SE_EPHE_PATH
|
|
#if MSDOS
|
|
#ifdef PAIR_SWEPH
|
|
#define SE_EPHE_PATH "\\pair\\ephe\\"
|
|
#else
|
|
#define SE_EPHE_PATH "\\sweph\\ephe\\"
|
|
#endif
|
|
#else
|
|
#ifdef MACOS
|
|
#define SE_EPHE_PATH ":ephe:"
|
|
#else
|
|
#define SE_EPHE_PATH ".:/users/ephe2/:/users/ephe/"
|
|
/* At Astrodienst, we maintain two ephemeris areas for
|
|
* the thousands of asteroid files:
|
|
* the short files in /users/ephe/ast*,
|
|
* the long file in /users/ephe2/ast*. */
|
|
#endif
|
|
#endif
|
|
#endif /* SE_EPHE_PATH */
|
|
|
|
/* defines for function swe_split_deg() (in swephlib.c) */
|
|
#define SE_SPLIT_DEG_ROUND_SEC 1
|
|
#define SE_SPLIT_DEG_ROUND_MIN 2
|
|
#define SE_SPLIT_DEG_ROUND_DEG 4
|
|
#define SE_SPLIT_DEG_ZODIACAL 8
|
|
#define SE_SPLIT_DEG_KEEP_SIGN 16 /* don't round to next sign,
|
|
* e.g. 29.9999999 will be rounded
|
|
* to 29d59'59" (or 29d59' or 29d) */
|
|
#define SE_SPLIT_DEG_KEEP_DEG 32 /* don't round to next degree
|
|
* e.g. 13.9999999 will be rounded
|
|
* to 13d59'59" (or 13d59' or 13d) */
|
|
|
|
/* for heliacal functions */
|
|
#define SE_HELIACAL_RISING 1
|
|
#define SE_HELIACAL_SETTING 2
|
|
#define SE_MORNING_FIRST SE_HELIACAL_RISING
|
|
#define SE_EVENING_LAST SE_HELIACAL_SETTING
|
|
#define SE_EVENING_FIRST 3
|
|
#define SE_MORNING_LAST 4
|
|
#define SE_ACRONYCHAL_RISING 5 /* still not implemented */
|
|
#define SE_ACRONYCHAL_SETTING 6 /* still not implemented */
|
|
#define SE_COSMICAL_SETTING SE_ACRONYCHAL_SETTING
|
|
|
|
#define SE_HELFLAG_LONG_SEARCH 128
|
|
#define SE_HELFLAG_HIGH_PRECISION 256
|
|
#define SE_HELFLAG_OPTICAL_PARAMS 512
|
|
#define SE_HELFLAG_NO_DETAILS 1024
|
|
#define SE_HELFLAG_SEARCH_1_PERIOD (1 << 11) /* 2048 */
|
|
#define SE_HELFLAG_VISLIM_DARK (1 << 12) /* 4096 */
|
|
#define SE_HELFLAG_VISLIM_NOMOON (1 << 13) /* 8192 */
|
|
#define SE_HELFLAG_VISLIM_PHOTOPIC (1 << 14) /* 16384 */
|
|
#define SE_HELFLAG_AVKIND_VR (1 << 15) /* 32768 */
|
|
#define SE_HELFLAG_AVKIND_PTO (1 << 16)
|
|
#define SE_HELFLAG_AVKIND_MIN7 (1 << 17)
|
|
#define SE_HELFLAG_AVKIND_MIN9 (1 << 18)
|
|
#define SE_HELFLAG_AVKIND (SE_HELFLAG_AVKIND_VR|SE_HELFLAG_AVKIND_PTO|SE_HELFLAG_AVKIND_MIN7|SE_HELFLAG_AVKIND_MIN9)
|
|
#define TJD_INVALID 99999999.0
|
|
#define SIMULATE_VICTORVB 1
|
|
|
|
#define SE_HELIACAL_LONG_SEARCH 128
|
|
#define SE_HELIACAL_HIGH_PRECISION 256
|
|
#define SE_HELIACAL_OPTICAL_PARAMS 512
|
|
#define SE_HELIACAL_NO_DETAILS 1024
|
|
#define SE_HELIACAL_SEARCH_1_PERIOD (1 << 11) /* 2048 */
|
|
#define SE_HELIACAL_VISLIM_DARK (1 << 12) /* 4096 */
|
|
#define SE_HELIACAL_VISLIM_NOMOON (1 << 13) /* 8192 */
|
|
#define SE_HELIACAL_VISLIM_PHOTOPIC (1 << 14) /* 16384 */
|
|
#define SE_HELIACAL_AVKIND_VR (1 << 15) /* 32768 */
|
|
#define SE_HELIACAL_AVKIND_PTO (1 << 16)
|
|
#define SE_HELIACAL_AVKIND_MIN7 (1 << 17)
|
|
#define SE_HELIACAL_AVKIND_MIN9 (1 << 18)
|
|
#define SE_HELIACAL_AVKIND (SE_HELFLAG_AVKIND_VR|SE_HELFLAG_AVKIND_PTO|SE_HELFLAG_AVKIND_MIN7|SE_HELFLAG_AVKIND_MIN9)
|
|
|
|
#define SE_PHOTOPIC_FLAG 0
|
|
#define SE_SCOTOPIC_FLAG 1
|
|
#define SE_MIXEDOPIC_FLAG 2
|
|
|
|
/*
|
|
* by compiling with -DPAIR_SWEPH in the compiler options it
|
|
* is possible to create a more compact version of SwissEph which
|
|
* contains no code for the JPL ephemeris file and for the builtin
|
|
* Moshier ephemeris.
|
|
* This is quite useful for MSDOS real mode applications which need to
|
|
* run within 640 kb.
|
|
* The option is called PAIR_SWEPH because it was introduced for
|
|
* Astrodienst's partner software PAIR.
|
|
*/
|
|
#ifdef PAIR_SWEPH
|
|
#define NO_JPL
|
|
#endif
|
|
|
|
/**************************************************************
|
|
* here follow some ugly definitions which are only required
|
|
* if SwissEphemeris is compiled on Windows, either to use a DLL
|
|
* or to create a DLL.
|
|
* Unix users can savely ignore his section
|
|
* and skip to the export function decarations below.
|
|
************************************************************/
|
|
#if defined(MAKE_DLL) || defined(USE_DLL) || defined(_WINDOWS)
|
|
#include <windows.h>
|
|
#endif
|
|
|
|
#ifdef USE_DLL
|
|
#include "swedll.h"
|
|
#endif
|
|
|
|
#if defined(DOS32) || !MSDOS || defined(WIN32)
|
|
/* use compiler switch to define DOS32 */
|
|
#ifndef FAR
|
|
#define FAR
|
|
#endif
|
|
#define MALLOC malloc
|
|
#define CALLOC calloc
|
|
#define FREE free
|
|
#else
|
|
#ifndef FAR
|
|
#define FAR far
|
|
#endif
|
|
#ifdef __BORLANDC__
|
|
#include <alloc.h>
|
|
#define MALLOC farmalloc
|
|
#define CALLOC farcalloc
|
|
#define FREE farfree
|
|
#else
|
|
#define MALLOC _fmalloc
|
|
#define CALLOC _fcalloc
|
|
#define FREE _ffree
|
|
#endif
|
|
#endif
|
|
|
|
/* DLL defines */
|
|
#ifdef MAKE_DLL
|
|
#if defined (PASCAL)
|
|
#define PASCAL_CONV PASCAL
|
|
#else
|
|
#define PASCAL_CONV
|
|
#endif
|
|
#ifdef MAKE_DLL16 /* 16bit DLL */
|
|
/* We compiled the 16bit DLL for Windows 3.x using Borland C/C++ Ver:3.x
|
|
* and the -WD or -WDE compiler switch. */
|
|
#define EXP16 __export
|
|
#define EXP32
|
|
#else /* 32bit DLL */
|
|
/* To export symbols in the new DLL model of Win32, Microsoft
|
|
* recommends the following approach */
|
|
#define EXP16
|
|
#define EXP32 __declspec( dllexport )
|
|
#endif
|
|
#else
|
|
#define PASCAL_CONV
|
|
#define EXP16
|
|
#define EXP32
|
|
#endif
|
|
|
|
#ifndef _SWEDLL_H
|
|
|
|
/***********************************************************
|
|
* exported functions
|
|
***********************************************************/
|
|
|
|
#define ext_def(x) extern EXP32 x FAR PASCAL_CONV EXP16
|
|
/* ext_def(x) evaluates to x on Unix */
|
|
|
|
ext_def(int32) swe_heliacal_ut(double tjdstart_ut, double *geopos,
|
|
double *datm, double *dobs,
|
|
char *ObjectName, int32 TypeEvent,
|
|
int32 iflag, double *dret, char *serr);
|
|
ext_def(int32) swe_heliacal_pheno_ut(double tjd_ut, double *geopos,
|
|
double *datm, double *dobs,
|
|
char *ObjectName, int32 TypeEvent,
|
|
int32 helflag, double *darr,
|
|
char *serr);
|
|
ext_def(int32) swe_vis_limit_mag(double tjdut, double *geopos,
|
|
double *datm, double *dobs,
|
|
char *ObjectName, int32 helflag,
|
|
double *dret, char *serr);
|
|
|
|
/* the following are secret, for Victor Reijs' */
|
|
ext_def(int32) swe_heliacal_angle(double tjdut, double *dgeo,
|
|
double *datm, double *dobs,
|
|
int32 helflag, double mag,
|
|
double azi_obj, double azi_sun,
|
|
double azi_moon, double alt_moon,
|
|
double *dret, char *serr);
|
|
ext_def(int32) swe_topo_arcus_visionis(double tjdut, double *dgeo,
|
|
double *datm, double *dobs,
|
|
int32 helflag, double mag,
|
|
double azi_obj, double alt_obj,
|
|
double azi_sun, double azi_moon,
|
|
double alt_moon, double *dret,
|
|
char *serr);
|
|
|
|
/****************************
|
|
* exports from sweph.c
|
|
****************************/
|
|
|
|
ext_def(char *) swe_version(char *);
|
|
|
|
/* planets, moon, nodes etc. */
|
|
ext_def(int32) swe_calc(double tjd, int ipl, int32 iflag, double *xx,
|
|
char *serr);
|
|
|
|
ext_def(int32) swe_calc_ut(double tjd_ut, int32 ipl, int32 iflag,
|
|
double *xx, char *serr);
|
|
|
|
/* fixed stars */
|
|
ext_def(int32) swe_fixstar(char *star, double tjd, int32 iflag,
|
|
double *xx, char *serr);
|
|
|
|
ext_def(int32) swe_fixstar_ut(char *star, double tjd_ut, int32 iflag,
|
|
double *xx, char *serr);
|
|
|
|
ext_def(int32) swe_fixstar_mag(char *star, double *mag, char *serr);
|
|
|
|
/* close Swiss Ephemeris */
|
|
ext_def(void) swe_close(void);
|
|
|
|
/* set directory path of ephemeris files */
|
|
ext_def(void) swe_set_ephe_path(char *path);
|
|
|
|
/* set file name of JPL file */
|
|
ext_def(void) swe_set_jpl_file(char *fname);
|
|
|
|
/* get planet name */
|
|
ext_def(char *) swe_get_planet_name(int ipl, char *spname);
|
|
|
|
/* set geographic position of observer */
|
|
ext_def(void) swe_set_topo(double geolon, double geolat, double geoalt);
|
|
|
|
/* set sidereal mode */
|
|
ext_def(void) swe_set_sid_mode(int32 sid_mode, double t0,
|
|
double ayan_t0);
|
|
|
|
/* get ayanamsa */
|
|
ext_def(double) swe_get_ayanamsa(double tjd_et);
|
|
|
|
ext_def(double) swe_get_ayanamsa_ut(double tjd_ut);
|
|
|
|
ext_def(char *) swe_get_ayanamsa_name(int32 isidmode);
|
|
|
|
/****************************
|
|
* exports from swedate.c
|
|
****************************/
|
|
|
|
ext_def(int) swe_date_conversion(int y, int m, int d, /* year, month, day */
|
|
double utime, /* universal time in hours (decimal) */
|
|
char c, /* calendar g[regorian]|j[ulian] */
|
|
double *tjd);
|
|
|
|
ext_def(double) swe_julday(int year, int month, int day, double hour,
|
|
int gregflag);
|
|
|
|
ext_def(void) swe_revjul(double jd, int gregflag, int *jyear, int *jmon,
|
|
int *jday, double *jut);
|
|
|
|
ext_def(int32) swe_utc_to_jd(int32 iyear, int32 imonth, int32 iday,
|
|
int32 ihour, int32 imin, double dsec,
|
|
int32 gregflag, double *dret, char *serr);
|
|
|
|
ext_def(void) swe_jdet_to_utc(double tjd_et, int32 gregflag,
|
|
int32 * iyear, int32 * imonth,
|
|
int32 * iday, int32 * ihour, int32 * imin,
|
|
double *dsec);
|
|
|
|
ext_def(void) swe_jdut1_to_utc(double tjd_ut, int32 gregflag,
|
|
int32 * iyear, int32 * imonth,
|
|
int32 * iday, int32 * ihour,
|
|
int32 * imin, double *dsec);
|
|
|
|
ext_def(void) swe_utc_time_zone(int32 iyear, int32 imonth, int32 iday,
|
|
int32 ihour, int32 imin, double dsec,
|
|
double d_timezone, int32 * iyear_out,
|
|
int32 * imonth_out, int32 * iday_out,
|
|
int32 * ihour_out, int32 * imin_out,
|
|
double *dsec_out);
|
|
|
|
/****************************
|
|
* exports from swehouse.c
|
|
****************************/
|
|
|
|
ext_def(int) swe_houses(double tjd_ut, double geolat, double geolon,
|
|
int hsys, double *cusps, double *ascmc);
|
|
|
|
ext_def(int) swe_houses_ex(double tjd_ut, int32 iflag, double geolat,
|
|
double geolon, int hsys, double *cusps,
|
|
double *ascmc);
|
|
|
|
ext_def(int) swe_houses_armc(double armc, double geolat, double eps,
|
|
int hsys, double *cusps, double *ascmc);
|
|
|
|
ext_def(double) swe_house_pos(double armc, double geolat, double eps,
|
|
int hsys, double *xpin, char *serr);
|
|
|
|
/****************************
|
|
* exports from swecl.c
|
|
****************************/
|
|
|
|
ext_def(int32) swe_gauquelin_sector(double t_ut, int32 ipl,
|
|
char *starname, int32 iflag,
|
|
int32 imeth, double *geopos,
|
|
double atpress, double attemp,
|
|
double *dgsect, char *serr);
|
|
|
|
/* computes geographic location and attributes of solar
|
|
* eclipse at a given tjd */
|
|
ext_def(int32) swe_sol_eclipse_where(double tjd, int32 ifl,
|
|
double *geopos, double *attr,
|
|
char *serr);
|
|
|
|
ext_def(int32) swe_lun_occult_where(double tjd, int32 ipl,
|
|
char *starname, int32 ifl,
|
|
double *geopos, double *attr,
|
|
char *serr);
|
|
|
|
/* computes attributes of a solar eclipse for given tjd, geolon, geolat */
|
|
ext_def(int32) swe_sol_eclipse_how(double tjd, int32 ifl,
|
|
double *geopos, double *attr,
|
|
char *serr);
|
|
|
|
/* finds time of next local eclipse */
|
|
ext_def(int32) swe_sol_eclipse_when_loc(double tjd_start, int32 ifl,
|
|
double *geopos, double *tret,
|
|
double *attr, int32 backward,
|
|
char *serr);
|
|
|
|
ext_def(int32) swe_lun_occult_when_loc(double tjd_start, int32 ipl,
|
|
char *starname, int32 ifl,
|
|
double *geopos, double *tret,
|
|
double *attr, int32 backward,
|
|
char *serr);
|
|
|
|
/* finds time of next eclipse globally */
|
|
ext_def(int32) swe_sol_eclipse_when_glob(double tjd_start, int32 ifl,
|
|
int32 ifltype, double *tret,
|
|
int32 backward, char *serr);
|
|
|
|
/* finds time of next occultation globally */
|
|
ext_def(int32) swe_lun_occult_when_glob(double tjd_start, int32 ipl,
|
|
char *starname, int32 ifl,
|
|
int32 ifltype, double *tret,
|
|
int32 backward, char *serr);
|
|
|
|
/* computes attributes of a lunar eclipse for given tjd */
|
|
ext_def(int32) swe_lun_eclipse_how(double tjd_ut, int32 ifl,
|
|
double *geopos, double *attr,
|
|
char *serr);
|
|
|
|
ext_def(int32) swe_lun_eclipse_when(double tjd_start, int32 ifl,
|
|
int32 ifltype, double *tret,
|
|
int32 backward, char *serr);
|
|
|
|
/* planetary phenomena */
|
|
ext_def(int32) swe_pheno(double tjd, int32 ipl, int32 iflag,
|
|
double *attr, char *serr);
|
|
|
|
ext_def(int32) swe_pheno_ut(double tjd_ut, int32 ipl, int32 iflag,
|
|
double *attr, char *serr);
|
|
|
|
ext_def(double) swe_refrac(double inalt, double atpress, double attemp,
|
|
int32 calc_flag);
|
|
|
|
ext_def(double) swe_refrac_extended(double inalt, double geoalt,
|
|
double atpress, double attemp,
|
|
double lapse_rate, int32 calc_flag,
|
|
double *dret);
|
|
|
|
ext_def(void) swe_set_lapse_rate(double lapse_rate);
|
|
|
|
ext_def(void) swe_azalt(double tjd_ut, int32 calc_flag, double *geopos,
|
|
double atpress, double attemp, double *xin,
|
|
double *xaz);
|
|
|
|
ext_def(void) swe_azalt_rev(double tjd_ut, int32 calc_flag,
|
|
double *geopos, double *xin, double *xout);
|
|
|
|
ext_def(int32) swe_rise_trans_true_hor(double tjd_ut, int32 ipl,
|
|
char *starname, int32 epheflag,
|
|
int32 rsmi, double *geopos,
|
|
double atpress, double attemp,
|
|
double horhgt, double *tret,
|
|
char *serr);
|
|
|
|
ext_def(int32) swe_rise_trans(double tjd_ut, int32 ipl, char *starname,
|
|
int32 epheflag, int32 rsmi,
|
|
double *geopos, double atpress,
|
|
double attemp, double *tret, char *serr);
|
|
|
|
ext_def(int32) swe_nod_aps(double tjd_et, int32 ipl, int32 iflag,
|
|
int32 method, double *xnasc, double *xndsc,
|
|
double *xperi, double *xaphe, char *serr);
|
|
|
|
ext_def(int32) swe_nod_aps_ut(double tjd_ut, int32 ipl, int32 iflag,
|
|
int32 method, double *xnasc,
|
|
double *xndsc, double *xperi,
|
|
double *xaphe, char *serr);
|
|
|
|
|
|
/****************************
|
|
* exports from swephlib.c
|
|
****************************/
|
|
|
|
/* delta t */
|
|
ext_def(double) swe_deltat(double tjd);
|
|
|
|
/* equation of time */
|
|
ext_def(int) swe_time_equ(double tjd, double *te, char *serr);
|
|
|
|
/* sidereal time */
|
|
ext_def(double) swe_sidtime0(double tjd_ut, double eps, double nut);
|
|
ext_def(double) swe_sidtime(double tjd_ut);
|
|
|
|
/* coordinate transformation polar -> polar */
|
|
ext_def(void) swe_cotrans(double *xpo, double *xpn, double eps);
|
|
ext_def(void) swe_cotrans_sp(double *xpo, double *xpn, double eps);
|
|
|
|
/* tidal acceleration to be used in swe_deltat() */
|
|
ext_def(double) swe_get_tid_acc(void);
|
|
ext_def(void) swe_set_tid_acc(double t_acc);
|
|
|
|
ext_def(double) swe_degnorm(double x);
|
|
ext_def(double) swe_radnorm(double x);
|
|
ext_def(double) swe_rad_midp(double x1, double x0);
|
|
ext_def(double) swe_deg_midp(double x1, double x0);
|
|
|
|
ext_def(void) swe_split_deg(double ddeg, int32 roundflag, int32 * ideg,
|
|
int32 * imin, int32 * isec, double *dsecfr,
|
|
int32 * isgn);
|
|
|
|
/*******************************************************
|
|
* other functions from swephlib.c;
|
|
* they are not needed for Swiss Ephemeris,
|
|
* but may be useful to former Placalc users.
|
|
********************************************************/
|
|
|
|
/* normalize argument into interval [0..DEG360] */
|
|
ext_def(centisec) swe_csnorm(centisec p);
|
|
|
|
/* distance in centisecs p1 - p2 normalized to [0..360[ */
|
|
ext_def(centisec) swe_difcsn(centisec p1, centisec p2);
|
|
|
|
ext_def(double) swe_difdegn(double p1, double p2);
|
|
|
|
/* distance in centisecs p1 - p2 normalized to [-180..180[ */
|
|
ext_def(centisec) swe_difcs2n(centisec p1, centisec p2);
|
|
|
|
ext_def(double) swe_difdeg2n(double p1, double p2);
|
|
ext_def(double) swe_difrad2n(double p1, double p2);
|
|
|
|
/* round second, but at 29.5959 always down */
|
|
ext_def(centisec) swe_csroundsec(centisec x);
|
|
|
|
/* double to int32 with rounding, no overflow check */
|
|
ext_def(int32) swe_d2l(double x);
|
|
|
|
/* monday = 0, ... sunday = 6 */
|
|
ext_def(int) swe_day_of_week(double jd);
|
|
|
|
ext_def(char *) swe_cs2timestr(CSEC t, int sep, AS_BOOL suppressZero,
|
|
char *a);
|
|
|
|
ext_def(char *) swe_cs2lonlatstr(CSEC t, char pchar, char mchar,
|
|
char *s);
|
|
|
|
ext_def(char *) swe_cs2degstr(CSEC t, char *a);
|
|
|
|
#endif /* #ifndef _SWEDLL_H */
|
|
|
|
#endif /* #ifndef _SWEPHEXP_INCLUDED */
|
|
|
|
#ifdef __cplusplus
|
|
} /* extern C */
|
|
#endif
|