diff --git a/swe/doc/sweph.gif b/swe/doc/sweph.gif deleted file mode 100644 index a4cf82d..0000000 Binary files a/swe/doc/sweph.gif and /dev/null differ diff --git a/swe/doc/swephin.gif b/swe/doc/swephin.gif deleted file mode 100644 index 0b5561b..0000000 Binary files a/swe/doc/swephin.gif and /dev/null differ diff --git a/swe/doc/swephprg.htm b/swe/doc/swephprg.htm deleted file mode 100644 index c686ba9..0000000 --- a/swe/doc/swephprg.htm +++ /dev/null @@ -1,14343 +0,0 @@ - - - - - - -Programming interface to the Swiss Ephemeris - - - - - -
- -

 

- -

Programming interface to the Swiss -Ephemeris

- -

 

- -

Copyright Astrodienst AG 1997-2011.

- -

This document describes the proprietary -programmer's interface to the Swiss Ephemeris DLL.

- -

 

- -

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 chooses 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 chooses 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.

- -

 

- -
- -
-
- -
- -

1. The programming -steps to get a planet’s position. 5

- -

2. The functions -swe_calc_ut() and swe_calc(). 7

- -

2.1. The call parameters. 7

- -

2.2. Error handling and return values. 7

- -

2.3. Bodies ( int ipl ). 8

- -

Additional asteroids. 8

- -

Fictitious planets. 11

- -

Obliquity and nutation. 13

- -

2.4. Options chosen by flag bits (long  iflag). 13

- -

2.4.1. The use of flag bits. 13

- -

2.4.2. Ephemeris flags. 13

- -

2.4.3. Speed flag. 14

- -

2.4.4. Coordinate systems, degrees and radians. 14

- -

2.4.5. Specialties (going beyond common interest). 14

- -

a. True or apparent positions. 14

- -

b. Topocentric positions. 14

- -

c. Heliocentric positions. 14

- -

d. Barycentric positions. 14

- -

e. Astrometric positions. 15

- -

f. True or mean equinox of date. 15

- -

g. J2000 positions and positions referred to other -equinoxes. 15

- -

h. Sidereal positions. 15

- -

2.5. Position and Speed (double xx[6]). 15

- -

3. The function -swe_get_planet_name(). 15

- -

4. Fixed stars -functions. 16

- -

4.1 swe_fixstar_ut. 16

- -

4.2 swe_fixstar(). 16

- -

4.3 swe_fixstar_mag(). 17

- -

5. Apsides -functions. 17

- -

5.1 swe_nod_aps_ut. 17

- -

5.2 swe_nod_aps(). 17

- -

6. Eclipse and -planetary phenomena functions. 19

- -

6.0. -Example of a typical eclipse calculation. 19

- -

6.1. swe_sol_eclipse_when_loc() and -swe_lun_occult_when_loc(). 20

- -

6.2. swe_sol_eclipse_when_glob(). 20

- -

6.3. swe_sol_eclipse_how (). 21

- -

6.4. swe_sol_eclipse_where (). 22

- -

6.5. swe_lun_occult_when_loc(). 23

- -

6.6. swe_lun_occult_when_glob(). 24

- -

6.7. swe_lun_occult_where (). 25

- -

6.8. swe_lun_eclipse_when (). 26

- -

6.9. swe_lun_eclipse_how (). 26

- -

6.10. swe_rise_trans() and swe_rise_trans_true_hor() -(risings, settings, meridian transits). 27

- -

6.11. swe_pheno_ut() and swe_pheno(), planetary phenomena. 28

- -

6.12. swe_azalt(), horizontal coordinates, azimuth, -altitude. 28

- -

6.13. swe_azalt_rev(). 29

- -

6.14. swe_refrac(), swe_refract_extended(), refraction. 29

- -

6.15. Heliacal risings etc.: swe_heliacal_ut(). 30

- -

6.16. Magnitude limit for visibility: swe_vis_limit_mag(). 31

- -

7. Date and time -conversion functions. 31

- -

7.1 Calendar Date and Julian Day: swe_julday(), -swe_date_conversion(), /swe_revjul(). 31

- -

7.2. UTC and Julian day: swe_utc_time_zone(), -swe_utc_to_jd(), swe_jdet_to_utc(), swe_jdut1_to_utc(). 32

- -

7.3. Future insertion of leap seconds and the file -swe_leapsec.txt. 34

- -

7.4. Mean solar time versus True solar time: -swe_time_equ(). 34

- -

8. Delta T-related -functions. 34

- -

8.1 swe_deltat(). 34

- -

8.2 swe_set_tid_acc(), swe_get_tid_acc(). 35

- -

8.3. Future updates of Delta T and the file -swe_deltat.txt. 35

- -

9. The function -swe_set_topo() for topocentric planet positions. 35

- -

10. Sidereal mode functions. 35

- -

10.1. -swe_set_sid_mode(). 35

- -

10.2. swe_get_ayanamsa_ut() and swe_get_ayanamsa(). 37

- -

11. The Ephemeris -file related functions. 37

- -

11.1 swe_set_ephe_path(). 37

- -

11.2 swe_close(). 38

- -

11.3 swe_set_jpl_file(). 38

- -

11.4 swe_version(). 38

- -

12. House cusp -calculation. 39

- -

12.1 swe_houses(). 39

- -

12.2 swe_houses_armc(). 39

- -

12.3 swe_houses_ex(). 39

- -

13. The sign of -geographical longitudes in Swisseph functions. 41

- -

14. Getting the -house position of a planet with swe_house_pos(). 41

- -

14.1. Calculating -the Gauquelin sector position of a planet with swe_house_pos() or -swe_gauquelin_sector(). 42

- -

15. Sidereal time -with swe_sidtime() and swe_sidtime0(). 43

- -

16. Summary of -SWISSEPH functions. 44

- -

16.1. Calculation of planets and stars. 44

- -

Planets, moon, asteroids, lunar nodes, apogees, -fictitious bodies. 44

- -

Fixed stars. 44

- -

Set the geographic location for topocentric planet -computation. 44

- -

Set the sidereal mode for sidereal planet positions. 44

- -

16.2 Eclipses and planetary phenomena. 45

- -

Find the next eclipse for a given geographic position. 45

- -

Find the next eclipse globally. 45

- -

Compute the attributes of a solar eclipse for a given -tjd, geographic long., latit. and height. 45

- -

Find out the geographic position where a central eclipse -is central or a non-central one maximal45

- -

Find the next occultation of a body by the moon for a -given geographic position. 46

- -

Find the next occultation globally. 46

- -

Find the next lunar eclipse. 46

- -

Compute the attributes of a lunar eclipse at a given time. 46

- -

Compute risings, settings and meridian transits of a body. 46

- -

Compute planetary phenomena. 47

- -

16.3. Date and time conversion. 47

- -

Delta T from Julian day number47

- -

Julian day number from year, month, day, hour, with check -whether date is legal48

- -

Julian day number from year, month, day, hour48

- -

Year, month, day, hour from Julian day number48

- -

Local time to UTC and UTC to local time. 48

- -

UTC to jd (TT and UT1). 48

- -

TT (ET1) to UTC. 49

- -

UTC to TT (ET1). 49

- -

Get tidal acceleration used in swe_deltat(). 49

- -

Set tidal acceleration to be used in swe_deltat(). 49

- -

Equation of time. 49

- -

16.4. Initialization, setup, and closing functions. 49

- -

Set directory path of ephemeris files. 49

- -

16.5. House calculation. 50

- -

Sidereal time. 50

- -

House cusps, ascendant and MC. 50

- -

Extended house function; to compute tropical or sidereal -positions. 50

- -

Get the house position of a celestial point. 50

- -

Get the Gauquelin sector position for a body. 51

- -

16.6. Auxiliary functions. 52

- -

Coordinate transformation, from ecliptic to equator or -vice-versa. 52

- -

Coordinate transformation of position and speed, from -ecliptic to equator or vice-versa. 52

- -

Get the name of a planet. 52

- -

16.7. Other functions that may be useful52

- -

Normalize argument into interval [0..DEG360]. 52

- -

Distance in centisecs p1 - p2 normalized to [0..360]. 52

- -

Distance in degrees. 52

- -

Distance in centisecs p1 - p2 normalized to [-180..180]. 52

- -

Distance in degrees. 53

- -

Round second, but at 29.5959 always down. 53

- -

Double to long with rounding, no overflow check. 53

- -

Day of week. 53

- -

Centiseconds -> time string. 53

- -

Centiseconds -> longitude or latitude string. 53

- -

Centiseconds -> degrees string. 53

- -

17. The SWISSEPH -DLLs. 53

- -

17.1 DLL Interface for brain damaged compilers. 53

- -

18. Using the DLL -with  Visual Basic 5.0. 54

- -

19. Using the DLL -with  Borland Delphi and C++ Builder54

- -

19.1 Delphi 2.0 and higher (32-bit). 54

- -

19.2 Borland C++ Builder55

- -

20. Using the -Swiss Ephemeris with Perl55

- -

21. The C sample -program.. 56

- -

21. The source -code distribution. 57

- -

22. The PLACALC -compatibility API57

- -

23. Documentation -files. 58

- -

24. Swisseph with -different hardware and compilers. 58

- -

25. Debugging and -Tracing Swisseph. 58

- -

25.1. If you are using the DLL. 58

- -

25.2 If you are using the source code. 59

- -

Appendix. 59

- -

Update and release history. 59

- -

Changes from version 1.78 to 1.79. 61

- -

Changes from version 1.77 to 1.78. 61

- -

Changes from version 1.76 to 1.77. 61

- -

Changes from version 1.75 to 1.76. 62

- -

Changes from version 1.74 to version 1.75. 62

- -

Changes from version 1.73 to version 1.74. 62

- -

Changes from version 1.72 to version 1.73. 63

- -

Changes from version 1.71 to version 1.72. 63

- -

Changes from version 1.70.03 to version 1.71. 63

- -

Changes from version 1.70.02 to version 1.70.03. 63

- -

Changes from version 1.70.01 to version 1.70.02. 63

- -

Changes from version 1.70.00 to version 1.70.01. 63

- -

Changes from version 1.67 to version 1.70. 63

- -

Changes from version 1.66 to version 1.67. 64

- -

Changes from version 1.65 to version 1.66. 64

- -

Changes from version 1.64.01 to version 1.65.00. 64

- -

Changes from version 1.64 to version 1.64.01. 64

- -

Changes from version 1.63 to version 1.64. 64

- -

Changes from version 1.62 to version 1.63. 64

- -

Changes from version 1.61.03 to version 1.62. 65

- -

Changes from version 1.61 to 1.61.01. 65

- -

Changes from version 1.60 to 1.61. 65

- -

Changes from version 1.51 to 1.60. 65

- -

Changes from version 1.50 to 1.51. 65

- -

Changes from version 1.40 to 1.50. 65

- -

Changes from version 1.31 to 1.40. 66

- -

Changes from version 1.30 to 1.31. 66

- -

Changes from version 1.27 to 1.30. 66

- -

Changes from version 1.26 to 1.27. 66

- -

Changes from version 1.25 to 1.26. 66

- -

Changes from version 1.22 to 1.23. 66

- -

Changes from version 1.21 to 1.22. 67

- -

Changes from version 1.20 to 1.21. 67

- -

Changes from version 1.11 to 1.20. 67

- -

Changes from version 1.10 to 1.11. 67

- -

Changes from version 1.04 to 1.10. 67

- -

Changes from Version 1.03 to 1.04. 67

- -

Changes from Version 1.02 to 1.03. 67

- -

Changes from Version 1.01 to 1.02. 68

- -

Changes from Version 1.00  to 1.01. 68

- -

1. Sidereal time. 68

- -

2. Houses. 68

- -

3. Ecliptic obliquity and nutation. 68

- -

Appendix A. 68

- -

What is missing ?. 68

- -

Index. 69

- -

- -
- -
-
- -
- -

 

- -

1. The programming steps to get a planet’s -position

- -

 

- -

To compute a celestial bodyor point with SWISSEPH, you have to do the following steps (use swetest.c as an example). The details of -the functions will be explained in the following chapters.

- -

 

- -

1.         Set -the directory path of the ephemeris files, e.g.:

- -

         swe_set_ephe_path(”C:\\SWEPH\\EPHE”);

- -

 

- -

2..         From -the birth date, compute the Julian day number:

- -

         jul_day_UT -= swe_julday(year, month, day, hour, gregflag);

- -

 

- -

3..  Compute a planet or other bodies:

- -

         ret_flag = swe_calc_ut(jul_day_UT, -planet_no, flag, lon_lat_rad, err_msg);

- -

     or a -fixed star:

- -

         ret_flag = swe_fixstar_ut(star_nam, -jul_day_UT, flag, lon_lat_rad, err_msg);

- -

 

- -

     Note:

- -

      The functions swe_calc_ut() -and swe_fixstar_ut() were introduced with Swisseph version 1.60.

- -

      If you use a Swisseph version -older than 1.60 or if you want to work with Ephemeris -Time, you have to -proceed as follows instead:

- -

 

- -

      First, if necessary, convert Universal Time -(UT) to Ephemeris Time (ET):

- -

         jul_day_ET = jul_day_UT + swe_deltat(jul_day_UT);

- -

 

- -

      Then Compute a planet or other bodies:

- -

         ret_flag = swe_calc(jul_day_ET, -planet_no, flag, lon_lat_rad, err_msg);

- -

      or a fixed star:

- -

         ret_flag = swe_fixstar(star_nam, -jul_day_ET, flag, lon_lat_rad, err_msg);

- -

 

- -

5..         At -the end of your computations close all files and free memory calling swe_close();

- -

 

- -

Here is a miniature sample program, it is in the -source distribution as swemini.c

- -

 

- -

#include "swephexp.h"      /* this includes  "sweodef.h" */

- -

int main()

- -

{

- -

  -char *sp, sdate[AS_MAXCH], snam[40], serr[AS_MAXCH]; 

- -

  -int jday = 1, jmon = 1, jyear = 2000;

- -

  double jut = 0.0;

- -

  double tjd_ut, te, x2[6];

- -

  long iflag, iflgret;

- -

  int p;

- -

  iflag = SEFLG_SPEED;

- -

  while (TRUE) {

- -

    -printf("\nDate (d.m.y) ?");

- -

    -gets(sdate);

- -

          /* -stop if a period . is entered */

- -

    -if (*sdate == '.')

- -

      -return OK;

- -

    -if (sscanf (sdate, "%d%*c%d%*c%d", -&jday,&jmon,&jyear) < 1) exit(1);

- -

             /*

- -

              * -we have day, month and year and convert to Julian day number

- -

              */

- -

    -tjd_ut = swe_julday(jyear,jmon,jday,jut,SE_GREG_CAL);       

- -

             /*

- -

              * compute Ephemeris time from Universal -time by adding delta_t

- -

              * not required for Swisseph versions -smaller than 1.60

- -

              */

- -

       -/* te = tjd_ut + swe_deltat(tjd_ut); */

- -

    -printf("date: %02d.%02d.%d at 0:00 Universal time\n", jday, -jmon, jyear);

- -

    -printf("planet     -\tlongitude\tlatitude\tdistance\tspeed long.\n");

- -

             /*

- -

              * a loop over all planets

- -

              */

- -

    -for (p = SE_SUN; p <= SE_CHIRON; p++) {

- -

      -if (p == SE_EARTH) continue;

- -

          /*

- -

           * do the coordinate calculation for this -planet p

- -

           */

- -

iflgret = swe_calc_ut(tjd_ut, p, iflag, -x2, serr);

- -

         -/* Swisseph versions older than 1.60 require the following

- -

          -* statement instead */

- -

/* iflgret = swe_calc(te, p, iflag, x2, -serr); */

- -

               /*

- -

                * if there is a problem, a negative -value is returned and an

- -

                * error message is in serr.

- -

                */

- -

      -if (iflgret < 0)

- -

         printf("error: %s\n", -serr);

- -

               -/*

- -

                * get the name of the planet p

- -

                */

- -

      -swe_get_planet_name(p, snam);

- -

               /*

- -

                * print the coordinates

- -

                */

- -

      -printf("%10s\t%11.7f\t%10.7f\t%10.7f\t%10.7f\n",

- -

              snam, x2[0], x2[1], x2[2], x2[3]);

- -

    -}

- -

  }

- -

  -return OK;

- -

}

- -

2. The functions swe_calc_ut() and swe_calc()

- -

2.1. The call parameters

- -

swe_calc_ut() -was introduced with Swisseph version 1.60 and makes planetary -calculations a bit simpler. For the steps required, see the chapter  The programming steps to get a planet’s position.

- -

swe_calc_ut() -and swe_calc() work exactly -the same way except that swe_calc() requires Ephemeris -Time( more -accurate: Dynamical Time ) as a parameter whereas swe_calc_ut() expects Universal Time. For common astrological calculations, you will only need swe_calc_ut() and will not have to think -anymore about the conversion between Universal Time and Ephemeris Time.

- -

swe_calc_ut() and -swe_calc() compute -positions of planets, asteroids, lunar nodes and apogees. They are defined as -follows:

- -

 

- -

int swe_calc_ut -( double tjd_ut, int ipl, int iflag, double* xx, char* serr),

- -

where

- -

tjd_ut     =Julian day, -Universal Time

- -

ipl       =body number

- -

iflag    =a 32 bit integer -containing bit flags that indicate what kind of computation is wanted

- -

xx       =array of 6 doubles -for longitude, latitude, distance, speed in long., speed in lat., and speed in -dist.

- -

serr[256] =character string to return error messages in case of -error.

- -

 

- -

and

- -

int swe_calc(double -tjd_et, int ipl, int iflag, double *xx, char *serr),

- -

same but

- -

tjd_et     =     Julian -day, Ephemeris time,  where tjd_et = -tjd_ut + swe_deltat(tjd_ut)

- -

 

- -

A detailed description of these -variables will be given in the following sections.

- -

2.2. Error handling and return -values

- -

On success, swe_calc ( or swe_calc_ut)returns a 32-bit integer containing flag bits that indicate -what kind of computation has been done. This value may or may not be equal toiflag. If an option specified byiflag cannot be fulfilled or makes no sense, swe_calc just does what can be done. E.g., if you specify that you want JPL -ephemeris, butswe_calccannot find the ephemeris file, it -tries to do the computation with any available ephemeris. This will be -indicated in the return value of swe_calc. So, to make sure that swe_calc () did exactly what you had wanted, you may want to check whether or -not the return code == iflag.

- -

However, swe_calc() might return an fatal error code (< 0) and an error string in one of -the following cases:

- -

 

- -

·         -if an illegal body number has been specified

- -

·         -if a Julian day beyond the ephemeris -limits has been specified

- -

·         -if the length of the ephemeris file is -not correct (damaged file)

- -

·         -on read error, e.g. a file index -points to a position beyond file length ( data on file are corrupt )

- -

·         -if the copyright section in the -ephemeris file has been destroyed.

- -

 

- -

If any of these errors occurs,

- -

 

- -

·         -the return code of the function is -1,

- -

·         -the position and speed variables are -set to zero,

- -

·         -the type of error is indicated in the -error string serr.

- -

2.3. Bodies ( int ipl )

- -

 

- -

To tell swe_calc()which -celestial body or factor should be computed, a fixed set of body numbers is -used. The body numbers are defined in swephexp.h:

- -

/* 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_FICT_OFFSET       40

- -

#define SE_NFICT_ELEM                15

- -

 

- -

/* -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_AST_OFFSET     10000

- -

 

- -

 

- -

Additional asteroids

- -

 

- -

Body numbers of other asteroids are above SE_AST_OFFSET (=10000) and have to be constructed as -follows:

- -

ipl = SE_AST_OFFSET + -Minor_Planet_Catalogue_number;

- -

e.g. Eros :  ipl = SE_AST_OFFSET +  433

- -

The names of the asteroids and their -catalogue numbers can be found in seasnam.txt.

- -

Examples are:

- -

 

- -

5              Astraea

- -

6              Hebe    

- -

7              Iris         

- -

8              Flora

- -

9              Metis

- -

10              Hygiea  

- -

30              Urania  

- -

42              Isis              not identical with -"Isis-Transpluto"

- -

153              Hilda              (has an own asteroid belt at 4 AU)

- -

227              Philosophia        

- -

251              Sophia  

- -

259              Aletheia

- -

275              Sapientia             

- -

279              Thule              (asteroid close to Jupiter)

- -

375              Ursula   

- -

433              Eros      

- -

763              Cupido              different from Witte's Cupido

- -

944              Hidalgo 

- -

1181              Lilith              (not identical with Dark Moon -'Lilith')

- -

1221              Amor     

- -

1387              Kama    

- -

1388              Aphrodite           

- -

1862              Apollo              (different from Witte's Apollon)

- -

3553              Damocles              highly eccentric orbit betw. Mars -and Uranus

- -

3753              Cruithne              ("second moon" of earth)

- -

4341              Poseidon              Greek Neptune (different from -Witte's Poseidon)

- -

4464              Vulcano              fire god (different from Witte's -Vulkanus and intramercurian Vulcan)

- -

5731              Zeus              Greek Jupiter (different from -Witte's Zeus)

- -

7066              Nessus              third named Centaur (beween Saturn -and Pluto)

- -

 

- -

 

- -

There are two ephemeris files for -each asteroid (except the main asteroids), a long one and a short one:

- -

 

- -

se09999.se1     long-term ephemeris of asteroid number -9999, 3000 BC – 3000 AD

- -

se09999s.se1     short ephemeris of asteroid number 9999, -1500 – 2100 AD

- -

 

- -

The larger file is about 10 times the -size of the short ephemeris. If the user does not want an ephemeris for the -time before 1500 he might prefer to work with the short files. If so, just copy -the files ending with ”s.se1” to your hard -disk. Swe_calc()tries the long one and on failure -automatically takes the short one.

- -

Asteroid ephemerides are looked for in the -subdirectories ast0, ast1, ast2 .. ast9 etc of the -ephemeris directory and, if not found there, in the ephemeris directory itself. -Asteroids with numbers 0 – 999 are expected in directory ast0, those with numbers 1000 – 1999 in directory ast1 etc.

- -

 

- -

Note that  not all asteroids - can be computed for the whole period of Swiss Ephemeris. The -orbits of some of them are extremely sensitive to -perturbations by major planets. E.g. CHIRON, -cannot be computed for the time before 650 AD and after 4650 AD -because of close encounters with Saturn. Outside this time range, Swiss -Ephemeris returns the error code, an error message, and a position value 0. Be -aware, that the user will have to handlethis case in his -program. Computing Chiron transits for Jesus or Alexander the Great will not work.

- -

The same is -true for Pholus before 3850 BC, and for many other asteroids, as e.g. -1862 Apollo. He becomes chaotic before the year 1870 AD, when he -approaches Venus very closely. Swiss Ephemeris does not provide positions of -Apollo for earlier centuries !

- -

 

- -

Note on asteroid names

- -

Asteroid names are listed in the -file seasnam.txt. This file is in the ephemeris directory.

- -

 

- -

Fictitious planets

- -

 

- -

Fictitious planets have numbers greater -than or equal to 40. The user can define his or her own fictitious planets. The -orbital elements of these planets must be written into the file seorbel.txt. The function swe_calc()looks for the file seorbel.txt in the -ephemeris path set by swe_set_ephe_path(). -If no orbital elements file is found, swe_calc()uses the built-in orbital elements of the above mentioned Uranian planets and -some other bodies. The planet number of a fictitious planet is defined as

- -

 

- -

ipl = SE_FICT_OFFSET_1 + -number_of_elements_set;

- -

 

- -

e.g. for Kronos: ipl = 39 + 4 = 43.

- -

 

- -

The file seorbel.txt -has the following structure:

- -

 

- -
- -

    # Orbital elements of fictitious planets

- -

    # 27 Jan. 2000

- -

    #

- -

    # This file is part of the Swiss Ephemeris, from Version 1.60 -on.

- -

    #

- -

    # Warning! These planets do not exist!

- -

    #

- -

    # The user can add his or her own elements.

- -

    # 960 is the maximum number of fictitious planets.

- -

    #

- -

    # The elements order is as follows:

- -

    # 1. epoch of elements (Julian day)

- -

    # 2. equinox (Julian day or "J1900" or -"B1950" or "J2000" or “JDATE”)

- -

    # 3. mean anomaly at epoch

- -

    # 4. semi-axis

- -

    # 5. eccentricity

- -

    # 6. argument of perihelion (ang. distance of perihelion from -node)

- -

    # 7. ascending node

- -

    # 8. inclination

- -

    # 9. name of planet

- -

    #

- -

    # use '#' for comments

- -

    # to compute a body with swe_calc(), use planet number

- -

    # ipl = SE_FICT_OFFSET_1 + number_of_elements_set,

- -

    # e.g. number of Kronos is ipl = 39 + 4 = 43

- -

    #

- -

    # Witte/Sieggruen planets, refined by James Neely

- -

J1900, -J1900, 163.7409, 40.99837, 0.00460, 171.4333, 129.8325, 1.0833, Cupido   # 1

- -

J1900, -J1900,  27.6496, 50.66744, 0.00245, -148.1796, 161.3339, 1.0500, Hades    # 2

- -

J1900, -J1900, 165.1232, 59.21436, 0.00120, 299.0440,   -0.0000, 0.0000, Zeus     # 3

- -

J1900, -J1900, 169.0193, 64.81960, 0.00305, 208.8801,   -0.0000, 0.0000, Kronos   # 4

- -

J1900, -J1900, 138.0533, 70.29949, 0.00000,   0.0000,   0.0000, 0.0000, -Apollon  # 5

- -

J1900, -J1900, 351.3350, 73.62765, 0.00000,   -0.0000,   0.0000, 0.0000, -Admetos  # 6

- -

J1900, -J1900,  55.8983, 77.25568, 0.00000,   0.0000,   -0.0000, 0.0000, Vulcanus # 7

- -

J1900, -J1900, 165.5163, 83.66907, 0.00000,   0.0000,   0.0000, 0.0000, Poseidon # 8

- -

    #

- -

    # Isis-Transpluto; elements from "Die Sterne" 3/1952, -p. 70ff.

- -

    # Strubell does not give an equinox. 1945 is taken in order to

- -

    # reproduce the as best as ASTRON ephemeris. (This is a strange -

- -

    # choice, though.)

- -

    # The epoch according to Strubell is 1772.76.

- -

    # 1772 is a leap year!

- -

    # The fraction is counted from 1 Jan. 1772

- -

2368547.66, 2431456.5, -0.0, 77.775, 0.3, 0.7, 0, 0, Isis-Transpluto             # 9

- -

    # Nibiru, elements from Christian Woeltge, Hannover

- -

1856113.380954, -1856113.380954, 0.0, 234.8921, 0.981092, 103.966, -44.567, 158.708, Nibiru # 10

- -

    # Harrington, elements from Astronomical Journal 96(4), Oct. -1988

- -

2374696.5, J2000, 0.0, -101.2, 0.411, 208.5, 275.4, 32.4, Harrington             # 11

- -

    # according to W.G. Hoyt, "Planets X and Pluto", -Tucson 1980, p. 63

- -

2395662.5, 2395662.5, -34.05, 36.15, 0.10761, 284.75, 0, 0, Leverrier (Neptune)  # 12

- -

2395662.5, 2395662.5, -24.28, 37.25, 0.12062, 299.11, 0, 0, Adams (Neptune)      # 13

- -

2425977.5, 2425977.5, 281, -43.0, 0.202, 204.9, 0, 0, Lowell (Pluto)             # 14

- -

2425977.5, -2425977.5, 48.95, 55.1, 0.31, 280.1, 100, 15, Pickering (Pluto)      # 15

- -

J1900,JDATE, -252.8987988 + 707550.7341 * T, 0.13744, 0.019, 322.212069+1670.056*T, -47.787931-1670.056*T, 7.5, Vulcan # 16

- -

# Selena/White Moon

- -

J2000,JDATE, 242.2205555, -0.05279142865925, 0.0, 0.0, 0.0, 0.0, Selena/White Moon, geo # 17

- -
- -

 

- -

All orbital -elements except epoch and equinox may have T  -terms, where

- -

T = (tjd – epoch) -/ 36525.

- -

(See, e.g., -Vulcan, the second last elements set (not the ”Uranian” Vulcanus but the -intramercurian hypothetical planet Vulcan).) ”T * T”, ”T2”, ”T3” are also -allowed.

- -

The equinox can -either be entered as a Julian day or as ”J1900” or ”B1950” or ”J2000” or, if -the equinox of date is required, as ”JDATE”. If you use T terms, note that -precession has to be taken into account with JDATE, whereas it has to be -neglected with fixed equinoxes.

- -

 

- -

No T term is -required with the mean anomaly, i.e. for the speed of the body, because our -software can compute it from semi-axis and gravity. However, a mean anomaly T -term had to be added with Vulcan because its speed is not in agreement with the -laws of physics. In such cases, the software takes the speed given in the elements -and does not compute it internally.

- -

 

- -

From Version 1.62 -on, the software also accepts orbital elements for fictitious bodies that move -about the earth. As an example, study the last elements set in the excerpt of -seorbel.txt above. After the name of the body, ”, geo” has to be added.

- -

 

- -

 

- -

 

- -

Obliquity and nutation

- -

 

- -

A special body -number SE_ECL_NUT is provided to compute the obliquity of the ecliptic and -the nutation. Of course nutation is already added internally to the planetary -coordinates by swe_calc() but sometimes it will be -needed as a separate value.

- -

 

- -

iflgret = swe_calc(tjd_et, -SE_ECL_NUT, 0, x, serr);

- -

 

- -

x is an -array of 6 doubles as usual. They will be filled as follows:

- -

 

- -

x[0] = true obliqutiy of the Ecliptic -(includes nutation)

- -

x[1] = mean obliquity of the Ecliptic

- -

x[2] = nutation in longitude

- -

x[3] = nutation in obliquity

- -

x[4] = x[5] = 0

- -

2.4. Options chosen by flag bits -(long  iflag)

- -

2.4.1. The -use of flag bits

- -

 

- -

If no bits are set, i.e. if  iflag == 0, swe_calc() computes what common astrological ephemerides (as available in book -shops) supply, i.e. an apparent  body position in geocentric ecliptic -polar coordinates ( longitude, latitude, and distance) relative to the trueequinox of the date. -

- -

If the speed of the body is -required, set iflag = SEFLG_SPEED

- -

For mathematical points as the mean -lunar node and the mean apogee, there is no apparent position. Swe_calc()returns true positions for these points.

- -

If you need another kind of computation, -use the flags explained in the following paragraphs (c.f. swephexp.h). Their names begin with ‚SEFLG_‘. To -combine them, you have to concatenate them (inclusive-or) as in the following -example:

- -

iflag = -SEFLG_SPEED | SEFLG_TRUEPOS;  (or: iflag = SEFLG_SPEED + SEFLG_TRUEPOS;) // C

- -

iflag = -SEFLG_SPEED or SEFLG_TRUEPOS;(or: iflag = -SEFLG_SPEED + SEFLG_TRUEPOS;) -// Pascal

- -

 

- -

With this value ofiflag, swe_calc() will compute true positions ( i.e. not accounted for light-time ) -with speed.

- -

The flag bits, which are defined in swephexp.h, are:

- -

 

- -

#define -SEFLG_JPLEPH         1L     // use JPL ephemeris -

- -

#define -SEFLG_SWIEPH         2L     // use SWISSEPH -ephemeris, default

- -

#define -SEFLG_MOSEPH         4L     // use Moshier -ephemeris

- -

 

- -

#define -SEFLG_HELCTR              8L     // -return heliocentric position

- -

#define -SEFLG_TRUEPOS      16L     // return true positions, not apparent

- -

#define -SEFLG_J2000               32L     // -no precession, i.e. give J2000 equinox

- -

#define -SEFLG_NONUT               64L     // -no nutation, i.e. mean equinox of date

- -

#define -SEFLG_SPEED3              128L     // -speed from 3 positions (do not use it, SEFLG_SPEED is

- -

                   // -faster and preciser.)

- -

#define -SEFLG_SPEED               256L     // -high precision speed (analyt. comp.)

- -

#define -SEFLG_NOGDEFL      512L     // turn off gravitational deflection

- -

#define -SEFLG_NOABERR      1024L     // turn off 'annual' aberration of light

- -

#define -SEFLG_EQUATORIAL     2048L     // equatorial positions are wanted

- -

#define -SEFLG_XYZ                 4096L     // -cartesian, not polar, coordinates

- -

#define -SEFLG_RADIANS            8192L     // -coordinates in radians, not degrees

- -

#define -SEFLG_BARYCTR            16384L     // -barycentric positions

- -

#define -SEFLG_TOPOCTR      (32*1024L)     // topocentric positions

- -

#define SEFLG_SIDEREAL     (64*1024L)     // sidereal -positions

- -

#define SEFLG_ICRS     (128*1024L)     // ICRS (DE406 reference frame)

- -

2.4.2. Ephemeris -flags

- -

 

- -

The flags to choose an ephemeris -are: (s. swephexp.h)

- -

 

- -

SEFLG_JPLEPH           /* use JPL ephemeris */

- -

SEFLG_SWIEPH           /* use Swiss Ephemeris */

- -

SEFLG_MOSEPH           /* use Moshier ephemeris */

- -

 

- -

If none of this flags is specified, swe_calc() tries to compute the default ephemeris. The default ephemeris is -defined in -swephexp.h:

- -

#define -SEFLG_DEFAULTEPH SEFLG_SWIEPH

- -

In this case the default ephemeris -is Swiss Ephemeris. If you have not specified an -ephemeris iniflag, swe_calc() tries to compute a Swiss Ephemeris position. If it does not find -the required Swiss Ephemeris file either, it computes a Moshier position.

- -

2.4.3. Speed flag

- -

 

- -

Swe_calc()does -not compute speed if you do not add the speed flag SEFLG_SPEED. E.g.

- -

iflag |= SEFLG_SPEED;

- -

The computation of speed is usually cheap, -so you may set this bit by default even if you do not need the speed.

- -

 

- -

2.4.4. Coordinate -systems, degrees and radians

- -

 

- -

SEFLG_EQUATORIAL              returns -equatorial positions: rectascension and declination.

- -

SEFLG_XYZ                             returns x, -y, z coordinates instead of longitude, latitude, and distance.

- -

SEFLG_RADIANS                      returns -position in radians, not degrees.

- -

 

- -

E.g. to compute rectascension and -declination, write:

- -

iflag = SEFLG_SWIEPH | SEFLG_SPEED | -SEFLG_EQUATORIAL;

- -

2.4.5. -Specialties (going beyond common interest)

- -
a. True or apparent positions
- -

Common ephemerides supply apparent geocentric positions. Since the journey of -the light from a planet to the earth takes some time, the planets are never -seen where they actually are, but where they were a few minutes or hours -before. Astrology uses to work with the positions we see. ( More -precisely: with the positions we would see, if we stood at the center of the -earth and could see the sky. Actually, the geographical position of the -observer could be of importance as well and topocentric positionscould be -computed, but this is usually not taken into account in astrology.). The -geocentric position for the earth (SE_EARTH) is returned as zero.

- -

To compute the truegeometrical position of a planet, -disregarding light-time, you have to add the flag SEFLG_TRUEPOS.

- -
b. Topocentric positions
- -

To compute topocentric -positions, i.e. positions referred to the place of the observer (the birth -place) rather than to the center of the earth, do as follows:

- -

·         -call swe_set_topo(geo_lon, -geo_lat, altitude_above_sea)  (The longitude and latitude must be in degrees, the altitude in meters.)

- -

·        -add the flag SEFLG_TOPOCTR toiflag

- -

·          -call swe_calc(...)

- -
c. Heliocentric positions
- -

To compute a heliocentric position, -add SEFLG_HELCTR.

- -

A heliocentric position can be -computed for all planets including the moon. For the sun, lunar nodes and lunar apogees the coordinates are -returned as zero; no error message appears.

- -
d. Barycentric positions
- -

SEFLG_BARYCTR yields coordinates as -referred to the solar system barycenter. However, this option is not completely -implemented.  It was used for program -tests during development.  It works only -with the JPL and the Swiss Ephemeris, not with the Moshier ephemeris; -and only with physical bodies, but not with the nodes and the apogees.

- -

Moreover, the barycentric Sun of -Swiss Ephemeris has ”only” a precision of 0.1”. Higher accuracy would have -taken a lot of storage, on the other hand it is not needed for precise -geocentric and heliocentric positions. For more precise barycentric positions -the JPL ephemeris file should be used.

- -

A barycentric position can be -computed for -all planets including the sun and moon. For the -lunar nodes and lunar apogees the coordinates are returned as zero; no error -message appears.

- -
e. Astrometric positions
- -

For astrometric positions, which are -sometimes given in the Astronomical Almanac, the light-time correction is -computed, but annual aberration and the light-deflection by the sun neglected. -This can be done with SEFLG_NOABERR and SEFLG_NOGDEFL. For positions related to -the mean equinox of 2000, you must set SEFLG_J2000 and SEFLG_NONUT, as well.

- -
f. True or mean equinox of date
- -

Swe_calc() usually computes the -positions as referred to the true equinox of the date ( i.e. with nutation ). -If you want the mean equinox, you can turn nutation off, using the flag bit -SEFLG_NONUT.

- -
g. J2000 positions and positions referred to -other equinoxes
- -

Swe_calc() usually computes the -positions as referred to the equinox of date. SEFLG_J2000 yields data referred -to the equinox J2000. For positions referred to other equinoxes, SEFLG_SIDEREAL -has to be set and the equinox specified by swe_set_sid_mode(). For more information, read the description of this function.

- -
h. Sidereal positions
- -

To compute sidereal positions, set -bit SEFLG_SIDEREAL and use the function swe_set_sid_mode() in order to define the ayanamsha you want. For more information, read the description of this -function.

- -

 

- -

2.5. Position and Speed(double -xx[6])

- -

 

- -

swe_calc()returns -the coordinates of position and velocity in the following order:

- -

 

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Ecliptic position

-
-

Equatorial position ( SEFLG_EQUATORIAL - )

-
-

Longitude

-
-

Rectascension

-
-

Latitude

-
-

Declination

-
-

Distance in AU

-
-

distance in AU

-
-

Speed in - longitude (deg/day)

-
-

Speed in - rectascension (deg/day)

-
-

Speed in - latitude (deg/day)

-
-

Speed in - declination (deg/day)

-
-

Speed in - distance (AU/day)

-
-

Speed in - distance (AU/day)

-
- -

 

- -

If you need rectangular -coordinates ( SEFLG_XYZ ), swe_calc() returns x, y, z, dx, dy, dz in AU.

- -

Once you have computed a planet, -e.g., in ecliptic coordinates, its equatorial position or its rectangular -coordinates are available, too.  You can -get them very cheaply ( little CPU time used ), calling again swe_calc()with the same parameters, but adding -SEFLG_EQUATORIAL or SEFLG_XYZ to iflag. -swe_calc() will not compute the body again, just -return the data specified from internal storage.

- -

 

- -

3. The function swe_get_planet_name()

- -

This function allows to find a planetary or asteroid name, when the planet -number is given. The function definition is

- -

char* swe_get_planet_name(int -ipl, char *spname);

- -

 

- -

If an asteroid name is wanted, the -function does the following:

- -

 

- -

·         -The name is first looked for in the -asteroid file.

- -

·         -Because many asteroids, especially the -ones with high catalogue numbers, have no names yet (or have only a preliminary -designation like 1968 HB), and because the Minor Planet Center of the IAU add -new names quite often, it happens that there is no name in the asteroid file -although the asteroid has already been given a name. For this, we have the file -seasnam.txt, a file that contains a list of all named asteroid and is usually -more up to date. If swe_calc() finds a preliminary -designation, it looks for a name in this file.

- -

 

- -

The file seasnam.txt can be updated by the user. To do this, download the names list -from the Minor Planet Center http://cfa-www.harvard.edu/iau/lists/MPNames.html, -rename it as seasnam.txt and move it into your ephemeris directory.

- -

 

- -

The file seasnam.txt need not be ordered in any way. There must be one asteroid per -line, first its catalogue number, then its name. The asteroid number may or may -not be in brackets.

- -

Example:

- -

 

- -

(3192) A'Hearn

- -

(3654) AAS

- -

(8721) AMOS

- -

(3568) ASCII

- -

(2848) ASP

- -

(677) Aaltje

- -

  ...

- -

4. Fixed stars functions

- -

4.1 swe_fixstar_ut

- -

The function swe_fixstar_ut() was introduced with Swisseph version 1.60. It does exactly -the same as swe_fixstar() except that it expects Universal Time rather than Ephemeris time as -an input value. (cf. swe_calc_ut() and swe_calc())

- -

The functions swe_fixstar_ut() and swe_fixstar()computes fixed stars. They are defined as follows:

- -

 

- -

long swe_fixstar_ut(char* -star, double -tjd_ut, long -iflag, -double* xx, -char* serr);

- -

where

- -

star              =name of -fixed star to be searched, returned name of found star

- -

tjd_ut              =Julian day -in Universal Time

- -

iflag       =an integer -containing several flags that indicate what      kind -of computation is wanted

- -

xx              =array of 6 -doubles for longitude, latitude, distance, speed in long., speed in lat., and -speed in dist.

- -

serr[256] =character string to contain error messages in case of -error.

- -

 For more info, see below under 4.2. -swe_fixstar()

- -

 

- -

4.2 swe_fixstar()

- -

long swe_fixstar(char -*star, -double tjd_et, long iflag, double* xx, char* serr);

- -

same, but  -tjd_et= Julian day in Ephemeris Time

- -

 

- -

The  -parameter star must provide for at least 41 characters for the returned star name -(= 2 x SE_MAX_STNAME + 1, where SE_MAX_STNAME is defined in swephexp.h). If a star is found, its name is returned in this field in the -format
-
traditional_name, -nomenclature_namee.g. "Aldebaran,alTau".

- -

 

- -

The function has three modes to search for a star in the filefixstars.cat:

- -

 

- -

·         -star -contains a positive number ( in ASCII string format, e.g. "234"): The 234-th non-comment line in the file -fixstars.cat is used. Comment lines begin with # and are ignored.

- -

·         -starcontains a traditional name: the first star in the file fixstars.cat is used whose traditional name fits the given name. All names are -mapped to lower case before comparison. If star has n -characters, only the first n characters of the traditional name field are compared. If a comma -appears after a non-zero-length traditional name, the traditional name is cut -off at the comma before the search. This allows the reuse of the returned star -name from a previous call in the next call.

- -

·         -starbegins with a comma, followed by a nomenclature name, e.g. ",alTau": the star with this name in the -nomenclature field ( the second field ) is returned. Letter case is observed in -the comparison for nomenclature names.

- -

 

- -

For correct spelling of nomenclature -names, see file fixstars.cat. Nomenclature names are -usually composed of a Greek letter and the name of a star constellation. The -Greek letters were originally used to write numbers, therefore to number the -stars of the constellation. The abbreviated nomenclature names we use in fixstars.cat are constructed from two lowercase letters for the Greek letter -(e.g. ”al” for ”alpha”) and three letters for the -constellation (e.g. ”Tau” for ”Tauri”).

- -

 

- -

The function and the DLL should -survive damaged fixstars.cat files which contain -illegal data and star names exceeding the accepted length. Such fields are cut -to acceptable length.

- -

There are two special entries in the file -fixstars.cat:

- -

 

- -

·         -an entry for the Galactic Center, -named "Gal. -Center" with one blank.

- -

·         -a star named "AA_page_B40" which is the star calculation sample of Astronomical Almanac  (our bible of the last two years), page B40.

- -

 

- -

You may edit the star catalogue and -move the stars you prefer to the top of the file. This will increase the speed -of your computations. The search mode is linear through the whole star file for -each call of swe_fixstar().

- -

As for the explanation of the other -parameters, see swe_calc().

- -

Barycentric positions are not -implemented. The difference between geocentric and heliocentric fix star -position is noticeable and arises from parallax and gravitational deflection.

- -

Attention:swe_fixstar()does -not compute speedsof the fixed stars. If you need them, -you have to compute them on your own, calling swe_fixstar()for a second ( and third ) time.

- -

 

- -

4.3 swe_fixstar_mag()

- -

long swe_fixstar_mag(char *star, double* mag, char* serr);

- -

 

- -

Function calculates the magnitude of -a fixed star. The function returns OK or ERR. The magnitude value is returned -in the parameter mag.

- -

For the definition and use of the -parameter star see function swe_fixstar(). The -parameter serr and is, as usually, an error -string pointer.

- -

 

- -

5. Apsides functions

- -

5.1 swe_nod_aps_ut

- -

The functions swe_nod_aps_ut() and swe_nod_aps() compute planetary nodes and apsides ( perihelia, aphelia, second focal -points of the orbital ellipses ). Both functions do exactly the same except -that they expect a different time parameter (cf. swe_calc_ut() and swe_calc() ).

- -

 

- -

The definitions are:

- -

 

- -

int32 swe_nod_aps_ut(double tjd_ut, int32 ipl, int32 iflag, int32 method, double *xnasc, double *xndsc, double *xperi, double *xaphe, char *serr);

- -

where

- -

tjd_ut             =Julian -day in Universal Time

- -

ipl              =planet -number

- -

iflag             =same -as with swe_calc_ut() and swe_fixstar_ut()

- -

method             =another -integer that specifies the calculation method, see explanations below

- -

xnasc             =array -of 6 doubles for ascending node

- -

xndsc             =array -of 6 doubles for descending node

- -

xperi             =array -of 6 doubles for perihelion

- -

xaphe             =array -of 6 doubles for aphelion

- -

serr[256]              =character -string to contain error messages in case of error.

- -

5.2 swe_nod_aps()

- -

int32 swe_nod_aps(double -tjd_et, int32 ipl, int32 iflag, int32 method, double *xnasc, double *xndsc, -double *xperi, double *xaphe, char *serr);

- -

same, but

- -

tjd_et     =     Julian day in Ephemeris Time

- -

 

- -

The parameter iflag allows the same specifications as with the function swe_calc_ut(). I.e., it contains the Ephemeris flag, the heliocentric, -topocentric, speed, nutation flags etc. etc.

- -

The parameter method -tells the function what kind of nodes or apsides are required:

- -

#define SE_NODBIT_MEAN          1

- -

 

- -

This is also the default. Mean nodes -and apsides are calculated for the bodies that have them, i.e. for the Moon and -the planets Mercury through Neptune, osculating ones for Pluto and the -asteroids.

- -

#define -SE_NODBIT_OSCU          2

- -

 

- -

Osculating nodes and apsides are -calculated for all bodies.

- -

#define -SE_NODBIT_OSCU_BAR     4

- -

 

- -

Osculating nodes and apsides are -calculated for all bodies. With planets beyond Jupiter, they are computed from -a barycentric ellipse. Cf. the explanations in swisseph.doc.

- -

 

- -

If this bit is combined with -SE_NODBIT_MEAN, mean values are given for the planets Mercury - Neptun.

- -

#define -SE_NODBIT_FOPOINT     256

- -

 

- -

The second focal point of the orbital -ellipse is computed and returned in the array of the aphelion. This bit can be -combined with any other bit.

- -

 

- -

It is not meaningful to compute mean -oribital elements topocentrically. The concept of mean elements precludes -consideration of any short term fluctuations in coordinates.

- -

 

- -

6. Eclipse and planetary phenomena functions

- -

 

- -

There are the following functions -for eclipse and occultation calculations.

- -

 

- -

Solar eclipses:

- -

·         -swe_sol_eclipse_when_loc( tjd...) finds -the next eclipse for a given geographic position.

- -

·         -swe_sol_eclipse_when_glob( tjd...) -finds the next eclipse globally.

- -

·         -swe_sol_eclipse_where() computes the -geographic location of a solar eclipse for a given tjd.

- -

·         -swe_sol_eclipse_how() computes -attributes of a solar eclipse for a given tjd, -geographic longitude, -latitude and height.

- -

 

- -

Occultations of planets by the moon:

- -

These functions can also be used for -solar eclipses. But they are slightly less efficient.

- -

·         -swe_lun_occult_when_loc( tjd...) finds -the next occultation for a body and a given geographic position.

- -

·         -swe_lun_occult_when_glob( tjd...) finds -the next occultation of a given body globally.

- -

·         -swe_lun_occult_where() computes the -geographic location of an occultation for a given tjd.

- -

 

- -

Lunar eclipses:

- -

·         -swe_lun_eclipse_when(tjd...) finds the -next lunar eclipse.

- -

·         -swe_lun_eclipse_how() computes the attributes of a lunar eclipse for a given tjd.

- -

 

- -

Risings, settings, and meridian -transits of planets and stars:

- -

·         -swe_rise_trans()

- -

·         -swe_rise_trans_true_hor( ) -returns rising and setting times for a local horizon with altitude != 0

- -

 

- -

Planetary phenomena:

- -

·         -swe_pheno_ut() and swe_pheno() compute phase angle, phase, elongation, apparent diameter, and -apparent magnitude of the Sun, the Moon, all planets and asteroids.

- -

 

- -

6.0. -Example of a typical eclipse calculation

- -

Find -the next total eclipse, calculate the geographical position where it is maximal -and the four contacts for that position (for a detailed explanation of all -eclipse functions see the next chapters):

- -

 

- -

double tret[10], -attr[20], geopos[10];

- -

char -serr[255];

- -

int32 -whicheph = 0; /* default ephemeris */

- -

double -tjd_start = 2451545; /* Julian day number for 1 Jan 2000 */

- -

int32 -ifltype = SE_ECL_TOTAL ¦ SE_ECL_CENTRAL ¦ SE_ECL_NONCENTRAL;

- -

/* find -next eclipse anywhere on earth */

- -

eclflag = -swe_sol_eclipse_when_glob(tjd_start, whicheph,  -ifltype, tret, 0, serr);

- -

if (eclflag == -ERR)

- -

  return ERR;

- -

/* the -time of the greatest eclipse has been returned in tret[0];

- -

 * now we can find geographical position of -the eclipse maximum */

- -

tjd_start -= tret[0];

- -

eclflag = -swe_sol_eclipse_where(tjd_start, whicheph, geopos, attr, serr);

- -

if (eclflag == -ERR)

- -

  return ERR;

- -

/* the -geographical position of the eclipse maximum is in geopos[0] and geopos[1];

- -

 * now we can calculate the four contacts for -this place. The start time is chosen

- -

 * a day before the maximum eclipse: */

- -

tjd_start -= tret[0] - 1;

- -

eclflag = -swe_sol_eclipse_when_loc(tjd_start, whicheph, geopos, tret, attr, 0, serr);

- -

if (eclflag == -ERR)

- -

  return ERR;

- -

/* now -tret[] contains the following values:

- -

 * tret[0] = time of greatest eclipse (Julian -day number)

- -

 * tret[1] = first contact

- -

 * tret[2] = second contact

- -

 * tret[3] = third contact

- -

 * tret[4] = fourth contact */

- -

 

- -

6.1. swe_sol_eclipse_when_loc() and -swe_lun_occult_when_loc()

- -

 

- -

To find the next -eclipse for a given geographic position, use swe_sol_eclipse_when_loc().

- -

 

- -

int32 swe_sol_eclipse_when_loc(

- -

double -tjd_start,      /* start date for search, -Jul. day UT */

- -

int32 ifl,      /* -ephemeris flag */

- -

double -*geopos,      /* 3 doubles for geo. lon, -lat, height eastern longitude is positive,

- -

                -western longitude is negative,  -northern latitude is positive,

- -

                -southern latitude is negative */

- -

double -*tret,      /* return array, 10 doubles, -see below */

- -

double -*attr,      /* return array, 20 doubles, -see below */

- -

AS_BOOL -backward,      /* TRUE, if backward search -*/

- -

char -*serr);     /* return error string */

- -

 

- -

The function returns:

- -

/* retflag     -1 (ERR) on error (e.g. if swe_calc() for -sun or moon fails)

- -

              SE_ECL_TOTAL or SE_ECL_ANNULAR or -SE_ECL_PARTIAL

- -

              SE_ECL_VISIBLE,

- -

              SE_ECL_MAX_VISIBLE,

- -

              SE_ECL_1ST_VISIBLE, SE_ECL_2ND_VISIBLE

- -

              SE_ECL_3ST_VISIBLE, SE_ECL_4ND_VISIBLE

- -

 

- -

  tret[0]     time of maximum eclipse

- -

  tret[1]     time -of first contact

- -

  tret[2]     time -of second contact

- -

  tret[3]     time -of third contact

- -

  tret[4]     time -of forth contact

- -

  tret[5]     time -of sunrise between first and forth contact (not implemented so far)

- -

  tret[6]     time -of sunset beween first and forth contact  -(not implemented so far)

- -

 

- -

 attr[0]     fraction -of solar diameter covered by moon;

- -

               with total/annular eclipses, it results in -magnitude acc. to IMCCE.

- -

 attr[1]     ratio -of lunar diameter to solar one

- -

 attr[2]     fraction -of solar disc covered by moon (obscuration)

- -

 attr[3]     diameter -of core shadow in km

- -

 attr[4]     azimuth -of sun at tjd

- -

 attr[5]     true -altitude of sun above horizon at tjd

- -

 attr[6]     apparent -altitude of sun above horizon at tjd

- -

 attr[7]     elongation -of moon in degrees

- -

 attr[8]             magnitude acc. to NASA;

- -

                       = attr[0] for -partial and attr[1] for annular and total eclipses

- -

 attr[9]     saros -series number

- -

 attr[10]     saros -series member number

- -

*/

- -

 

- -

6.2. swe_sol_eclipse_when_glob()

- -

 

- -

To find the next -eclipse globally:

- -

int32 swe_sol_eclipse_when_glob(

- -

double tjd_start,      /* start date for search, Jul. day UT */

- -

int32 ifl,      /* -ephemeris flag */

- -

int32 ifltype,      /* eclipse type wanted: SE_ECL_TOTAL etc. or 0, if any eclipse -type */

- -

double *tret,      /* return array, 10 doubles, see below */

- -

AS_BOOL backward,      /* TRUE, if backward search */

- -

char *serr);       /* return error string */

- -

 

- -

This function requires the time -parameter tjd_start in Universal Time and also yields the -return values (tret[]) in UT.  For conversions between ET and UT, use the -function swe_deltat().

- -

 

- -

Note: An implementation of this -function with parameters in Ephemeris Time would have been possible. The -question when the next solar eclipse will happen anywhere on earth is -independent of the rotational position of the earth and therefore independent -of Delta T. However, the function is often used in combination with other -eclipse functions (see example below), for which input and output in ET makes -no sense, because they concern local circumstances of an eclipse and therefore are dependent on the rotational position -of the earth. For this reason, UT has been chosen for the time parameters of -all eclipse functions.

- -

 

- -

ifltype specifies the eclipse type -wanted. It can be a combination of the following bits (see swephexp.h):

- -

 

- -

#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

- -

 

- -

Recommended -values for ifltype:

- -

/* search for any eclipse, no matter which type */

- -

ifltype = -0; 

- -

/* search -a total eclipse; note: non-central total eclipses are very rare */

- -

ifltype = -SE_ECL_TOTAL ¦ SE_ECL_CENTRAL ¦ SE_ECL_NONCENTRAL;

- -

/* search -an annular eclipse */

- -

ifltype = -SE_ECL_TOTAL ¦ SE_ECL_CENTRAL ¦ SE_ECL_NONCENTRAL;

- -

/* search -an annular-total (hybrid) eclipse */

- -

ifltype_ = -SE_ECL_ANNULAR_TOTAL ¦ SE_ECL_CENTRAL ¦ SE_ECL_NONCENTRAL;

- -

/* search -a partial eclipse */

- -

ifltype = -SE_ECL_PARTIAL;

- -

 

- -

If your code -does not work, please study the sample code in swetest.c.

- -

 

- -

The function returns:

- -

 

- -

/* -retflag     -1 (ERR) on error (e.g. if -swe_calc() for sun or moon fails)

- -

              SE_ECL_TOTAL -or SE_ECL_ANNULAR or SE_ECL_PARTIAL or SE_ECL_ANNULAR_TOTAL

- -

              SE_ECL_CENTRAL

- -

              SE_ECL_NONCENTRAL

- -

 

- -

  tret[0]     time -of maximum eclipse

- -

  tret[1]     time, -when eclipse takes place at local apparent noon

- -

  tret[2]     time -of eclipse begin

- -

  tret[3]     time -of eclipse end

- -

  tret[4]     time -of totality begin

- -

  tret[5]     time -of totality end

- -

  tret[6]     time -of center line begin

- -

  tret[7]     time -of center line end

- -

  tret[8]     time -when annular-total eclipse becomes total not implemented so far

- -

  tret[9]     time -when annular-total eclipse becomes annular again not implemented so far

- -

 

- -

         declare as tret[10] at -least !

- -

 */

- -

6.3. swe_sol_eclipse_how ()

- -

 

- -

To calculate the attributes of an eclipse for a given geographic position -and time:

- -

 

- -

int32 swe_sol_eclipse_how(

- -

double -tjd_ut,      /* time, Jul. day UT */

- -

int32 ifl,      /* -ephemeris flag */

- -

double -*geopos     /* geogr. longitude, latitude, -height above sea

- -

                     * eastern longitude is -positive,

- -

               * western longitude is negative,

- -

               * northern latitude is positive,

- -

               * southern latitude is negative */

- -

double -*attr,      /* return array, 20 doubles, -see below */

- -

char -*serr);     /* return error string */

- -

 

- -

/* retflag -     -1 (ERR) on error (e.g. if swe_calc() -for sun or moon fails)

- -

              SE_ECL_TOTAL or SE_ECL_ANNULAR or -SE_ECL_PARTIAL

- -

               0, -if no eclipse is visible at geogr. position.

- -

 

- -

 attr[0]     fraction -of solar diameter covered by moon;

- -

               with total/annular eclipses, it results in -magnitude acc. to IMCCE.

- -

 attr[1]     ratio -of lunar diameter to solar one

- -

 attr[2]     fraction -of solar disc covered by moon (obscuration)

- -

 attr[3]     diameter -of core shadow in km

- -

 attr[4]     azimuth -of sun at tjd

- -

 attr[5]     true -altitude of sun above horizon at tjd

- -

 attr[6]     apparent -altitude of sun above horizon at tjd

- -

 attr[7]     elongation -of moon in degrees

- -

 attr[8]             magnitude acc. to NASA;

- -

                       = attr[0] for -partial and attr[1] for annular and total eclipses

- -

 attr[9]     saros -series number

- -

 attr[10]     saros -series member number

- -

 

- -

6.4. swe_sol_eclipse_where ()

- -

 

- -

This function can be used to find out the geographic position, where, for a -given time, a central eclipse is central or where a non-central eclipse is -maximal.

- -

If you want to draw the eclipse path of a total or annular eclipse on -a map, first compute the start and end time of the total or annular phase with swe_sol_eclipse_when_glob(), then call swe_sol_eclipse_how() for several -time intervals to get geographic positions on the central path. The northern -and southern limits of the umbra and penumbra are -not implemented yet.

- -

 

- -

int32 swe_sol_eclipse_where(

- -

double tjd_ut,      /* time, Jul. day UT */

- -

int32 ifl,      /* -ephemeris flag */

- -

double *geopos,     /* return array, 2 doubles, geo. long. and lat.

- -

               * eastern longitude is positive,

- -

               * western longitude is negative,

- -

               * northern latitude is positive,

- -

               * southern latitude is negative */

- -

double *attr,      /* return array, 20 doubles, see below */

- -

char *serr);       /* return error string */

- -

The function returns:

- -

 

- -

/* -1 (ERR)     on error (e.g. if swe_calc() for sun or moon fails)

- -

  0      if there is no solar eclipse at tjd

- -

  -SE_ECL_TOTAL

- -

  -SE_ECL_ANNULAR

- -

  -SE_ECL_TOTAL | SE_ECL_CENTRAL

- -

  -SE_ECL_TOTAL | SE_ECL_NONCENTRAL

- -

  -SE_ECL_ANNULAR | SE_ECL_CENTRAL

- -

  SE_ECL_ANNULAR | SE_ECL_NONCENTRAL

- -

  SE_ECL_PARTIAL

- -

 

- -

  -geopos[0]:     geographic longitude -of central line

- -

  -geopos[1]:     geographic latitude -of central line

- -

 

- -

  -not implemented so far:

- -

  -geopos[2]:     geographic longitude -of northern limit of umbra

- -

  -geopos[3]:     geographic latitude -of northern limit of umbra

- -

  -geopos[4]:     geographic longitude -of southern limit of umbra

- -

  -geopos[5]:     geographic latitude -of southern limit of umbra

- -

  -geopos[6]:     geographic longitude -of northern limit of penumbra

- -

  -geopos[7]:     geographic latitude -of northern limit of penumbra

- -

  -geopos[8]:     geographic longitude -of southern limit of penumbra

- -

  -geopos[9]:     geographic latitude -of southern limit of penumbra

- -

 

- -

  -eastern longitudes are positive,

- -

  -western longitudes are negative,

- -

  -northern latitudes are positive,

- -

  -southern latitudes are negative

- -

 

- -

  -attr[0]     fraction of solar -diameter covered by the moon

- -

  -attr[1]     ratio of lunar diameter -to solar one

- -

  -attr[2]     fraction of solar disc -covered by moon (obscuration)

- -

  -attr[3]     diameter of core shadow -in km

- -

  -attr[4]     azimuth of sun at tjd

- -

  -attr[5]     true altitude of sun -above horizon at tjd

- -

  -attr[6]     apparent altitude of -sun above horizon at tjd

- -

  -attr[7]     angular distance of -moon from sun in degrees

- -

  attr[8]            eclipse -magnitude (= attr[0] or attr[1] depending on eclipse type)

- -

  attr[9]            saros -series number

- -

  attr[10]               saros -series member number

- -

 

- -

      declare as attr[20]!

- -

 */

- -

 

- -

6.5. swe_lun_occult_when_loc()

- -

To find the next occultation of a planet or star -by the moon for a given location, use swe_lun_occult_when_loc().

- -

The same -function can also be used for local solar eclipses instead of -swe_sol_eclipse_when_loc(), but is a bit less efficient.

- -

 

- -

/* Same declaration as -swe_sol_eclipse_when_loc().

- -

 * -In addition:

- -

 * -int32 ipl               planet number of occulted body

- -

 * -char* starname          name of occulted star. Must be NULL or -"", if a planetary

- -

 *                         occultation is to be calculated. For use of -this field,

- -

 *                             see swe_fixstar().

- -

 * -int32 ifl             ephemeris flag. If you want to have only one conjunction

- -

 *                         of the moon with the body tested, add the -following flag:

- -

 *                         backward |= SE_ECL_ONE_TRY. If this flag is -not set,

- -

 *                         the function will search for an occultation -until it

- -

 *                         finds one. For bodies with ecliptical -latitudes > 5,

- -

 *                         the function may search successlessly until -it reaches

- -

 *                         the end of the ephemeris.

- -

 */

- -

int32 swe_lun_occult_when_loc(

- -

double -tjd_start,      /* start date for search, -Jul. day UT */

- -

int32 ipl,      /* -planet number */

- -

char* starname,      /* -star name, must be NULL or ”” if not a star */

- -

int32 ifl,      /* -ephemeris flag */

- -

double -*geopos,      /* 3 doubles for geo. lon, -lat, height eastern longitude is positive,

- -

                -western longitude is negative,  -northern latitude is positive,

- -

                -southern latitude is negative */

- -

double -*tret,      /* return array, 10 doubles, -see below */

- -

double -*attr,      /* return array, 20 doubles, -see below */

- -

AS_BOOL -backward,      /* TRUE, if backward search -*/

- -

char -*serr);     /* return error string */

- -

 

- -

If an occultation of any planet is wanted, call the function for all planets you want to -consider and find the one with the smallest tret[1] (first contact). (If -searching backward, find the one with the greatest tret[1]). For efficiency, -set ifl |= SE_ECL_ONE_TRY. With this flag, only the next conjunction of the -moon with the bodies is checked. If no occultation has been found, repeat the -calculation with tstart = tstart + 20.

- -

 

- -

The function returns:

- -

/* retflag    

- -

         -1 (ERR) on error (e.g. if swe_calc() -for sun or moon fails)

- -

         0  -(if no occultation/no eclipse found)

- -

              SE_ECL_TOTAL or SE_ECL_ANNULAR or -SE_ECL_PARTIAL

- -

              SE_ECL_VISIBLE,

- -

              SE_ECL_MAX_VISIBLE,

- -

              SE_ECL_1ST_VISIBLE, SE_ECL_2ND_VISIBLE

- -

              SE_ECL_3ST_VISIBLE, SE_ECL_4ND_VISIBLE

- -

  These return values (except the -SE_ECL_ANNULAR) also appear with occultations.

- -

 

- -

  tret[0]     time -of maximum eclipse

- -

  tret[1]     time -of first contact

- -

  tret[2]     time -of second contact

- -

  tret[3]     time -of third contact

- -

  tret[4]     time -of forth contact

- -

  tret[5]     time -of sunrise between first and forth contact (not implemented so far)

- -

  tret[6]     time -of sunset beween first and forth contact  -(not implemented so far)

- -

 

- -

  attr[0]     fraction -of solar diameter covered by moon (magnitude)

- -

  attr[1]     ratio -of lunar diameter to solar one

- -

  attr[2]     fraction -of solar disc covered by moon (obscuration)

- -

  attr[3]     diameter -of core shadow in km

- -

  attr[4]     azimuth -of sun at tjd

- -

  attr[5]     true -altitude of sun above horizon at tjd

- -

  attr[6]     apparent -altitude of sun above horizon at tjd

- -

  attr[7]     elongation -of moon in degrees     */

- -

 

- -

6.6. swe_lun_occult_when_glob()

- -

To find the next occultation of a planet or star -by the moon globally (not for a particular geographic location), use -swe_lun_occult_when_glob().

- -

The same -function can also be used for global solar eclipses instead of -swe_sol_eclipse_when_glob(), but is a bit less efficient.

- -

 

- -

/* Same declaration as -swe_sol_eclipse_when_glob().

- -

 * -In addition:

- -

 * -int32 ipl               planet number of occulted body

- -

 * -char* starname          name of occulted star. Must be NULL or -"", if a planetary

- -

 *                         occultation is to be calculated. For use of -this field,

- -

 *                             see -swe_fixstar().

- -

 * -int32 ifl             ephemeris flag. If you want to have only one conjunction

- -

 *                         of the moon with the body tested, add the -following flag:

- -

 *                         backward |= SE_ECL_ONE_TRY. If this flag is -not set,

- -

 *                         the function will search for an occultation -until it

- -

 *                         finds one. For bodies with ecliptical -latitudes > 5,

- -

 *                         the function may search successlessly until -it reaches

- -

 *                         the -end of the ephemeris.

- -

 */

- -

int32 swe_lun_occult_when_glob(

- -

double -tjd_start,      /* start date for search, -Jul. day UT */

- -

int32 ipl,      /* -planet number */

- -

char* starname,      /* -star name, must be NULL or ”” if not a star */

- -

int32 ifl,      /* -ephemeris flag */

- -

int32 ifltype,      /* -eclipse type wanted */

- -

double -*geopos,      /* 3 doubles for geo. lon, -lat, height eastern longitude is positive,

- -

                -western longitude is negative,  -northern latitude is positive,

- -

                -southern latitude is negative */

- -

double -*tret,      /* return array, 10 doubles, -see below */

- -

AS_BOOL -backward,      /* TRUE, if backward search -*/

- -

char -*serr);     /* return error string */

- -

 

- -

If an occultation of any planet is wanted, call the function for all planets you want to -consider and find the one with the smallest tret[1] (first contact). (If -searching backward, find the one with the greatest tret[1]). For efficiency, -set ifl |= SE_ECL_ONE_TRY. With this flag, only the next conjunction of the -moon with the bodies is checked. If no occultation has been found, repeat the -calculation with tstart = tstart + 20.

- -

 

- -

The function returns:

- -

 

- -

/* -retflag    

- -

         -1 (ERR) on error (e.g. if swe_calc() -for sun or moon fails)

- -

         0  -(if no occultation / eclipse has been found)

- -

              SE_ECL_TOTAL -or SE_ECL_ANNULAR or SE_ECL_PARTIAL or SE_ECL_ANNULAR_TOTAL

- -

              SE_ECL_CENTRAL

- -

              SE_ECL_NONCENTRAL

- -

 

- -

  tret[0]     time -of maximum eclipse

- -

  tret[1]     time, -when eclipse takes place at local apparent noon

- -

  tret[2]     time -of eclipse begin

- -

  tret[3]     time -of eclipse end

- -

  tret[4]     time -of totality begin

- -

  tret[5]     time -of totality end

- -

  tret[6]     time -of center line begin

- -

  tret[7]     time -of center line end

- -

  tret[8]     time -when annular-total eclipse becomes total not implemented so far

- -

  tret[9]     time -when annular-total eclipse becomes annular again not implemented so far

- -

 

- -

         declare as tret[10] at -least !

- -

 */

- -

 

- -

6.7. swe_lun_occult_where ()

- -

 

- -

Similar to swe_sol_eclipse_where(), -this function can be used to find out the geographic position, where, for a -given time, a central eclipse is central or where a non-central eclipse is -maximal. With occultations, it tells us, at which geographic location the -occulted body is in the middle of the lunar disc or closest to it. Because -occultations are always visible from a very large area, this is not very -interesting information. But it may

- -

become more interesting as soon as -the limits of the umbra (and penumbra) will be implemented.

- -

 

- -

int32 swe_lun_occult_where (

- -

double tjd_ut,      /* time, Jul. day UT */

- -

int32 ipl,      /* -planet number */

- -

char* starname,      /* -star name, must be NULL or ”” if not a star */

- -

int32 ifl,      /* -ephemeris flag */

- -

double *geopos,     /* return array, 2 doubles, geo. long. and lat.

- -

               * eastern longitude is positive,

- -

               * western longitude is negative,

- -

               * northern latitude is positive,

- -

               * southern latitude is negative */

- -

double *attr,      /* return array, 20 doubles, see below */

- -

char *serr);       /* return error string */

- -

The function returns:

- -

 

- -

/* -1 (ERR)     on error (e.g. if swe_calc() for sun or moon fails)

- -

  0      if there is no solar eclipse (occultation) -at tjd

- -

  -SE_ECL_TOTAL

- -

  -SE_ECL_ANNULAR

- -

  -SE_ECL_TOTAL | SE_ECL_CENTRAL

- -

  -SE_ECL_TOTAL | SE_ECL_NONCENTRAL

- -

  -SE_ECL_ANNULAR | SE_ECL_CENTRAL

- -

  SE_ECL_ANNULAR | SE_ECL_NONCENTRAL

- -

  SE_ECL_PARTIAL

- -

 

- -

  -geopos[0]:     geographic longitude -of central line

- -

  -geopos[1]:     geographic latitude -of central line

- -

 

- -

  -not implemented so far:

- -

  -geopos[2]:     geographic longitude -of northern limit of umbra

- -

  -geopos[3]:     geographic latitude -of northern limit of umbra

- -

  -geopos[4]:     geographic longitude -of southern limit of umbra

- -

  -geopos[5]:     geographic latitude -of southern limit of umbra

- -

  -geopos[6]:     geographic longitude -of northern limit of penumbra

- -

  -geopos[7]:     geographic latitude -of northern limit of penumbra

- -

  -geopos[8]:     geographic longitude -of southern limit of penumbra

- -

  -geopos[9]:     geographic latitude -of southern limit of penumbra

- -

 

- -

  -eastern longitudes are positive,

- -

  -western longitudes are negative,

- -

  -northern latitudes are positive,

- -

  -southern latitudes are negative

- -

 

- -

  -attr[0]     fraction of solar -diameter covered by moon (magnitude)

- -

  -attr[1]     ratio of lunar diameter -to solar one

- -

  -attr[2]     fraction of solar disc -covered by moon (obscuration)

- -

  -attr[3]     diameter of core shadow -in km

- -

  -attr[4]     azimuth of sun at tjd

- -

  -attr[5]     true altitude of sun -above horizon at tjd

- -

  -attr[6]     apparent altitude of -sun above horizon at tjd

- -

  -attr[7]     angular distance of -moon from sun in degrees

- -

 

- -

      declare as attr[20]!

- -

 */

- -

6.8. swe_lun_eclipse_when ()

- -

To find the next -lunar eclipse:

- -

 

- -

int32 swe_lun_eclipse_when(

- -

double tjd_start,      /* start date for search, Jul. day UT */

- -

int32 ifl,      /* -ephemeris flag */

- -

int32 ifltype,      /* eclipse type wanted: SE_ECL_TOTAL etc.  or 0, if any eclipse type */

- -

double *tret,      /* return array, 10 doubles, see below */

- -

AS_BOOL backward,      /* TRUE, if backward search */

- -

char *serr);       /* return error string */

- -

 

- -

Recommended -values for ifltype:

- -

/* search for any lunar eclipse, no matter which type */

- -

ifltype = -0; 

- -

/* search -a total lunar eclipse */

- -

ifltype = -SE_ECL_TOTAL;

- -

/* search -a partial lunar eclipse */

- -

ifltype = -SE_ECL_PARTIAL;

- -

/* search -a penumbral lunar eclipse */

- -

ifltype = -SE_ECL_PENUMBRAL;

- -

 

- -

If your code -does not work, please study the sample code in swetest.c.

- -

 

- -

The function returns:

- -

 

- -

/* retflag      -1 (ERR) on error (e.g. if swe_calc() for sun or moon fails)

- -

              SE_ECL_TOTAL -or SE_ECL_PENUMBRAL or SE_ECL_PARTIAL

- -

  -tret[0]     time of maximum eclipse

- -

  -tret[1] 

- -

  -tret[2]     time of partial phase -begin (indices consistent with solar eclipses)

- -

  -tret[3]     time of partial phase -end

- -

  -tret[4]     time of totality begin

- -

  -tret[5]     time of totality end

- -

  -tret[6]     time of penumbral phase -begin

- -

  -tret[7]     time of penumbral phase -end

- -

 */

- -

 

- -

6.9. swe_lun_eclipse_how ()

- -

 

- -

This function computes the attributes of a lunar eclipse at a given time:

- -

 

- -

int32 swe_lun_eclipse_how(

- -

double tjd_ut,      /* time, Jul. day UT */

- -

int32 ifl,      /* -ephemeris flag */

- -

double *geopos,      /* input array, geopos, geolon, geoheight

- -

               eastern longitude is positive,

- -

               western longitude is negative,

- -

               northern latitude is positive,

- -

               southern latitude is negative */

- -

double *attr,      /* return array, 20 doubles, see below */

- -

char *serr);       /* return error string */

- -

 

- -

The function returns:

- -

 

- -

/* retflag      -1 (ERR) on error (e.g. if swe_calc() for sun or moon fails)

- -

              SE_ECL_TOTAL -or SE_ECL_PENUMBRAL or SE_ECL_PARTIAL

- -

               0   -if there is no eclipse

- -

 

- -

attr[0]     umbral -magnitude at tjd

- -

attr[1]     penumbral -magnitude

- -

attr[4]     azimuth -of moon at tjd. Not implemented so far

- -

attr[5]     true -altitude of moon above horizon at tjd. Not implemented so far

- -

attr[6]     apparent -altitude of moon above horizon at tjd. Not implemented so far

- -

attr[7]     distance -of moon from opposition in degrees

- -

attr[8]              eclipse magnitude (= attr[0])

- -

attr[9]              saros series number

- -

attr[10]            saros series member number

- -

 

- -

          -declare -as attr[20] at least !

- -

 */

- -

6.10. swe_rise_trans() and swe_rise_trans_true_hor() -(risings, settings, meridian transits)

- -

 

- -

The function swe_rise_trans() -computes the times of rising, setting and meridian -transits for all planets, asteroids, the moon, and the fixed stars. The -function swe_rise_trans_true_hor() does the same for a local horizon that has -an altitude != 0. Their definitions are as follows:

- -

 

- -

int32 swe_rise_trans(

- -

double tjd_ut,      /* search after this time (UT) */

- -

int32 ipl,           /* planet number, if -planet or moon */

- -

char *starname,      /* star name, if star */

- -

int32 epheflag,      /* ephemeris flag */

- -

int32 rsmi,          /* integer specifying -that rise, set, orone of the two meridian transits is

- -

               wanted. see definition below */

- -

double *geopos,      /* array of three doubles containing

- -

               * geograph. long., lat., height of observer -*/

- -

double atpress,      /* atmospheric pressure in mbar/hPa */

- -

double attemp,     /* atmospheric temperature in deg. C */

- -

double *tret,          /* return address -(double) for rise time etc. */

- -

char *serr);       /* return address for -error message */

- -

 

- -

int32 swe_rise_trans_true_hor(

- -

double tjd_ut,      /* search after this time (UT) */

- -

int32 ipl,           /* planet number, if -planet or moon */

- -

char *starname,      /* star name, if star */

- -

int32 epheflag,      /* ephemeris flag */

- -

int32 rsmi,          /* integer specifying -that rise, set, orone of the two meridian transits is

- -

               wanted. see definition below */

- -

double *geopos,      /* array of three doubles containing

- -

               * geograph. long., lat., height of observer -*/

- -

double atpress,      /* atmospheric pressure in mbar/hPa */

- -

double attemp,     /* atmospheric temperature in deg. C */

- -

double horhgt,     /* height of local horizon in deg at the point where the body -rises or sets*/

- -

double *tret,          /* return address -(double) for rise time etc. */

- -

char *serr);       /* return address for -error message */

- -

 

- -

The second function has one -additional parameter horhgt for the height of the local horizon at the point -where the body rises or sets.

- -

 

- -

The variable -rsmi can have the following values:

- -

 

- -

/* -for swe_rise_transit() and swe_rise_transit_true_hor() */

- -

#define SE_CALC_RISE     1

- -

#define SE_CALC_SET     2

- -

#define -SE_CALC_MTRANSIT     4     /* upper meridian transit (southern for -northern geo. latitudes) */

- -

#define -SE_CALC_ITRANSIT     8     /* lower meridian transit (northern, below -the horizon) */

- -

/* -the following bits can be added (or’ed) to SE_CALC_RISE or SE_CALC_SET */

- -

#define -SE_BIT_DISC_CENTER         256     /* for rising or setting of disc center -*/

- -

#define SE_BIT_DISC_BOTTOM      -8192     /* for rising or setting -of lower limb of disc */

- -

#define -SE_BIT_NO_REFRACTION    512      /* if refraction is not to be -considered */

- -

#define -SE_BIT_CIVIL_TWILIGHT    1024    /* in order to calculate civil twilight -*/

- -

#define -SE_BIT_NAUTIC_TWILIGHT 2048    /* -in order to calculate nautical twilight */

- -

#define -SE_BIT_ASTRO_TWILIGHT   4096    /* in order to calculate astronomical -twilight */

- -

#define SE_BIT_FIXED_DISC_SIZE (16*1024) /* neglect the effect of -distance on disc size */

- -

 

- -

rsmi = 0 will return risings.

- -

The rising times depend on the atmospheric pressure and temperature. atpress expects the atmospheric pressure in millibar (hectopascal); attemp the temperature in degrees Celsius.

- -

If atpress is given the value 0, the function estimates the pressure from the -geographical altitude given in geopos[2] and attemp. If -geopos[2] is 0, atpress will be estimated for sea level.

- -

 

- -

 

- -

6.11. swe_pheno_ut() and swe_pheno(), -planetary phenomena

- -

 

- -

These functions compute phase, phase angle, elongation, apparent diameter, -apparent magnitude for the Sun, the Moon, all planets and asteroids. The -two functions do exactly the same but expect a different time parameter.

- -

 

- -

int32 swe_pheno_ut(

- -

double tjd_ut,     /* time Jul. Day UT */

- -

int32 ipl,           /* planet number */

- -

int32 iflag,      /* -ephemeris flag */

- -

double *attr,      /* return array, 20 doubles, see below */

- -

char *serr);       /* return error string */

- -

 

- -

int32 swe_pheno(

- -

double tjd_et,     /* time Jul. Day ET */

- -

int32 ipl,           /* planet number */

- -

int32 iflag,      /* ephemeris flag */

- -

double *attr,      /* return array, 20 doubles, see below */

- -

char *serr);       /* return error string */

- -

 

- -

The function returns:

- -

/*

- -

  -attr[0] = phase angle (earth-planet-sun)

- -

  -attr[1] = phase (illumined fraction of disc)

- -

  -attr[2] = elongation of planet

- -

  -attr[3] = apparent diameter of disc

- -

  -attr[4] = apparent magnitude

- -

 

- -

          -declare -as attr[20] at least !

- -

 

- -

  -Note: the lunar magnitude is quite a complicated thing,

- -

  -but our algorithm is very simple.

- -

  -The phase of the moon, its distance from the earth and

- -

  -the sun is considered, but no other factors.

- -

 

- -

  iflag also allows SEFLG_TRUEPOS, SEFLG_HELCTR

- -

 */

- -

 

- -

6.12. swe_azalt(), horizontal coordinates, -azimuth, altitude

- -

 

- -

swe_azalt()computes the horizontal coordinates -(azimuth and altitude) of a planet or a star from either ecliptical or -equatorial coordinates.

- -

 

- -

void swe_azalt(

- -

      double tjd_ut,     // -UT

- -

      -int32 calc_flag,     // SE_ECL2HOR or SE_EQU2HOR

- -

      double *geopos,     // array of 3 doubles: geograph. long., -lat., height

- -

      double atpress,     // atmospheric pressure in mbar (hPa)

- -

      double attemp,     // atmospheric temperature in degrees -Celsius

- -

      double *xin,      // array of 3 doubles: position of body in -either  ecliptical or equatorial -coordinates,

- -

                     // depending on calc_flag

- -

      double *xaz);      // return array of 3 doubles, containing -azimuth, true altitude, apparent altitude

- -

 

- -

If calc_flag=SE_ECL2HOR, -set xin[0]= ecl. long., xin[1]= ecl. lat., (xin[2]=distance (not required));

- -

else

- -

if calc_flag= -SE_EQU2HOR, set xin[0]=rectascension, xin[1]=declination, (xin[2]= distance -(not required));

- -

 

- -

#define -SE_ECL2HOR          0

- -

#define -SE_EQU2HOR          1

- -

 

- -

The return values are:

- -

xaz[0] = azimuth, -i.e. position degree, measured from the south point to west.

- -

xaz[1] = true altitude -above horizon in degrees.

- -

xaz[2] = apparent (refracted) altitude -above horizon in degrees.

- -

 

- -

The apparent altitude of a body -depends on the atmospheric pressure and temperature. If only the true altitude -is required, these parameters can be neglected.

- -

If atpress is given the value 0, the function estimates the pressure from the -geographical altitude given in geopos[2] and attemp. If geopos[2] is 0, atpress will be estimated for sea level.

- -

 

- -

6.13. swe_azalt_rev()

- -

The function swe_azalt_rev()is not precisely the reverse of swe_azalt(). It computes either ecliptical or equatorial coordinates from -azimuth and true altitude. If only an apparent altitude is given, the true -altitude has to be computed first with the function swe_refrac() (see below).

- -

It is defined as follows:

- -

 

- -

void swe_azalt_rev(

- -

      -double tjd_ut,

- -

      int32 calc_flag,     /* either SE_HOR2ECL or SE_HOR2EQU */

- -

      -double *geopos,     /* array of 3 -doubles for geograph. pos. of observer */

- -

      -double *xin,      /* array of 2 doubles for azimuth and true -altitude of planet */

- -

      -double *xout);      // return array -of 2 doubles for either ecliptic or

- -

                   // -equatorial coordinates, depending on calc_flag

- -

 

- -

For the definition of the azimuth -and true altitude, see chapter 4.9 on swe_azalt().

- -

#define -SE_HOR2ECL     0

- -

#define -SE_HOR2EQU          1

- -

6.14. swe_refrac(), -swe_refract_extended(), refraction

- -

The refraction -function swe_refrac()calculates either the true altitude from -the apparent altitude or the apparent altitude from the apparent altitude. Its -definition is:

- -

 

- -

double swe_refrac(

- -

double inalt,

- -

double atpress,      /* atmospheric pressure in mbar (hPa) */

- -

double attemp,      /* atmospheric temperature in degrees Celsius */

- -

int32 calc_flag);     /* either SE_TRUE_TO_APP or SE_APP_TO_TRUE */

- -

where

- -

#define SE_TRUE_TO_APP  0

- -

#define SE_APP_TO_TRUE       1

- -

 

- -

The refraction depends on the -atmospheric pressure and temperature at the location of the observer.

- -

If atpress is given the value 0, the function estimates the pressure from the -geographical altitude given in geopos[2] and attemp. If geopos[2] is 0, atpress will be estimated for sea level.

- -

 

- -

There is also a more sophisticated -function swe_refrac_extended(),  It allows correct -calculation of refraction for altitudes above sea > 0, where the ideal -horizon and planets that are visible may have a negative height. (for -swe_refrac(), negative apparent heights do not exist!)

- -

 

- -

double swe_refract_extended(

- -

double inalt,      /* altitude of object above geometric horizon in degrees, where

- -

                           geometric horizon = plane perpendicular to -gravity */

- -

double geoalt,      /* altitude of observer above sea level in meters */

- -

double atpress,      /* atmospheric pressure in mbar (hPa) */

- -

double lapse_rate,      /* (dattemp/dgeoalt) = [°K/m] */

- -

double attemp,      /* atmospheric temperature in degrees Celsius */

- -

int32 calc_flag);     /* either SE_TRUE_TO_APP or SE_APP_TO_TRUE */

- -

 

- -

function returns:

- -

case 1, conversion from true -altitude to apparent altitude:

- -

- apparent altitude, if body appears -above is observable above ideal horizon

- -

- true altitude (the input value), -otherwise

- -

  -"ideal horizon" is the horizon as seen above an ideal sphere -(as seen from a plane over the ocean with

- -

  -a clear sky)

- -

case 2, conversion from apparent -altitude to true altitude:

- -

- the true altitude resulting from -the input apparent altitude, if this value is a plausible apparent altitude,

- -

  -i.e. if it is a position above the ideal horizon

- -

- the input altitude otherwise

- -

 

- -

in addition the array dret[] returns -the following values

- -

- dret[0] true altitude, if -possible; otherwise input value

- -

- dret[1] apparent altitude, if -possible; otherwise input value

- -

- dret[2] refraction

- -

- dret[3] dip of the horizon

- -

 

- -

The body is above the horizon if the -dret[0] != dret[1]

- -

 

- -

6.15. Heliacal risings etc.: -swe_heliacal_ut()

- -

The function swe_heliacal_ut()the Julian day of the next heliacal -phenomenon after a given start date. It works between geographic latitudes 60s -– 60n.

- -

 

- -

int32 swe_heliacal_ut(

- -

double tjdstart,      /* Julian day number of start date for the search of the -heliacal event */

- -

double *dgeo                /* geographic position (details below) */

- -

double *datm,      /* atmospheric conditions (details below) */

- -

double *dobs,      /* observer description (details below) */

- -

char *objectname,        /* name string of fixed star or planet -*/

- -

int32 event_type,      /* event type (details below) */

- -

int32 helflag,      /* calculation flag, bitmap (details below) */

- -

double *dret,     /* result: array of at least 50 doubles, of which 3 are used at -the moment */

- -

char * serr     /* error string */

- -

);     

- -

 

- -

Function -returns OK or ERR

- -

 

- -

Details for dgeo[] (array of -doubles):

- -

        dgeo[0]: geographic longitude

- -

        dgeo[1]: geographic latitude

- -

        dgeo[2]: geographic altitude (eye -height) in meters

- -

 

- -

Details for datm[] (array of -doubles):

- -

        datm[0]: atmospheric pressure in mbar -(hPa)

- -

        datm[1]: atmospheric temperature in -degrees Celsius

- -

        datm[2]: relative humidity in %

- -

        datm[3]: if datm[3]>=1, then it is -Meteorological Range [km]

- -

    -         if 1>datm[3]>0, -then it is the total atmsopheric coeffcient (ktot)

- -

                      datm[3]=0, then the -other atmospheric parameters determine the total

- -

                                                                                        - atmsopheric coeffcient (ktot)

- -

        Default values:

- -

        If this is too much for you, set all -these values to 0. The software will then set the following defaults:

- -

        Pressure 1013.25, temperature 15, -relative humidity 40. The values will be modified depending

- -

        on the altitude of the observer above -sea level.

- -

        If the extinction coefficient -(meteorological range) datm[3] is 0, the software will calculate its value

- -

        from datm[0..2].

- -

 

- -

Details for dobs[] (array of -doubles):

- -

        dobs[0]: age of observer in years (default = 36)

- -

        dobs[1]: Snellen ratio of observers -eyes (default = 1 = normal)

- -

The -following parameters are only relevant if the flag SE_HELFLAG_OPTICAL_PARAMS is -set:

- -

        dobs[2]: 0 = monocular, 1 = binocular -(actually a boolean)

- -

        dobs[3]: telescope magnification: 0 = -default to naked eye (binocular), 1 = naked eye

- -

        dobs[4]: optical aperture (telescope -diameter) in mm

- -

        dobs[5]: optical transmission

- -

 

- -

Details for event_type:

- -

        event_type = SE_HELIACAL_RISING (1): -morning first (exists for all visible planets and stars)

- -

        event_type = SE_HELIACAL_SETTING (2): -evening last (exists for all visible planets and stars)

- -

        event_type = SE_EVENING_FIRST (3): -evening first (exists for Mercury, Venus, and the Moon)

- -

        event_type = SE_MORNING_LAST (4): -morning last (exists for Mercury, Venus, and the Moon)

- -

 

- -

Details for helflag:

- -

        helflag contains ephemeris flag, like -iflag in swe_calc() etc. In addition it can contain the following bits:

- -

        SE_HELFLAG_LONG_SEARCH (128): A -heliacal event is searched until found.

- -

             If this bit is NOT set and no -event is found within 5 synodic periods, the function stops

- -

             searching and  returns ERR.

- -

        SE_HELFLAG_HIGH_PRECISION (256): More -rigorous but also slower algorithms are used

- -

        SE_HELFLAG_OPTICAL_PARAMS (512): Use -this with calculations for optical instruments.

- -

              Unless this bit is set, the -values of dobs[2-5] are ignored.

- -

        SE_HELFLAG_NO_DETAILS (1024): provide -the date, but not details like visibility start, optimum, and end.

- -

              This bit makes the program a bit -faster.

- -

 

- -

Details for return array dret[] -(array of doubles):

- -

        dret[0]: start visibility (Julian day -number)

- -

        dret[1]: optimum visibility (Julian -day number)

- -

        dret[2]: end of visibility (Julian day -number)

- -

 

- -

6.16. Magnitude limit for visibility: -swe_vis_limit_mag()

- -

The function swe_vis_lim_mag()determines the limiting visual magnitude -in dark skies:

- -

 

- -

double swe_vis_limit_mag(

- -

double tjdut,      /* Julian day number */

- -

double *dgeo                /* geographic position (details under -swe_heliacal_ut() */

- -

double *datm,      /* atmospheric conditions (details under swe_heliacal_ut()) */

- -

double *dobs,      /* observer description (details under swe_heliacal_ut()) */

- -

char *objectname,        /* name string of fixed star or planet -*/

- -

int32 helflag,      /* calculation flag, bitmap (details under swe_heliacal_ut()) */

- -

double *dret,     /* result: magnitude required of the object to be visible */

- -

char * serr     /* error string */

- -

);     

- -

 

- -

Function -returns

- -

         -1      on -error

- -

         -2                   object -is below horizon

- -

         0       OK, -photopic vision

- -

         &1     OK, scotopic vision

- -

         &2     OK, near limit photopic/scotopic vision

- -

 

- -

7. Date and time conversion functions

- -

7.1 Calendar Date and Julian Day: swe_julday(), -swe_date_conversion(), /swe_revjul()

- -

These functions are needed to -convert calendar dates to the astronomical time scale which measures time in -Julian days.

- -

double swe_julday(int -year, int month, int day, double hour, int gregflag);

- -

 

- -

int swe_date_conversion -(

- -

         int -y , int m , int d ,     /* year, month, -day */

- -

     -     double hour,                /* hours (decimal, with fraction) */

- -

     -     char c,                 /* -calendar ‘g’[regorian]|’j’[ulian] */

- -

         double -*tjd);               /* return value for -Julian day */

- -

 

- -

void swe_revjul -(

- -

         double -tjd,         /* -Julian day number */

- -

         int -gregflag,       /* Gregorian calendar: 1, Julian calendar: 0 */

- -

         int -*year,       /* -target addresses for year, etc. */

- -

         int -*month, int *day, double *hour);

- -

 

- -

swe_julday()and swe_date_conversion() compute a Julian -day number from year, month, day, and hour. swe_date_conversion()checks in addition whether -the date is legal. It returns OK or ERR.

- -

swe_revjul() is the reverse function of -swe_julday().It computes year, month, day and hour from a Julian day -number.

- -

 

- -

The variable gregflag tells the function whether the input date is Julian calendar ( gregflag = SE_JUL_CAL) or Gregorian calendar ( gregflag = SE_GREG_CAL).

- -

Usually, you will set gregflag= SE_GREG_CAL.

- -

The Julian -day number has nothing to do with Julius Cesar, who introduced the Julian -calendar, but was invented by the monk Julianus. The Julian day number tells -for a given date the number of days that have passed since the creation of the world -which was then considered to have happened on 1 Jan –4712 at noon. E.g. the -1.1.1900 corresponds to the Julian day number 2415020.5.

- -

Midnight has always a JD with -fraction 0.5, because traditionally  the -astronomical day started at noon. This was practical because then there was no -change of date during a night at the telescope.  From this comes also the fact that noon ephemerides were printed -before midnight ephemerides were introduced early in the 20th century.

- -

 

- -

7.2. UTC and Julian day: swe_utc_time_zone(), swe_utc_to_jd(), -swe_jdet_to_utc(), swe_jdut1_to_utc()

- -

The following functions, which were -introduced with Swiss Ephemeris version 1.76, do a similar job as the functions -described under 7.1. The difference is that input and output times are Coordinated -Universal Time (UTC). For transformations between wall clock (or arm wrist) -time and Julian Day numbers, these functions are more correct. The difference -is below 1 second, though.

- -

 

- -

Use these functions to convert

- -

-          -local time to UTC and UTC to local -time,

- -

-          -UTC to a Julian day number, and

- -

-          -a Julian day number to UTC.

- -

 

- -

Note, in case of leap seconds, the input -or output time may be 60.9999 seconds. Input or output forms have to allow for -this.

- -

 

- -

/* transform local time to UTC or UTC to -local time

- -

 *

- -

 * -input:

- -

 *   iyear ... dsec     date and time

- -

 *   d_timezone         timezone offset

- -

 * -output:

- -

 *   iyear_out ... dsec_out

- -

 *

- -

 * -For time zones east of Greenwich, d_timezone is positive.

- -

 * -For time zones west of Greenwich, d_timezone is negative.

- -

 *

- -

 * -For conversion from local time to utc, use +d_timezone.

- -

 * -For conversion from utc to local time, use -d_timezone.

- -

 */

- -

void FAR PASCAL_CONV 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

- -

        -)

- -

 

- -

/* input: date and time (wall clock time), -calendar flag.

- -

 * -output: an array of doubles with Julian Day number in ET (TT) and UT (UT1)

- -

 *             an error -message (on error)

- -

 * The function returns OK or ERR.

- -

 */ -

- -

int32 swe_utc_to_jd (

- -

         int32 -iyear, int32 imonth, int32 iday,

- -

         int32 ihour, int32 imin, double -dsec,   /* note : second is a -decimal */

- -

         gregflag,      /* Gregorian calendar: 1, Julian calendar: 0 */

- -

         dret     /* -return array, two doubles:

- -

               * dret[0] = Julian day in ET (TT)

- -

               * dret[1] = Julian day in UT (UT1) */

- -

         serr     /* -error string */

- -

)

- -

 

- -

/* input: Julian day number in ET (TT), -calendar flag

- -

 * -output: year, month, day, hour, min, sec in UTC */

- -

void swe_jdet_to_utc (

- -

         double tjd_et,     /* Julian day number in ET (TT) */

- -

         gregflag,      /* Gregorian calendar: 1, Julian calendar: 0 */

- -

         int32 *iyear, -int32 *imonth, int32 *iday,

- -

         int32 *ihour, int32 *imin, double -*dsec,   /* note : second is a -decimal */

- -

)

- -

 

- -

/* input: Julian day number in UT (UT1), -calendar flag

- -

 * -output: year, month, day, hour, min, sec in UTC */

- -

void swe_jdut1_to_utc (

- -

         double tjd_ut,     /* Julian day number in ET (TT) */

- -

         gregflag,      /* Gregorian calendar: 1, Julian calendar: 0 */

- -

         int32 *iyear, -int32 *imonth, int32 *iday,

- -

         int32 *ihour, int32 *imin, double -*dsec,   /* note : second is a -decimal */

- -

)

- -

 

- -

How do I get correct planetary -positions, sidereal time, and house cusps, starting from a wall clock date and -time?

- -

 

- -

int32 -iday, imonth, iyear, ihour, imin, retval;

- -

int32 gregflag = SE_GREG_CAL;

- -

double d_timezone = 5.5 ; /* time zone = Indian Standard Time; note: -east is positive */

- -

double dsec, tjd_et, tjd_ut;

- -

double dret[2];

- -

char serr[256];

- -

- -

/* if -date and time is in time zone different from UTC, the time zone offset must be -subtracted

- -

 * first in order to get UTC: */

- -

swe_utc_time_zone(iyear, imonth, iday, ihour, imin, dsec, d_timezone,

- -

                &iyear_utc, -&imonth_utc, &iday_utc, &ihour_utc, &imin_utc, &dsec_utc)

- -

/* -calculate Julian day number in UT (UT1) and ET (TT) from UTC */

- -

retval = -swe_utc_to_jd (iyear_utc, imonth_utc, iday_utc, -ihour_utc, imin_utc, dsec_utc, gregflag, dret, serr);

- -

if (retval == ERR) {

- -

   fprintf(stderr, -serr);  /* error handling */

- -

}

- -

tjd_et = dret[0];  /* this is ET (TT) */

- -

tjd_ut = dret[1];  /* this is UT (UT1) */

- -

/* calculate planet with tjd_et */

- -

swe_calc(tjd_et, -…);

- -

/* calculate houses with tjd_ut */

- -

swe_houses(tjd_ut, …)

- -

 

- -

And how do you get the date and wall -clock time from a Julian day number? Depending on whether you have tjd_et -(Julian day as ET (TT)) or tjd_ut (Julian day as UT (UT1)), use one of the two -functions swe_jdet_to_utc() or swe_jdut1_to_utc().

- -

- -

/* first, we calculate UTC from TT (ET) */

- -

swe_jdet_to_utc(tjd_et, gregflag, -&iyear_utc, &imonth_utc, &iday_utc, &ihour_utc, &imin_utc, -&dsec_utc);

- -

         /* now, UTC to local time (note the -negative sign before d_timezone): */

- -

swe_utc_time_zone(iyear_utc, imonth_utc, iday_utc, ihour_utc, imin_utc, -dsec_utc,

- -

-d_timezone, &iyear, &imonth, &iday, &ihour, &imin, -&dsec)

- -

 

- -

7.3. Future insertion of leap seconds and the file swe_leapsec.txt

- -

The insertion of leap seconds is not -known in advance. We will update the Swiss Ephemeris whenever the IERS -announces that a leap second will be inserted. However, if the user does not -want to wait for our update or does not want to download a new version of the -Swiss Ephemeris, he can create a file swe_leapsec.txt in the ephemeris -directory. Insert a line with the date on which a leap second has to be -inserted. The file looks as follows:

- -

# This file contains the dates of leap -seconds to be taken into account

- -

# by the Swiss Ephemeris.

- -

# For each new leap second add the date of -its insertion in the format

- -

# yyyymmdd, e.g. "20081231" for -21 december 2008

- -

20081231

- -

 

- -

7.4. Mean solar time versus True solar time: swe_time_equ()

- -

Universal Time (UT or UTC) is based on Mean Solar Time, AKA -Local -Mean Time, which is a uniform measure of time. A -day has always the same length, independent of the time of the year.

- -

In the centuries before mechanical -clocks where used, when the reckoning of time was mostly based on sun dials, -the True -Solar Time was used, also called Local Apparent Time.

- -

The difference between Local Mean Time and Local Apparent Time is called the equation of time. This difference can become as -large as 20 minutes.

- -

If a birth time of a historical -person was noted in Local Apparent Time, it must first be -converted to Local -Mean Time by applying the equation of time, -before it can be used to compute Universal Time (for the houses) and finally Ephemeris Time -(for the planets).

- -

 

- -

There is a function for computing -the correction value.

- -

 

- -

/* equation of time function returns the -difference between local apparent and local mean time.

- -

 e = LAT – LMT.  tjd is ephemeris time */

- -

int swe_time_equ(double -tjd, double* -e, char* serr);

- -

 

- -

If you first compute tjd on the basis of the registered Local Apparent Time, you convert it to Local Mean Time -with:

- -

tjd_mean = tjd_app + e;

- -

 

- -

8. Delta T-related functions

- -

/* delta t from Julian day number */

- -

double swe_deltat(double tjd);

- -

/* get tidal acceleration used in -swe_deltat() */

- -

double swe_get_tid_acc(void); -

- -

/* set tidal acceleration to be used in -swe_deltat() */

- -

void swe_set_tid_acc(double -t_acc);

- -

 

- -

The Julian day number, you compute -from a birth date, will be Universal Time (UT,  former GMT) and can be used to -compute the star time and the houses. However, for the planets and the other -factors, you have to convert UT to Ephemeris time (ET):

- -

8.1 swe_deltat()

- -

tjde = tjd + swe_deltat(tjd);     where tjd = Julian day in UT, tjde= in ET

- -

 

- -

For precision fanatics: The value of -delta t depends on the tidal acceleration in the motion of the moon. Its -default value corresponds to the state-of-the-art JPL ephemeris (e.g.  DE406, s. swephexp.h). If you use another JPL ephemeris, e.g.  DE200, you may wish the tidal constant of DE200. This makes a -difference of 0.5 time seconds in 1900 and 4 seconds in 1800 (= 0.2” in the -position of the sun). However, this effect is limited to the period 1620 - -~1997. To change the tidal acceleration, use the function

- -

8.2 swe_set_tid_acc(), swe_get_tid_acc()

- -

 

- -

swe_set_tid_acc(acceleration);      // Do this before calling deltat() !

- -

 

- -

The values that acceleration can have are listed in swephexp.h. (e.g. SE_TIDAL_200, etc.)

- -

To find out the built-in value of -the tidal acceleration, you can call

- -

acceleration = swe_get_tidacc();

- -

 

- -

8.3. Future updates of Delta T and the file swe_deltat.txt

- -

Delta T -values for future years can only be estimated. Strictly speaking, the Swiss -Ephemeris has to be updated every year after the new Delta T value for the past -year has been published by the IERS. We will do our best and hope to update the -Swiss Ephemeris every year. However, if the user does not want to wait for our -update or does not download a new version of the Swiss Ephemeris he can add new -Delta T values in the file swe_deltat.txt, which has to be located in the Swiss -Ephemeris ephemeris path.

- -

# This file allows make new Delta T known -to the Swiss Ephemeris.

- -

# Note, these values override the values -given in the internal Delta T

- -

# table of the Swiss Ephemeris.

- -

# Format: year and seconds (decimal)

- -

2003 64.47

- -

2004 65.80

- -

2005 66.00

- -

2006 67.00

- -

2007 68.00

- -

2008 68.00

- -

2009 69.00

- -

 

- -

9. The function swe_set_topo() for topocentric planet positions

- -

void swe_set_topo(double -geolon, -double geolat, double altitude);

- -

               /* eastern longitude is positive,  western longitude is negative,

- -

                 northern latitude is positive,       -southern latitude is negative */

- -

 

- -

This function must be called before topocentric planet positions for a certain birth place -can be computed. It tells Swiss Ephemeris, what geographic position is to be -used. Geographic longitude geolon and latitude geolat must be in degrees, the altitude above sea must be in meters. Neglecting -the altitude can result in an error of about 2 arc seconds with the moon and at an altitude 3000 m. After calling swe_set_topo(), add SEFLG_TOPOCTR toiflag and call swe_calc() as with -an ordinary computation. E.g.:

- -

 

- -

swe_set_topo(geo_lon, geo_lat, altitude_above_sea);

- -

iflag | = SEFLG_TOPOCTR;

- -

 

- -

for (i = 0; i -< NPLANETS; i++) {

- -

  iflgret = swe_calc( tjd, ipl, iflag, xp, -serr );

- -

  printf(”%f\n”, xp[0]);

- -

- -

 

- -

The parameters set by swe_set_topo() survive swe_close().

- -

 

- -

10. Sidereal mode functions

- -

10.1. -swe_set_sid_mode()

- -

void swe_set_sid_mode (int32 sid_mode, double t0, -double ayan_t0);

- -

 

- -

This function can be used to specify -the mode for sidereal computations.

- -

swe_calc() or swe_fixstar() has then to be called with the bit SEFLG_SIDEREAL.

- -

If swe_set_sid_mode() is not called, the default ayanamsha(Fagan/Bradley) is used.

- -

If a predefined mode is wanted, the -variable sid_modehas to be set, while t0 and ayan_t0 are not considered, i.e. can be 0. The predefined sidereal modes are:

- -

 

- -

#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

- -

 

- -

For information about the sidereal -modes, read the chapter on sidereal calculations in swisseph.doc.

- -

To define your own sidereal mode, -use SE_SIDM_USER (= 255) and set the reference date (t0) and the initial value of theayanamsha -(ayan_t0).

- -

ayan_t0 = -tropical_position_t0 – sidereal_position_t0.

- -

Without additional specifications, -the traditional method is used. The ayanamsha measured on the ecliptic of t0 is subtracted from tropical -positions referred to the ecliptic of date.

- -

 

- -

Note, this method will NOT provide -accurate results if you want coordinates referred to the ecliptic of one of the -following equinoxes:

- -

#define SE_SIDM_J2000                18

- -

#define SE_SIDM_J1900                19

- -

#define SE_SIDM_B1950                20

- -

Instead, -you have to use a correct coordinate transformation as described in the -following:

- -

 

- -

Special uses of the sidereal functions:

- -

 

- -

a) correct transformation of ecliptic coordinates to the ecliptic of -a particular date

- -

 

- -

If a correct transformation to the -ecliptic of t0 is required the following bit can be added (‘ored’) to -the value of the variable sid_mode:

- -

 

- -

/* for projection onto ecliptic of t0 */

- -

#define -SE_SIDBIT_ECL_T0        256

- -

E.g.:

- -

swe_set_sid_mode(SE_SIDM_J2000 + SE_SIDBIT_ECL_T0, 0, 0);

- -

iflag |= -SEFLG_SIDEREAL;

- -

for (i = 0; i -< NPLANETS; i++) {

- -

  iflgret = swe_calc(tjd, ipl, iflag, xp, -serr);

- -

  printf(”%f\n”, xp[0]);

- -

- -

 

- -

This procedure is required for the -following sidereal modes, i.e. for transformation to the ecliptic of one of the -standard equinoxes:

- -

#define SE_SIDM_J2000                18

- -

#define SE_SIDM_J1900                19

- -

#define SE_SIDM_B1950                20

- -

 

- -

b) calculating precession-corrected transits

- -

 

- -

The function swe_set_sidmode() can also be used for calculating ”precession-corrected transits”. -There are two methods, of which you have to choose the one that is more -appropriate for you:

- -

 

- -

1. If you already have tropical -positions of a natal chart, you can proceed as follows:

- -

 

- -

iflgret = swe_calc(tjd_et_natal, SE_ECL_NUT, 0, x, serr);

- -

nut_long_nata = x[2];

- -

swe_set_sid_mode( SE_SIDBIT_USER + SE_SIDBIT_ECL_T0, -tjd_et, nut_long_natal );

- -

 

- -

where tjd_et_natal is the Julian day of the natal chart (Ephemeris time).

- -

After this calculate the transits, -using the function swe_calc() with the sidereal bit:

- -

 

- -

iflag |= -SEFLG_SIDEREAL;

- -

iflgret = -swe_calc(tjd_et_transit, ipl_transit, iflag, xpt, serr);

- -

 

- -

2. If you do not -have tropical natal positions yet, if you do not need them and are just -interested in transit times, you can have it simpler:

- -

swe_set_sid_mode( SE_SIDBIT_USER + SE_SIDBIT_ECL_T0, -tjd_et, 0 );

- -

iflag |= -SEFLG_SIDEREAL;

- -

iflgret = swe_calc(tjd_et_natal, ipl_natal, iflag, xp, serr);

- -

iflgret = swe_calc(tjd_et_transit, ipl_transit, iflag, xpt, serr);

- -

 

- -

In this case, the -natal positions will be tropical but without nutation. Note that you should not -use them for other purposes.

- -

 

- -

c) solar system rotation plane

- -

 

- -

For sidereal positions referred to -the solar system rotation plane, use the flag

- -

 

- -

/* for projection onto solar system -rotation plane */

- -

#define SE_SIDBIT_SSY_PLANE     512

- -

 

- -

Note: the parameters set by swe_set_sid_mode() survive calls of the function swe_close().

- -

10.2. swe_get_ayanamsa_ut() and -swe_get_ayanamsa()

- -

double swe_get_ayanamsa_ut(double -tjd_ut);

- -

double swe_get_ayanamsa(double -tjd_et);

- -

 

- -

The function swe_get_ayanamsa_ut() was introduced with Swisseph Version 1.60 and expects Universal -Time instead of Ephemeris Time. (cf. swe_calc_ut() and swe_calc())

- -

The two functions compute the ayanamsha, i.e. the distance of the tropical vernal point from the sidereal -zero point of the zodiac. Theayanamsha is used to compute sidereal planetary positions from tropical ones:

- -

pos_sid = -pos_trop – ayanamsha

- -

Before calling swe_get_ayanamsha(), you have to set the sidereal mode with swe_set_sid_mode, unless you want the -default sidereal mode, which is the Fagan/Bradleyayanamsha.

- -

 

- -

11. The Ephemeris file related functions

- -

11.1 swe_set_ephe_path()

- -

If the environment variable -SE_EPHE_PATH  exists in the environment -where Swiss Ephemeris is used, its content is used to find the ephemeris files. The variable can contain a directory -name, or a list of directory names separated by ; (semicolon) on Windows or : (colon) on Unix.

- -

int swe_set_ephe_path(char -*path);

- -

 

- -

Usually an application will want to -set its own ephemeris path by calling swe_set_ephe_path(), e.g.

- -

swe_set_ephe_path(”C:\\SWEPH\\EPHE”);

- -

 

- -

The argument can be a single -directory name or a list of directories, which are then searched in sequence. -The argument of this call is ignored if the environment variable SE_EPHE_PATH exists and is not empty.
-If you want to make sure that your program overrides -any environment variable setting, you can use
putenv() to -set it to an empty string.

- -

 

- -

If the path is longer than 256 bytes, swe_set_ephe_path() sets the path \SWEPH\EPHE instead.

- -

If no environment variable exists -and swe_set_ephe_path() is never called, the built-in ephemeris path is used. On Windows it -is ”\sweph\ephe” relative to the current working drive, on Unix it is "/users/ephe".

- -

Asteroid ephemerides are looked for -in the subdirectories ast0, ast1, ast2 .. ast9 of the ephemeris directory and, if not found there, in the ephemeris -directory itself. Asteroids with numbers 0 – 999 are expected in directory ast0, those with numbers 1000 – 1999 in directory ast1 etc.

- -

The environment variable SE_EPHE_PATH is most convenient when a user has several applications installed -which all use the Swiss Ephemeris but would normally expect the ephemeris files -in different application-specific directories. The use can override this by -setting the environment variable, which forces all the different applications -to use the same ephemeris directory. This allows him to use only one set of -installed ephemeris files for all different applications. A developer should -accept this override feature and allow the sophisticated users to exploit it.

- -

11.2 swe_close()

- -

/* close Swiss Ephemeris */

- -

void swe_close(void);

- -

 

- -

At the end of your computations you -can release most resources (open files and allocated memory) used by the Swiss -Ephemeris DLL.

- -

The following parameters survive a -call of swe_calc():

- -

·         -the ephemeris path set by swe_set_ephe_path()

- -

·         -the JPL file name set by swe_set_jpl_file()

- -

·         -the geographical location set by swe_set_topo() for topocentric planetary positions

- -

·         -the sidereal mode set by swe_set_sid_mode() for sidereal planetary positions

- -

 

- -

As soon as you make a call to swe_calc() or swe_fixstar(), the Swiss Ephemeris -re-opens again.

- -

11.3 swe_set_jpl_file()

- -

 

- -

/* set name of JPL ephemeris file */

- -

int swe_set_jpl_file(char -*fname);

- -

 

- -

If you work with the JPL ephemeris, -SwissEph uses the default file name which is defined in swephexp.h as SE_FNAME_DFT. Currently, it has the value ”de406.eph”.

- -

If different JPL ephemeris file is -required, call the function swe_set_jpl_file()to make the file name known to the software, e.g.

- -

swe_set_jpl_file(”de405.eph”);

- -

 

- -

This file must reside in the -ephemeris path you are using for all your ephemeris files.

- -

If the file name is longer than 256 byte, swe_set_jpl_file() cuts the file name to a length of 256 bytes. The error will become -visible after the first call of swe_calc(), when it -will return zero positions and an error message.

- -

 

- -

11.4 swe_version()

- -

 

- -

/* find out version number of your Swiss -Ephemeris version */

- -

char *swe_version(char *svers);

- -

/* svers is a string variable with -sufficient space to contain the version number (255 char) */

- -

 

- -

The Function returns a pointer to the string -svers, i.e. to the version number of the Swiss Ephemeris that your software is -using.

- -

 

- -

12. House cusp calculation

- -

12.1 swe_houses()

- -

/* house cusps, ascendant and MC */

- -

int swe_houses(

- -

double tjd_ut,      /* Julian day number, UT */

- -

double geolat,      /* geographic latitude, in degrees */

- -

double geolon,      /* geographic longitude, in degrees

- -

               * eastern longitude is positive,

- -

               * western longitude is negative,

- -

               * northern latitude is positive,

- -

               * southern latitude is negative */

- -

int hsys,           /* house method, ascii code of one of the -letters PKORCAEVXHTBG */

- -

double *cusps,      /* array for 13 doubles */

- -

double *ascmc);     /* array for 10 doubles */

- -

12.2 swe_houses_armc()

- -

int swe_houses_armc(

- -

double armc,         /* ARMC */

- -

double geolat,      /* geographic latitude, in degrees */

- -

double eps,      /* ecliptic obliquity, in -degrees */

- -

int hsys,           /* house method, ascii code of one of the -letters PKORCAEVXHTBG */

- -

double *cusps,      /* array for 13 doubles */

- -

double *ascmc);     /* array for 10 doubles */

- -

12.3 swe_houses_ex()

- -

 

- -

/* extended function; to compute tropical -or sidereal positions */

- -

int swe_houses_ex(

- -

         double -tjd_ut,      /* Julian day number, UT */

- -

         int32 -iflag,      /* -0 or SEFLG_SIDEREAL or SEFLG_RADIANS */

- -

         double -geolat,      /* geographic latitude, in -degrees */

- -

         double -geolon,      /* geographic longitude, in -degrees

- -

         * eastern longitude is positive,

- -

               * western longitude is negative,

- -

               * northern latitude is positive,

- -

               * southern latitude is negative */

- -

         int -hsys,           /* house method, ascii code of one of the letters PKORCAEVXHTBG -*/

- -

         double -*cusps,      /* array for 13 doubles */

- -

double *ascmc);     /* array for 10 doubles */

- -

 

- -

The function swe_houses() is most comfortable, if you need the houses for a given date and -geographic position. Sometimes, however, you will want to compute houses from -an ARMC, e.g. with the composite horoscope which has no date, only the -composite ARMC of two natal ARMCs. In such cases, you can use the function swe_houses_armc(). To compute the composite ecliptic obliquityeps, you will have to call sweph_calc()with ipl = SE_ECL_NUT -for both birth dates and calculate the average of botheps.

- -

Note thattjd_ut must be Universal Time, whereas planets are -computed from Ephemeris Time

- -

tjd_et -= tjd_ut + delta_t(tjd_ut).

- -

Also note that the array cusps -must provide space for 13 doubles (declare -as cusp[13]), otherwise you risk a -program crash. With house system ‘G’ (Gauquelin sector cusps), declare it as cusp[37].

- -

 

- -

Note: With house system ‘G’, the -cusp numbering is in clockwise direction.

- -

 

- -

The extended house function swe_houses_ex() does exactly the same calculations as swe_houses(). -The difference is that swe_houses_ex() has -a parameter iflag, which can -be set to SEFLG_SIDEREAL, if  siderealhouse -positions are wanted. Before calling swe_houses_ex() for -sidereal house positions, the sidereal mode can be set by calling the function swe_set_sid_mode(). If this is not done, the default sidereal mode, i.e. the -Fagan/Bradley ayanamsha, will be used.

- -

There is no extended function for swe_houses_armc(). Therefore, if you want to compute such -obscure things as sidereal composite house cusps, the procedure will be -more complicated:

- -

 

- -

/* sidereal composite house computation; -with true epsilon, but without nutation in longitude */

- -

swe_calc(tjd_et1, SE_ECL_NUT, 0, x1, serr);

- -

swe_calc(tjd_et2, SE_ECL_NUT, 0, x2, serr);

- -

armc1 = swe_sidtime(tjd_ut1) * 15;  

- -

armc2 = swe_sidtime(tjd_ut2) * 15;

- -

armc_comp = composite(armc1, -armc2); /* this is a function created by the user */

- -

eps_comp = (x1[0] + x2[0]) / 2;

- -

nut_comp = -(x1[2] + x2[2]) / 2;

- -

tjd_comp = -(tjd_et1 + tjd_et2) / 2;

- -

aya = swe_get_ayanamsa(tjd_comp);

- -

swe_houses_armc(armc_comp, geolat, eps_comp, hsys, cusps, ascmc);

- -

for (i = 1; i -<= 12; i++)

- -

  cusp[i] = swe_degnorm(cusp[i] – aya – -nut_comp);

- -

for (i = 0; i -< 10; i++)

- -

  ascmc[i] = swe_degnorm(asc_mc[i] – -aya – nut_comp);

- -

 

- -

Output and input parameters.

- -

The first array element cusps[0] -is always 0, the twelve houses follow in cusps[1] .. [12], the reason -being that arrays in C begin with the index 0. The indices are therefore:

- -

cusps[0] = 0

- -

cusps[1] = house 1

- -

cusps[2] = house 2

- -

etc.

- -

 

- -

In the array ascmc, the function returns the following -values:

- -

ascmc[0] =      Ascendant

- -

ascmc[1] =     MC

- -

ascmc[2] =     ARMC

- -

ascmc[3] =     Vertex

- -

ascmc[4] =     "equatorial ascendant"

- -

ascmc[5] =     "co-ascendant" (Walter Koch)

- -

ascmc[6] =     "co-ascendant" (Michael Munkasey)

- -

ascmc[7] =     "polar ascendant" (M. Munkasey)

- -

 

- -

The following defines can be used to find these -values:

- -

#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

- -

 

- -

ascmcmust be an array of 10 doubles. -ascmc[8... 9] are 0 and may -be used for additional points in future releases.

- -

 

- -

The following house systems are -implemented so far

- -

hsys =        ‘P’                  Placidus

- -

         ‘K’     Koch

- -

         ‘O’     Porphyrius

- -

         ‘R’     Regiomontanus

- -

         ‘C’     Campanus

- -

         ‘A’ or ‘E’     Equal (cusp 1 is Ascendant)

- -

         ‘V’     Vehlow -equal (Asc. in middle of house 1)

- -

         ‘W’     Whole sign

- -

         ‘X’     axial -rotation system / meridian system / zariel

- -

         ‘H’     azimuthal -or horizontal system

- -

         ‘T’     Polich/Page -(“topocentric” system)

- -

         ‘B’     Alcabitus

- -

         ‘M’     Morinus

- -

         ‘U’     Krusinski-Pisa

- -

         ‘G’     Gauquelin sectors

- -

 

- -

Placidus and Koch house cusps cannot be -computed beyond the polar circle. In such cases, swe_houses() switches to Porphyry houses (each quadrant is divided into three -equal parts) and returns the error code ERR.

- -

 

- -

The Vertex -is the point on the ecliptic that is located in precise western direction. The opposition of the Vertex is the Antivertex, -the ecliptic east point.

- -

 

- -

13. The sign of geographical longitudes in Swisseph functions

- -

There is a disagreement between American and European -programmers whether eastern or western geographical longitudes ought to be -considered positive. Americans prefer to have West longitudes positive, -Europeans prefer the older tradition that considers East longitudes as positive -and West longitudes as negative.

- -

The Astronomical Almanac still follows the European pattern. It gives the geographical -coordinates of observatories in "East longitude".

- -

The Swiss Ephemeris also follows the -European -style. All Swiss Ephemeris functions that use -geographical coordinates consider positive geographical longitudes as Eastand negative ones as West.

- -

E.g. 87w39 = -87.65° (Chicago IL/USA) and 8e33 = +8.55° (Zurich, -Switzerland).

- -

There is no such controversy about -northern and southern geographical latitudes. North is always positive and -south is negative.

- -

 

- -

14. Getting the house position of a planet with swe_house_pos()

- -

To compute the house position of a -given body for a given ARMC, you may use the

- -

double swe_house_pos(

- -

         double -armc,         /* -ARMC */

- -

         double -geolat,      /* geographic latitude, in -degrees */

- -

         double -eps,      /* -ecliptic obliquity, in degrees */

- -

         int -hsys,           /* house method, one of the letters PKRCAV */

- -

         double -*xpin,      /* array of 2 doubles: ecl. -longitude and latitude of the planet */

- -

char *serr);       /* return area for error -or warning message */

- -

 

- -

The variables armc, -geolat, eps, and xpin[0]and xpin[1](ecliptic longitude and latitude of the -planet) must be in degrees. serr must, as usually, point to a character array of 256 byte.

- -

The function returns a value between -1.0 and 12.999999, indicating in which house a planet is and how far from its -cusp it is.

- -

With house system ‘G’ (Gauquelin -sectors), a value between 1.0 and 36.9999999 is returned. Note that, while all -other house systems number house cusps in counterclockwise direction, Gauquelin -sectors are numbered in clockwise direction.

- -

 

- -

With Koch houses, the function sometimes returns 0, if the computation was not possible. This happens most often in polar regions, but it can happen at latitudes below -66°33’ as well, e.g. if a body has a high declination and falls -within the circumpolar sky. With circumpolar fixed stars (or asteroids) a Koch -house position may be impossible at any geographic location except on the -equator.

- -

The user must decide how to deal -with this situation.

- -

You can use the house positions -returned by this function for house horoscopes (or ”mundane” positions). For -this, you have to transform it into a value between 0 and 360 degrees. Subtract -1 from the house number and multiply it with 30, or mund_pos = (hpos – 1) * -30;

- -

 

- -

You will realize that house -positions computed like this, e.g. for the Koch houses, will not agree exactly -with the ones that you get applying the Huber ”hand calculation” method. If you -want a better agreement, set the ecliptic latitude xpin[1]= 0;. Remaining differences result from the -fact that Huber’s hand calculation is a simplification, whereas our computation -is geometrically accurate.

- -

 

- -

This function requires TROPICAL positions inxpin. SIDEREAL house positions are identical to tropical ones in the following -cases:

- -

·         -If the traditional method is used to -compute sidereal planets (sid_pos = trop_pos – ayanamsha). Here the function swe_house_pos() works -for all house systems.

- -

·         -If a non-traditional method -(projection to the ecliptic of t0 or to the solar system rotation plane) is -used and the definition of the house system does not depend on the ecliptic. -This is the case with Campanus, Regiomontanus, Placidus, Azimuth houses, axial rotation houses. This is NOT -the case with equal houses, Porphyry and Koch houses. -You have to compute equal and Porphyry house positions on your own. We recommend to avoid Koch -houses here. Sidereal Koch houses make no sense with these sidereal algorithms. -

- -

·         -Alcabitus is not yet supported in -release 1.61.01

- -

 

- -

14.1. Calculating the Gauquelin sector position of a planet with -swe_house_pos() or swe_gauquelin_sector()

- -

For general information on Gauquelin -sectors, read chapter 6.5 in documentation file swisseph.doc.

- -

 

- -

There are two functions that can be -used to calculate Gauquelin sectors:

- -

·         -swe_house_pos. Full details about this -function are presented in the previous section. To calculate Gauquelin sectors -the parameter hsys must be set to 'G' (Gauquelin sectors). This function will -then return the sector position as a value between 1.0 and 36.9999999. Note -that Gauquelin sectors are numbered in clockwise direction, unlike all other -house systems.

- -

·         -swe_gauquelin_sector - detailed below.

- -

 

- -

Function -swe_gauquelin_sector() is declared as follows:

- -

 

- -

int32 swe_gauquelin_sector(

- -

double tjd_ut,      /* search after this time (UT) */

- -

int32 ipl,           /* planet number, if -planet, or moon */

- -

char *starname,      /* star name, if star */

- -

int32 iflag,      /* flag for ephemeris and SEFLG_TOPOCTR */

- -

int32 imeth,      /* method: 0 = with lat., 1 = without lat.,

- -

               /*              2 = from rise/set, 3 = from rise/set with refraction -*/

- -

double *geopos,      /* array of three doubles containing

- -

               * geograph. long., lat., height of observer -*/

- -

double atpress,       /* atmospheric -pressure, only useful with imeth=3;

- -

                * if 0, default = 1013.25 mbar is used*/

- -

double attemp,       /* atmospheric -temperature in degrees Celsius, only useful with imeth=3 */

- -

double *dgsect,         /* return address for -gauquelin sector position */

- -

char *serr);       /* return address for -error message */

- -

 

- -

This function returns OK or ERR -(-1). It returns an error in a number of cases, for example circumpolar bodies -with imeth=2. As with other SE functions, if there is an error, an error -message is written to serr. dgsect is used to obtain the Gauquelin sector -sector position as a value between 1.0 and 36.9999999. Gauquelin sectors are -numbered in clockwise direction.

- -

 

- -

There are six methods of computing -the Gauquelin sector position of a planet:

- -

1. Sector positions from ecliptical -longitude AND latitude:

- -

    -There are two ways of doing this:

- -

·           -Call swe_house_pos() with hsys = 'G', -xpin[0] = ecliptical longitude of planet, and xpin[1] = ecliptical

- -

latitude. This function returns the sector position as a value -between 1.0 and 36.9999999.

- -

·           -Call swe_gauquelin_sector() with -imeth=0. This is less efficient than swe_house_pos because it

- -

recalculates the whole planet whereas swe_house_pos() has an input -array for ecliptical positions

- -

calculated before.

- -

 

- -

2. Sector positions computed from -ecliptical longitudes without ecliptical latitudes:

- -

    -There are two ways of doing this:

- -

·           -Call swe_house_pos() with hsys = 'G', -xpin[0] = ecl. longitude of planet, and xpin[1] = 0. This function

- -

returns the sector position as a value between 1.0 and 36.9999999.

- -

·           -Call swe_gauquelin_sector() with -imeth=1. Again this is less efficient than swe_house_pos.

- -

 

- -

3. Sector positions of a planet from -rising and setting times of planets.

- -

    -The rising and setting of the disk center is used:

- -

·           -Call swe_gauquelin_sector() with -imeth=2.

- -

 

- -

4. Sector positions of a planet from -rising and setting times of planets, taking into account atmospheric -refraction.

- -

    -The rising and setting of the disk center is used:

- -

·           -Call swe_gauquelin_sector() with imeth -= 3.

- -

 

- -

5. Sector positions of a planet from -rising and setting times of planets.

- -

    -The rising and setting of the disk edge is used:

- -

·           -Call swe_gauquelin_sector() with -imeth=4.

- -

 

- -

6. Sector positions of a planet from -rising and setting times of planets, taking into account atmospheric -refraction.

- -

    The rising and setting -of the disk edge is used:

- -

·           -Call swe_gauquelin_sector() with imeth -= 5.

- -

 

- -

15. Sidereal time with swe_sidtime() and swe_sidtime0()

- -

The sidereal time is computed inside the houses() function -and returned via the variable armc which measures sidereal time in degrees. To get sidereal time in -hours, divide armcby 15.

- -

If the sidereal time is required -separately from house calculation, two functions are available. The second -version requires obliquity and nutation to be given in the function call, the -first function computes them internally. Both return sidereal time at the Greenwich Meridian, measured in hours.

- -

 

- -

double swe_sidtime(double -tjd_ut);      /* Julian day number, UT */

- -

double swe_sidtime0(

- -

         double -tjd_ut,      /* Julian day number, UT */

- -

         double -eps,      /* -obliquity of ecliptic, in degrees */

- -

         double -nut);     /* -nutation in longitude, in degrees */

- -
-
- -

 

- -

16. Summary of SWISSEPH functions

- -

16.1. Calculation of planets and stars

- -

Planets, -moon, asteroids, lunar nodes, apogees, fictitious bodies

- -

 

- -

long swe_calc_ut(

- -

         double -tjd_ut,     /* Julian day number, -Universal Time */

- -

         int ipl,           /* planet number */

- -

         long iflag,      /* flag bits */

- -

           double *xx,            /* target address for 6 position values: -longitude, latitude, distance,

- -

               long. speed, lat. speed, dist. speed */

- -

         char *serr);     /* 256 bytes for error string */

- -

 

- -

long swe_calc(

- -

         double -tjd_et,      /* Julian day number, -Ephemeris Time */

- -

         int ipl,           /* planet number */

- -

         long iflag,      /* flag bits */

- -

         double *xx,     /* target address for 6 position values: longitude, -latitude, distance,

- -

               long. speed, lat. speed, dist. speed */

- -

         char *serr);     /* 256 bytes for error string */

- -

Fixed -stars

- -

long swe_fixstar_ut(

- -

         char -*star,         /* -star name, returned star name 40 bytes */

- -

         double -tjd_ut,      /* Julian day number, Universal -Time */

- -

         long iflag,      /* flag bits */

- -

         double -*xx,            /* target address for 6 -position values: longitude, latitude, distance,

- -

                        long. -speed, lat. speed, dist. speed */

- -

         char *serr);     /* 256 bytes for error string */

- -

 

- -

long swe_fixstar(

- -

         char -*star,         /* -star name, returned star name 40 bytes */

- -

         double -tjd_et,      /* Julian day number, -Ephemeris Time */

- -

         long iflag,      /* flag bits */

- -

         double -*xx,          /* target address for 6 position values: longitude, latitude, -distance,

- -

               long. speed, lat. speed, dist. speed */

- -

         char *serr);     /* 256 bytes for error string */

- -

Set the -geographic location for topocentric planet computation

- -

void swe_set_topo (

- -

         double -geolon,      /* geographic longitude */

- -

         double -geolat,      /* geographic latitude

- -

                eastern longitude is positive,

- -

                western longitude is negative,

- -

                northern latitude is positive,

- -

                southern latitude is negative */

- -

         double -altitude);     /* altitude above sea */

- -

Set the -sidereal mode for sidereal planet positions

- -

void swe_set_sid_mode (

- -

      int32 sid_mode,

- -

         double t0,          /* reference epoch */

- -

         double ayan_t0);     /* initial ayanamsha at t0 */

- -

 

- -

/* to get the ayanamsha for a date */

- -

double swe_get_ayanamsa(double -tjd_et);

- -

16.2 Eclipses and planetary phenomena

- -

Find the -next eclipse for a given geographic position

- -

int32 swe_sol_eclipse_when_loc(

- -

double tjd_start,      /* start date for search, Jul. day UT */

- -

int32 ifl,      /* -ephemeris flag */

- -

double *geopos,      /* 3 doubles for geo. lon, -lat, height */

- -

         * eastern longitude is positive,

- -

                    * -western longitude is negative,

- -

                    * -northern latitude is positive,

- -

                    * -southern latitude is negative */

- -

double *tret,           /* return array, 10 -doubles, see below */

- -

double *attr,           /* return array, 20 -doubles, see below */

- -

AS_BOOL backward,      /* TRUE, if backward search */

- -

char *serr);       /* return error string */

- -

Find the -next eclipse globally

- -

int32 swe_sol_eclipse_when_glob(

- -

double tjd_start,      /* start date for search, Jul. day UT */

- -

int32 ifl,      /* -ephemeris flag */

- -

int32 ifltype,      /* eclipse type wanted: -SE_ECL_TOTAL etc. */

- -

double *tret,           /* return array, 10 -doubles, see below */

- -

AS_BOOL backward,      /* TRUE, if backward search */

- -

char *serr);       /* return error string */

- -

Compute -the attributes of a solar eclipse for a given tjd, geographic long., latit. and -height

- -

int32 swe_sol_eclipse_how(

- -

double tjd_ut,      /* time, Jul. day UT */

- -

int32 ifl,      /* -ephemeris flag */

- -

double *geopos,        /* geogr. longitude, -latitude, height */

- -

         * eastern longitude is positive,

- -

                    * -western longitude is negative,

- -

                    * -northern latitude is positive,

- -

                    * -southern latitude is negative */

- -

double *attr,           /* return array, 20 -doubles, see below */

- -

char *serr);       /* return error string */

- -

Find out -the geographic position where a central eclipse is central or a non-central one -maximal

- -

int32 swe_sol_eclipse_where (

- -

double tjd_ut,      /* time, Jul. day UT */

- -

int32 ifl,           /* ephemeris flag */

- -

double *geopos,       /* return array, 2 -doubles, geo. long. and lat. */

- -

               * eastern longitude is positive,

- -

                    * -western longitude is negative,

- -

                    * -northern latitude is positive,

- -

                    * -southern latitude is negative */

- -

double *attr,           /* return array, 20 -doubles, see below */

- -

char *serr);       /* return error string */

- -

 

- -

or

- -

 

- -

int32 swe_lun_occult_where (

- -

double tjd_ut,      /* time, Jul. day UT */

- -

int32 ipl,      /* -planet number */

- -

char* starname,      /* -star name, must be NULL or ”” if not a star */

- -

int32 ifl,      /* -ephemeris flag */

- -

double *geopos,     /* return array, 2 doubles, geo. long. and lat.

- -

               * eastern longitude is positive,

- -

               * western longitude is negative,

- -

               * northern latitude is positive,

- -

               * southern latitude is negative */

- -

double *attr,      /* return array, 20 doubles, see below */

- -

char *serr);       /* return error string */

- -

Find the -next occultation of a body by the moon for a given geographic position

- -

(can also be used for solar eclipses )

- -

 

- -

int32 swe_lun_occult_when_loc(

- -

double -tjd_start,      /* start date for search, -Jul. day UT */

- -

int32 ipl,      /* -planet number */

- -

char* starname,      /* -star name, must be NULL or ”” if not a star */

- -

int32 ifl,      /* -ephemeris flag */

- -

double -*geopos,      /* 3 doubles for geo. lon, -lat, height eastern longitude is positive,

- -

                -western longitude is negative,  -northern latitude is positive,

- -

                -southern latitude is negative */

- -

double -*tret,      /* return array, 10 doubles, -see below */

- -

double -*attr,      /* return array, 20 doubles, -see below */

- -

AS_BOOL -backward,      /* TRUE, if backward search -*/

- -

char -*serr);     /* return error string */

- -

Find the -next occultation globally

- -

(can also be used for solar eclipses )

- -

 

- -

int32 swe_lun_occult_when_glob(

- -

double -tjd_start,      /* start date for search, -Jul. day UT */

- -

int32 ipl,      /* -planet number */

- -

char* starname,      /* -star name, must be NULL or ”” if not a star */

- -

int32 ifl,      /* -ephemeris flag */

- -

int32 ifltype,      /* -eclipse type wanted */

- -

double -*geopos,      /* 3 doubles for geo. lon, -lat, height eastern longitude is positive,

- -

                -western longitude is negative,  -northern latitude is positive,

- -

                -southern latitude is negative */

- -

double -*tret,      /* return array, 10 doubles, -see below */

- -

double -*attr,      /* return array, 20 doubles, -see below */

- -

AS_BOOL -backward,      /* TRUE, if backward search -*/

- -

char -*serr);     /* return error string */

- -

Find the -next lunar eclipse

- -

int32 swe_lun_eclipse_when(

- -

double tjd_start,      /* start date for search, Jul. day UT */

- -

int32 ifl,           /* ephemeris flag */

- -

int32 ifltype,      /* eclipse type wanted: -SE_ECL_TOTAL etc. */

- -

double *tret,           /* return array, 10 -doubles, see below */

- -

AS_BOOL backward,      /* TRUE, if backward search */

- -

char *serr);       /* return error string */

- -

Compute -the attributes of a lunar eclipse at a given time

- -

int32 swe_lun_eclipse_how(

- -

double tjd_ut,      /* time, Jul. day UT */

- -

int32 ifl,      /* -ephemeris flag */

- -

double *geopos,      /* input array, geopos, -geolon, geoheight */

- -

                eastern longitude is positive,

- -

                     -western longitude is negative,

- -

                     -northern latitude is positive,

- -

                     -southern latitude is negative */

- -

double *attr,           /* return array, 20 -doubles, see below */

- -

char *serr);       /* return error string */

- -

 

- -

Compute -risings, settings and meridian transits of a body

- -

int32 swe_rise_trans(

- -

double tjd_ut,      /* search after this time (UT) */

- -

int32 ipl,           /* planet number, if -planet or moon */

- -

char *starname,      /* star name, if star */

- -

int32 epheflag,      /* ephemeris flag */

- -

int32 rsmi,          /* integer specifying -that rise, set, or one of the two meridian transits is

- -

                     -wanted. see definition below */

- -

double *geopos,      /* array of three doubles containing geograph. long., lat., -height of observer */

- -

double atpress,      /* atmospheric pressure in mbar/hPa */

- -

double attemp,     /* atmospheric temperature in deg. C */

- -

double *tret,     /* return address (double) for rise time etc. */

- -

char *serr);     /* return address for error message */

- -

 

- -

int32 swe_rise_trans_true_hor(

- -

double tjd_ut,      /* search after this time (UT) */

- -

int32 ipl,           /* planet number, if -planet or moon */

- -

char *starname,      /* star name, if star */

- -

int32 epheflag,      /* ephemeris flag */

- -

int32 rsmi,          /* integer specifying -that rise, set, orone of the two meridian transits is

- -

               wanted. see definition below */

- -

double *geopos,      /* array of three doubles containing

- -

               * geograph. long., lat., height of observer -*/

- -

double atpress,      /* atmospheric pressure in mbar/hPa */

- -

double attemp,     /* atmospheric temperature in deg. C */

- -

double horhgt,     /* height of local horizon in deg at the point where the body -rises or sets*/

- -

double *tret,          /* return address -(double) for rise time etc. */

- -

char *serr);       /* return address for -error message */

- -

 

- -

 

- -

Compute -planetary phenomena

- -

int32 swe_pheno_ut(

- -

double tjd_ut,      /* time Jul. Day UT */

- -

int32 ipl,           /* planet number */

- -

int32 iflag,      /* -ephemeris flag */

- -

double *attr,           /* return array, 20 -doubles, see below */

- -

char *serr);       /* return error string */

- -

int32 swe_pheno(

- -

double tjd_et,      /* time Jul. Day ET */

- -

int32 ipl,           /* planet number */

- -

int32 iflag,      /* ephemeris flag */

- -

double *attr,           /* return array, 20 -doubles, see below */

- -

char *serr);       /* return error string */

- -

 

- -

void swe_azalt(

- -

      -double tjd_ut,     /* UT */

- -

      int32 calc_flag,     /* SE_ECL2HOR or SE_EQU2HOR */

- -

      double *geopos,     /* array of 3 doubles: geogr. long., lat., -height */

- -

     - double atpress,     /* atmospheric pressure in mbar (hPa) */

- -

      -double attemp,     /* atmospheric -temperature in degrees Celsius */

- -

      double *xin, /* array of 3 doubles: position of body in -either  ecliptical or equatorial -coordinates,  depending on calc_flag */

- -

      double *xaz); /* return array of 3 doubles, containing -azimuth, true altitude, apparent altitude */

- -

 

- -

void swe_azalt_rev(

- -

      -double tjd_ut,

- -

      int32 calc_flag,     /* either SE_HOR2ECL or SE_HOR2EQU */

- -

      -double *geopos,     /* array of 3 -doubles for geograph. pos. of observer */

- -

      -double *xin,      /* array of 2 doubles for azimuth and true -altitude of planet */

- -

      double *xout); /* return array of 2 doubles for either -ecliptic or equatorial coordinates, depending on calc_flag */

- -

double swe_refrac(

- -

double inalt,

- -

double atpress,      /* atmospheric pressure in mbar (hPa) */

- -

double attemp,      /* atmospheric temperature in degrees Celsius */

- -

int32 calc_flag);     /* either SE_TRUE_TO_APP or SE_APP_TO_TRUE */

- -

 

- -

16.3. Date and time conversion

- -

Delta T from -Julian day number

- -

 * -Ephemeris time (ET) = Universal time (UT) + swe_deltat(UT)*/

- -

double swe_deltat(double -tjd);

- -

Julian day -number from year, month, day, hour, with check whether date is legal

- -

/*Return value: OK or ERR  */

- -

int swe_date_conversion (

- -

         int -y , int m , int d ,     /* year, month, -day */

- -

     -     double hour,                /* hours (decimal, with fraction) */

- -

     -     char c,                 /* -calendar ‘g’[regorian]|’j’[ulian] */

- -

double *tjd);               /* target address for Julian day */

- -

Julian day -number from year, month, day, hour

- -

double swe_julday(

- -

int year, int month, int day, double hour, -

- -

int gregflag);     /* Gregorian calendar: 1, Julian calendar: 0 */

- -

 

- -

 

- -

 

- -

 

- -

 

- -

 

- -

Year, -month, day, hour from Julian day number

- -

void swe_revjul (

- -

         double -tjd,      /* Julian day number */

- -

         int -gregflag,     /* Gregorian calendar: 1, -Julian calendar: 0 */

- -

         int -*year,       /* -target addresses for year, etc. */

- -

         int -*month, int *day, double *hour);

- -

Local time -to UTC and UTC to local time

- -

/* transform local time to UTC or UTC to -local time

- -

 *

- -

 * -input:

- -

 *   iyear ... dsec     date and time

- -

 *   d_timezone         timezone offset

- -

 * -output:

- -

 *   iyear_out ... dsec_out

- -

 *

- -

 * -For time zones east of Greenwich, d_timezone is positive.

- -

 * -For time zones west of Greenwich, d_timezone is negative.

- -

 *

- -

 * -For conversion from local time to utc, use +d_timezone.

- -

 * -For conversion from utc to local time, use -d_timezone.

- -

 */

- -

void FAR PASCAL_CONV swe_utc_timezone(

- -

        -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

- -

        -)

- -

UTC to jd -(TT and UT1)

- -

/* input: date and time (wall clock time), -calendar flag.

- -

 * -output: an array of doubles with Julian Day number in ET (TT) and UT (UT1)

- -

 *             an error -message (on error)

- -

 * The function returns OK or ERR.

- -

 */ -

- -

void swe_utc_to_jd (

- -

         int32 -iyear, int32 imonth, int32 iday,

- -

         int32 ihour, int32 imin, double -dsec,   /* note : second is a -decimal */

- -

         gregflag,      /* Gregorian calendar: 1, Julian calendar: 0 */

- -

         dret     /* -return array, two doubles:

- -

               * dret[0] = Julian day in ET (TT)

- -

               * dret[1] = Julian day in UT (UT1) */

- -

         serr     /* -error string */

- -

)

- -

TT (ET1) -to UTC

- -

/* input: Julian day number in ET (TT), -calendar flag

- -

 * -output: year, month, day, hour, min, sec in UTC */

- -

void swe_jdet_to_utc (

- -

         double tjd_et,     /* Julian day number in ET (TT) */

- -

         gregflag,      /* Gregorian calendar: 1, Julian calendar: 0 */

- -

         int32 *iyear, -int32 *imonth, int32 *iday,

- -

         int32 *ihour, int32 *imin, double -*dsec,   /* note : second is a -decimal */

- -

)

- -

UTC to TT -(ET1)

- -

/* input: Julian day number in UT (UT1), -calendar flag

- -

 * -output: year, month, day, hour, min, sec in UTC */

- -

void swe_jdut1_to_utc (

- -

         double tjd_ut,     /* Julian day number in ET (TT) */

- -

         gregflag,      /* Gregorian calendar: 1, Julian calendar: 0 */

- -

         int32 *iyear, -int32 *imonth, int32 *iday,

- -

         int32 *ihour, int32 *imin, double -*dsec,   /* note : second is a -decimal */

- -

)

- -

 

- -

Get tidal -acceleration used in swe_deltat()

- -

double swe_get_tid_acc(void);

- -

Set tidal -acceleration to be used in swe_deltat()

- -

void swe_set_tid_acc(double t_acc);

- -

Equation -of time

- -

/ * function returns the difference -between local apparent and local mean time.

- -

e = LAT – -LMT.  tjd_et is -ephemeris time */

- -

int swe_time_equ(double -tjd_et, double *e, char *serr);

- -

16.4. Initialization, setup, and closing -functions

- -

Set -directory path of ephemeris files

- -

int swe_set_ephe_path(char *path);

- -

 

- -

/* set name of JPL ephemeris file */

- -

int swe_set_jpl_file(char *fname);

- -

 

- -

/* close Swiss Ephemeris */

- -

void swe_close(void);

- -

16.5. House calculation

- -

Sidereal -time

- -

double swe_sidtime(double tjd_ut);      /* Julian day number, UT */

- -

 

- -

double swe_sidtime0(

- -

         double -tjd_ut,      /* Julian day number, UT */

- -

         double -eps,      /* obliquity of ecliptic, in -degrees */

- -

         double -nut);     /* nutation, in degrees */

- -

House -cusps, ascendant and MC

- -

int swe_houses(

- -

         double -tjd_ut,      /* Julian day number, UT */

- -

         double -geolat,      /* geographic latitude, in -degrees */

- -

         double -geolon,      /* geographic longitude, in -degrees

- -

                eastern longitude is positive,

- -

                western longitude is negative,

- -

                northern latitude is positive,

- -

                southern latitude is negative */

- -

         int -hsys,           /* house method, one of the letters PKRCAV */

- -

         double* -cusps,      /* array for 13 doubles */

- -

         double* -ascmc);     /* array for 10 doubles */

- -

Extended -house function; to compute tropical or sidereal positions

- -

int swe_houses_ex(

- -

         double -tjd_ut,      /* Julian day number, UT */

- -

         int32 -iflag,      /* -0 or SEFLG_SIDEREAL or SEFLG_RADIANS */

- -

         double -geolat,      /* geographic latitude, in -degrees */

- -

         double -geolon,      /* geographic longitude, in -degrees

- -

                eastern longitude is positive,

- -

                western longitude is negative,

- -

                northern latitude is positive,

- -

                southern latitude is negative */

- -

         int -hsys,           /* house method, one of the letters PKRCAV */

- -

         double* -cusps,      /* array for 13 doubles */

- -

         double* -ascmc);     /* array for 10 doubles */

- -

 

- -

int swe_houses_armc(

- -

         double -armc,      /* ARMC */

- -

         double -geolat,      /* geographic latitude, in -degrees */

- -

         double -eps,      /* ecliptic obliquity, in -degrees */

- -

         int -hsys,           /* house method, one of the letters PKRCAV */

- -

         double -*cusps,      /* array for 13 doubles */

- -

         double -*ascmc);     /* array for 10 doubles */

- -

 

- -

Get the -house position of a celestial point

- -

double swe_house_pos (

- -

         double -armc,      /* ARMC */

- -

         double -geolat,      /* geographic latitude, in -degrees

- -

             -eastern longitude is positive,

- -

                western longitude is negative,

- -

                northern latitude is positive,

- -

                southern latitude is negative */

- -

         double -eps,      /* ecliptic obliquity, in -degrees */

- -

         int -hsys,           /* house method, one of the letters PKRCAV */

- -

         double -*xpin,      /* array of 2 doubles: ecl. -longitude and latitude of the planet */

- -

        -char *serr);     /* return area for -error or warning message */

- -

 

- -

 

- -

Get the -Gauquelin sector position for a body

- -

 

- -

double swe_gauquelin_sector(

- -

double tjd_ut,      /* search after this time (UT) */

- -

int32 ipl,           /* planet number, if -planet, or moon */

- -

char *starname,      /* star name, if star */

- -

int32 iflag,      /* flag for ephemeris and SEFLG_TOPOCTR */

- -

int32 imeth,      /* method: 0 = with lat., 1 = without lat.,

- -

               /*              2 = from rise/set, 3 = from rise/set with refraction -*/

- -

double *geopos,      /* array of three doubles containing

- -

               * geograph. long., lat., height of observer -*/

- -

double atpress,       /* atmospheric -pressure, only useful with imeth=3;

- -

                * if 0, default = 1013.25 mbar is used*/

- -

double attemp,       /* atmospheric -temperature in degrees Celsius, only useful with imeth=3 */

- -

double *dgsect,         /* return address for -gauquelin sector position */

- -

char *serr);       /* return address for error -message */

- -

 

- -

 

- -

 

- -

16.6. Auxiliary functions

- -

Coordinate -transformation, from ecliptic to equator or vice-versa

- -

equator -> ecliptic     : eps must be positive

- -

ecliptic -> equator       : -eps must be negative eps, longitude and latitude are in degrees! */

- -

 

- -

void swe_cotrans(

- -

double *xpo, /* 3 doubles: -long., lat., dist. to be converted; distance remains unchanged, can be set to -1.00 */

- -

         double *xpn,      /* 3 doubles: long., lat., dist. Result -of the conversion */

- -

         double -eps);     /* obliquity of ecliptic, in -degrees. */

- -

Coordinate -transformation of position and speed, from ecliptic to equator or vice-versa

- -

/ * equator -> ecliptic        : -eps must be positive

- -

  -ecliptic -> equator       : eps must be negative

- -

  -eps, long., lat., and speeds in long. and lat. are in degrees! */

- -

void swe_cotrans_sp(

- -

         double -*xpo,      /* 6 doubles, input: long., -lat., dist. and speeds in long., lat and dist. */

- -

         double -*xpn,      /* 6 doubles, position and -speed in new coordinate system */

- -

         double -eps);     /* obliquity of ecliptic, in -degrees. */

- -

Get the -name of a planet

- -

char* swe_get_planet_name(

- -

int ipl,               /* -planet number */

- -

char* plan_name);     /* address for planet name, at least 20 char */

- -

 

- -

/* normalization of any degree number to -the range 0 ... 360 */

- -

double swe_degnorm(double -x);

- -

 

- -

16.7. Other functions that may be useful

- -

PLACALC, the -predecessor of SWISSEPH, had included several -functions that we do not need for SWISSEPH anymore. Nevertheless we include -them again in our DLL, because some users of our software may have taken them -over and use them in their applications. However, we gave them new names that -were more consistent with SWISSEPH.

- -

PLACALC used -angular measurements in centiseconds a lot; -a centisecond is 1/100 of an arc second. The C -type CSEC or centisec is a 32-bit integer. CSEC was used because calculation with integer variables was -considerably faster than floating point calculation on most CPUs in 1988, when -PLACALC was written.

- -

In the Swiss Ephemeris we have -dropped the use of centiseconds and use double (64-bit floating point) for all -angular measurements.

- -

Normalize -argument into interval [0..DEG360]

- -

/ * former function name: csnorm() */

- -

extern EXP32 centisec FAR PASCAL_CONV -EXP16 swe_csnorm(centisec p);

- -

Distance -in centisecs p1 - p2 normalized to [0..360]

- -

/ * former function name: difcsn() */

- -

extern EXP32 centisec FAR PASCAL_CONV -EXP16 swe_difcsn(centisec p1, centisec p2);

- -

Distance -in degrees

- -

/* former function name: difdegn() */

- -

extern EXP32 double FAR PASCAL_CONV EXP16 swe_difdegn (double p1, double p2);

- -

Distance -in centisecs p1 - p2 normalized to [-180..180]

- -

/* former function name: difcs2n() */

- -

extern EXP32 centisec FAR PASCAL_CONV -EXP16 swe_difcs2n(centisec p1, centisec p2);

- -

 

- -

Distance -in degrees

- -

/* former function name: difdeg2n() */

- -

extern EXP32 double FAR PASCAL_CONV EXP16 swe_difdeg2n(double p1, double p2);

- -

Round -second, but at 29.5959 always down

- -

 /* -former function name: roundsec() */

- -

extern EXP32 centisec FAR PASCAL_CONV -EXP16 swe_csroundsec(centisec x);

- -

Double to -long with rounding, no overflow check

- -

/* former function name: d2l() */

- -

extern EXP32 long FAR PASCAL_CONV EXP16 swe_d2l(double x);

- -

Day of -week

- -

/*Monday = 0, ... Sunday = 6  former function name: day_of_week() */

- -

extern EXP32 int FAR PASCAL_CONV EXP16 swe_day_of_week(double jd);

- -

Centiseconds --> time string

- -

/* former function name: TimeString() */

- -

extern EXP32 char *FAR PASCAL_CONV EXP16 swe_cs2timestr(CSEC t, int sep, AS_BOOL -suppressZero, char *a);

- -

Centiseconds --> longitude or latitude string

- -

/* former function name: LonLatString() */

- -

extern EXP32 char *FAR PASCAL_CONV EXP16 swe_cs2lonlatstr(CSEC t, char pchar, char -mchar, char *s);

- -

Centiseconds --> degrees string

- -

/* former function name: DegreeString() */

- -

extern EXP32 char *FAR PASCAL_CONV EXP16 swe_cs2degstr(CSEC t, char *a);

- -

 

- -

17. The SWISSEPH DLLs

- -

There is a 32 bit DLL:              swedll32.dll

- -

 

- -

You can use our programs swetest.cand swewin.cas examples.To compile swetestor swewin with a DLL:

- -

 

- -

1. The compiler needs the following files:

- -

swetest.corswewin.c

- -

swedll32.dll

- -

swedll32.lib            (if you choose -implicit linking)

- -

swephexp.h

- -

swedll.h

- -

sweodef.h

- -

 

- -

2. Define the following macros (-d):

- -

USE_DLL

- -

3. Build swetest.exe from swetest.cand swedll32.lib. -

- -

    Build swewin.exe -from swewin.c,swewin.rc, and swedll32.lib

- -

We -provide some project files which we have used to build our test samples. You -will need to adjust the project files to your environment.

- -

We have -worked with Microsoft -Visual C++ 5.0 (32-bit). The DLLs where built -with the Microsoft compilers.

- -

17.1 DLL Interface for brain damaged -compilers

- -

If you work with GFA-Basic or some other brain damaged language, the problem will occur that -the DLL interface does not support 8-bit, 32-bit, double by value and VOID data -or function types. Therefore, we have written a set of modified functions that -use double pointers instead of doubles, character -pointersinstead of characters, and integersinstead of void. The names of these modified functions are the same as the names of -their prototypes, except that they end with ”_d”, e.g. swe_calc_d() instead of swe_calc().The export definitions of these functions can be found in file swedll.h. We do not repeat them here to avoid confusion with the ordinary -functions described in the preceding chapters. The additional functions are -only wrapper functions, i.e. they call internally the real DLL functions and -return the same results.

- -

 

- -

Swiss Ephemeris release 1.61 is the last -release for which 16-bit compilers have been supported and for which a 16-bit -DLL has been created.

- -

 

- -

18. Using the DLL with  -Visual Basic 5.0

- -

 

- -

The 32-bit DLL contains the exported function -under 'decorated names'. Each function has an underscore before its name, and a -suffix of the form @xx  where xx is the number of stack bytes -used by the call.

- -

 

- -

The Visual Basic declarations for the DLL -functions and for some important flag parameters are in the file

- -

\sweph\vb\swedecl.txt and can be -inserted directly into a VB program.

- -

 

- -

A sample VB program vbsweph is included on the distribution, in directory \sweph\vb. To run this sample, the DLL file swedll32.dll -must be copied into the vb directory or installed in the Windows system -directory.

- -

 

- -

DLL functions returning a string:

- -

Some DLL functions return a string, e.g.

- -

char* swe_get_planet_name(int ipl, -char *plname)

- -

 

- -

This function copies its result into the -string pointer plname; the calling program must provide -sufficient space so that the result string fits into it. As usual in C -programming, the function copies the return string into the provided area and -returns the pointer to this area as the function value. This allows to use this -function directly in a C print statement.

- -

 

- -

In VB there are three problems with this -type of function:

- -

 

- -

1.   The string -parameter plname must be initialized to a string of -sufficient length before the call; the content does not matter because it is -overwritten by the called function. The parameter type must be
-
ByVal plname as -String.

- -

2.         The -returned string is terminated by a NULL character. This must be searched in VB -and the VB string length must be set accordingly. Our sample program -demonstrates how this can be done:

- -


-Private Function set_strlen(c$) As String
  i = InStr(c$, Chr$(0))
  c$ = Left(c$, i - 1)
  set_strlen = c$
-End Function
-plname = String(20,0)     ‘ initialize -string to length 20
-swe_get_planet_name(SE_SUN, plname)
-plname = set_strlen(plname)

- -

3.   The function -value itself is a pointer to character. This function value cannot be used in -VB because VB does not have a pointer data type. In VB, such a Function can be -either declared as type ”As long” and the -return value ignored, or it can be declared as a Sub. We have chosen to declare -all such functions as ‚Sub‘, which -automatically ignores the return value.
-
Declare Sub swe_get_planet_name -(ByVal ipl as Long, ByVal plname as String)

- -

 

- -

19. Using the DLL with  -Borland Delphi and C++ Builder

- -

19.1 Delphi 2.0 and higher (32-bit)

- -

 

- -

The information in this section was -contributed by Markus Fabian, Bern, Switzerland.

- -

 

- -

In Delphi 2.0 the declaration of the -function swe_calc() looks like this:

- -

 

- -

xx : Array[0..5] of double;

- -

function swe_calc (tjd     : double;     // Julian day number

- -

                   ipl      : Integer;    // planet number

- -

                   iflag            : -Longint;    // flag bits

- -

                   var -xx[0]     : double;

- -

                   sErr            : PChar       // -Error-String;

- -

    ) : Longint; -stdcall; far; external 'swedll32.dll' Name '_swe_calc@24';

- -

 

- -

A nearly complete set of declarations is in -file \sweph\delphi2\swe_d32.pas.

- -

A small sample project for Delphi 2.0 is -also included in the same directory (starting with release 1.25 from -June 1998). This sample requires the DLL to exist in the same directory as the -sample.

- -

19.2 Borland C++ Builder

- -

Borland -C++ Builder (BCB) does not understand the -Microsoft format in the library file SWEDLL32.LIB; it -reports an OMF error when this file is used in a BCB project. The user must -create his/her own LIB file for BCB with the utility IMPLIB which is part of -BCB.

- -

 

- -

With the following command command you -create a special lib file in the current directory:

- -

IMPLIB –f –c swe32bor.lib -\sweph\bin\swedll32.dll

- -

 

- -

In the C++ Builder project the following -settings must be made:

- -

 

- -

·          -Menu Options->Projects->Directories/Conditionals: add the conditional define USE_DLL

- -

·         -Menu  -Project->Add_to_project: add the library file swe32bor.lib to -your project.

- -

·         -In the project source, add the -include file -"swephexp.h"

- -

 

- -

In the header file swedll.h the declaration for Dllimport must be

- -

#define DllImport  extern "C" __declspec( dllimport )

- -

This is provided automatically by the __cplusplus switch for release 1.24 and -higher. For earlier releases the change must be made manually.

- -

 

- -

Changes for c++builder 2010

- -

Swiss Ephemeris developer Jean Cremers, -Netherlands, reported in August 2010 that a different procedure is needed for -new versions of c++builder. This is his report:

- -

 

- -

The method -described in the file swephprg.htm 'Using the DLL with  Borland Delphi and C++ Builder' does not -work for the current c++builder (I use c++ builder 6).

- -

The command -'IMPLIB –f –c swe32bor.lib \sweph\bin\swedll32.dll' will give 2 errors 'unable -to open file' and will create the file '-f.lib'.

- -

It seems implib -cannot handle the switches anymore, indeed when left out the file swe32bor.lib -is generated but the file is in the coff format.

- -

A solution is to -use the coff2omf.exe utility that comes with c++builder like this 'coff2omf.exe -swedll32.dll swe32bor.lib', it will generate a usable lib for c++builder.

- -

 

- -

The steps to use -sweph with c++builder then become:

- -

 

- -

----

- -

With the -following command command you create a special lib file in the current -directory:

- -

coff2omf.exe -swedll32.dll \sweph\bin\swe32bor.lib

- -

 

- -

In the C++ -Builder project the following settings must be made:

- -

 

- -

Menu -Options->Projects->Directories/Conditionals: add the conditional define -USE_DLL

- -

Menu  Project->Add_to_project: add the library -file swe32bor.lib to your project.

- -

In the project -source, add the include file "swephexp.h"

- -

----

- -

 

- -

20. Using the Swiss Ephemeris with Perl

- -

The Swiss Ephemeris can be run from Perl -using the Perl module SwissEph.pm. The module SwissEph.pm uses XSUB (“eXternal -SUBroutine”), which calls the Swiss Ephemeris functions either from a C library -or a DLL.

- -

 

- -

In order to run the Swiss Ephemeris from -Perl, you have to

- -

 

- -
    -
  1. Install the Swiss Ephemeris. Either you download the Swiss - Ephemeris DLL from http://www.astro.com/swisseph - or you download the Swiss Ephemeris C source code and compile a static or - dynamic shared library. We built the package on a Linux system and use a - shared library of the Swiss Ephemeris functions.
  2. -
- -

 

- -
    -
  1. Install the XS library:
  2. -
- -

- Unpack the -file PerlSwissEph-1.76.00.tar.gz (or whatever newest version there is)

- -

            - Open the file Makefile.PL, and edit it -according to your requirements. Then run it.

- -

            - make install

- -

 

- -

If you work on a Windows machine and prefer -to use the Swiss Ephemeris DLL, you may want to study Rüdiger Plantiko's Perl -module for the Swiss Ephemeris at http://www.astrotexte.ch/sources/SwissEph.zip. -There is also a documentation in German language by Rüdiger Plantiko at http://www.astrotexte.ch/sources/swe_perl.html).

- -

 

- -

21. The C sample program

- -

 

- -

The distribution contains executables and C -source code of sample programs which demonstrate the use of the Swiss Ephemeris -DLL and its functions.

- -

 

- -

All samples programs are compiled with the -Microsoft Visual C++ 5.0 compiler (32-bit). Project and Workspace files for -these environments are included with the source files.

- -

 

- -

Directory structure:

- -

Sweph\bin              DLL, LIB -and EXE file

- -

Sweph\src                  source -files, resource files

- -

Sweph\src\swewin32            32-bit windows sample program

- -

Sweph\src\swete32       32-bit character mode sample program

- -

 

- -

 

- -

You can run -the samples in the following environments:

- -

Swetest.exe                         in Windows command line   

- -

Swete32.exe                        in Windows command line

- -

Swewin32.exe                        in Windows

- -

 

- -

 

- -

Character mode executable that needs a -DLL

- -

Swete32.exe

- -

The project files are in \sweph\src\swete32

- -

swetest.c

- -

swedll32.lib

- -

swephexp.h

- -

swedll.h

- -

sweodef.h

- -

define -macros:USE_DLL   DOS32   DOS_DEGREE

- -

 

- -

 

- -

swewin32.exe

- -

The project files are in \sweph\src\swewin32

- -

swewin.c

- -

swedll32.lib

- -

swewin.rc

- -

swewin.h

- -

swephexp.h

- -

swedll.h

- -

sweodef.h

- -

resource.h

- -

define macro    USE_DLL

- -

 

- -

How the sample programs search for the -ephemeris files:

- -

 

- -

1.   check -environment variable SE_EPHE_PATH; if it exists it is -used, and if it has invalid content, the program fails.

- -

2.   Try to find -the ephemeris files in the current working directory

- -

3.   Try to find -the ephemeris files in the directory where the executable resides

- -

4.   Try to find -a directory named \SWEPH\EPHE in one of the following -three drives:

- -

·         -where the executable resides

- -

·         -current drive

- -

·         -drive C:

- -

 

- -

As soon as it succeeds in finding the first -ephemeris file it looks for, it expects all required ephemeris files to reside -there. This is a feature of the sample programs only, as you can see in our C -code.

- -

 

- -

The DLL itself has a different and simpler -mechanism to search for ephemeris files, which is described with the function swe_set_ephe_path() above.

- -

21. The source code distribution

- -

Starting with release 1.26, the full -source code for the Swiss Ephemeris DLL is made available. Users can choose to -link the Swiss Ephemeris code directly into their applications. The source code -is written in Ansi C and consists of these files:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Bytes

-
-

Date

-
-

File name

-
-

Comment

-
-

1639

-
-

Nov 28 - 17:09

-
-

Makefile

-
-

unix - makefile for library

-
-

API - interface files

-
-

 

-
-

 

-
-

 

-
-

15050

-
-

Nov 27 - 10:56

-
-

swephexp.h

-
-

SwissEph - API include file

-
-

14803

-
-

Nov 27 - 10:59

-
-

swepcalc.h

-
-

Placalc API - include file

-
-

Internal - files

-
-

 

-
-

 

-
-

 

-
-

8518

-
-

Nov 27 - 10:06

-
-

swedate.c

-
-

 

-
-

2673

-
-

Nov 27 - 10:03

-
-

swedate.h

-
-

 

-
-

8808

-
-

Nov 28 - 19:24

-
-

swedll.h

-
-

 

-
-

24634

-
-

Nov 27 - 10:07

-
-

swehouse.c

-
-

 

-
-

2659

-
-

Nov 27 - 10:05

-
-

swehouse.h

-
-

 

-
-

31279

-
-

Nov 27 - 10:07

-
-

swejpl.c

-
-

 

-
-

3444

-
-

Nov 27 - 10:05

-
-

swejpl.h

-
-

 

-
-

38238

-
-

Nov 27 - 10:07

-
-

swemmoon.c

-
-

 

-
-

2772

-
-

Nov 27 - 10:05

-
-

swemosh.h

-
-

 

-
-

18687

-
-

Nov 27 - 10:07

-
-

swemplan.c

-
-

 

-
-

311564

-
-

Nov 27 - 10:07

-
-

swemptab.c

-
-

 

-
-

7291

-
-

Nov 27 - 10:06

-
-

sweodef.h

-
-

 

-
-

28680

-
-

Nov 27 - 10:07

-
-

swepcalc.c

-
-

 

-
-

173758

-
-

Nov 27 - 10:07

-
-

sweph.c

-
-

 

-
-

12136

-
-

Nov 27 - 10:06

-
-

sweph.h

-
-

 

-
-

55063

-
-

Nov 27 - 10:07

-
-

swephlib.c

-
-

 

-
-

4886

-
-

Nov 27 - 10:06

-
-

swephlib.h

-
-

 

-
-

43421

-
-

Nov 28 - 19:33

-
-

swetest.c

-
-

 

-
- -

 

- -

In most cases the user will compile -a linkable or shared library from the source code, using his favorite C -compiler, and then link this library with his application.

- -

If the user programs in C, he will -only need to include the header file swephexp.h with his application; this in -turn will include sweodef.h. All other source files can ignored from the -perspective of application development.

- -

22. The PLACALC compatibility API

- -

To simplify porting of older Placalc applications to the Swiss Ephemeris API, -we have created the Placalc compatibility API which -consists of the header file swepcalc.h. This -header file replaces the headers ourdef.h, placalc.h, housasp.h and astrolib.h in Placalc applications.You should be able to link your Placalc aplication now -with the Swiss Ephemeris library. The Placalc API -is not contained in the SwissEph DLL.

- -

All new software should use the SwissEph API directly.

- -

23. Documentation files

- -

 

- -

The following files are in the directory \sweph\doc

- -

 

- -

sweph.cdr

- -

sweph.gif

- -

swephin.cdr

- -

swephin.gif

- -

swephprg.doc         Documentation -for programming, a MS Word-97 file

- -

swephprg.rtf          

- -

swisseph.doc         General -information on Swiss Ephemeris

- -

swisseph.rtf

- -

 

- -

The files with suffix .CDR are Corel Draw -7.0 documents with the Swiss Ephemeris icons.

- -

 

- -

24. Swisseph with different hardware and compilers

- -

Depending on what hardware and compiler you -use, there will be slight differences in your planetary calculations. For -positions in longitude, they will be never larger than 0.0001" in -longitude. Speeds show no difference larger than 0.0002 arcsec/day.

- -

 

- -

The following factors show larger -differences between HPUX and Linux on a Pentium II processor:

- -

Mean -Node, Mean Apogee:

- -

HPUX PA-Risc non-optimized versus optimized -code:

- -

  -differences are smaller than 0.001 arcsec/day

- -

 

- -

HPUX PA-Risc -versus Intel Pentium gcc non-optimzed

- -

  differences are -smaller than 0.001 arcsec/day

- -

 

- -

Intel Pentium gss non-optimzed versus -O9 -optimized:

- -

Mean -Node, True node, Mean Apogee: difference smaller -than 0.001 arcsec/day

- -

Osculating -Apogee: differences smaller than 0.03 arcsec

- -

 

- -

The differences originate from the fact -that the floating point arithmetic in the Pentium is executed with 80 bit -precision, whereas stored program variables have only 64 bit precision. When -code is optimized, more intermediate results are kept inside the processor -registers, i.e. they are not shortened from 80bit to 64 bit. When these results -are used for the next calculation, the outcome is then slightly different.

- -

In the computation of speed for the nodes -and apogee, differences between positions at close intervals are involved; the -subtraction of nearly equal values results shows differences in internal -precision more easily than

- -

other types of calculations. As these -differences have no effect on any imaginable application software and are mostly -within the design limit of Swiss Ephemeris, they can be savely ignored.

- -

 

- -

25. Debugging and Tracing Swisseph

- -

25.1. If you are using the DLL

- -

Besides the ordinary Swisseph function, -there are two additional DLLs that allow you tracing your Swisseph function -calls:

- -

Swetrs32.dll is for single task debugging, i.e. if only one application at a -time calls Swisseph functions.

- -

Two output files -are written:

- -

a) swetrace.txt: reports all Swisseph functions that are being called.

- -

b) swetrace.c: contains C code equivalent to the Swisseph calls that your -application did.

- -

The last bracket -of the function main() at the end of the file is -missing.

- -

If you want to -compile the code, you have to add it manually. Note that these files may grow -very fast,

- -

depending on -what you are doing in your application. The output is limited to 10000 function -calls per run.

- -

Swetrm32.dll is for multitasking, i.e. if more than one application at a time -are calling Swisseph functions. If you used the single task DLL here, all -applications would try to write their trace output into the same file. Swetrm32.dll generates output file names that contain the process identification -number of the application by which the DLL is called, e.g. swetrace_192.c and swetrace_192.txt.

- -

Keep in mind -that every process creates its own output files and with time might fill your -disk.

- -

In order to use a trace DLL, you have to -replace your Swisseph DLL by it:

- -

a) save your Swisseph DLL

- -

b) rename the trace DLL as your Swisseph -DLL (e.g. as -swedll32.dll)

- -

 

- -

IMPORTANT: The Swisseph DLL will not work properly if you call it from more -than one thread.

- -

 

- -

Output samples swetrace.txt:

- -
- -

 

- -

swe_deltat: 2451337.870000                  0.000757        

- -

swe_set_ephe_path: path_in =                   path_set = \sweph\ephe\

- -

swe_calc: 2451337.870757                  -1                  258                  23.437404                  23.439365        -0.003530     -0.001961                  0.000000                  0.000000

- -

swe_deltat: 2451337.870000                  0.000757        

- -

swe_sidtime0: 2451337.870000                  sidt = 1.966683  eps = 23.437404                  nut = -0.003530     

- -

swe_sidtime: 2451337.870000                  1.966683        

- -

swe_calc: 2451337.870757                  0                  258                  77.142261        -0.000071                  1.014989                  0.956743         -0.000022                  0.000132

- -

swe_get_planet_name: 0      Sun                 

- -

 

- -
- -

 

- -

swetrace.c:

- -
- -

#include -"sweodef.h"

- -

#include -"swephexp.h"

- -

 

- -

void -main()

- -

{

- -

  double tjd, t, nut, eps; int i, ipl, retc; -long iflag;

- -

  double armc, geolat, cusp[12], ascmc[10]; -int hsys;

- -

  double xx[6]; long iflgret;

- -

  char s[AS_MAXCH], star[AS_MAXCH], -serr[AS_MAXCH];

- -

 

- -

/*SWE_DELTAT*/

- -

  tjd = -2451337.870000000; t = swe_deltat(tjd);

- -

  -printf("swe_deltat: %f\t%f\t\n", tjd, t);

- -

 

- -

/*SWE_CALC*/

- -

  tjd = -2451337.870757482; ipl = 0; iflag = 258;

- -

  iflgret = -swe_calc(tjd, ipl, iflag, xx, serr);     /* -xx = 1239992 */

- -

 

- -

/*SWE_CLOSE*/

- -

  swe_close();

- -
- -

 

- -

25.2 If you are using the source code

- -

Similar tracing is also possible if you -compile the Swisseph source code into your application. Use the preprocessor -definitions TRACE=1 for single task debugging, and -TRACE=2 for multitasking. In most compilers this flag can be set with –DTRACE=1 or /DTRACE=1.

- -

For further explanations, see 21.1.

- -
- -

 

- -
- -

 

- -

Appendix

- -

Update and release history

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Updated

-
-

By

-
-

 

-
-

30-sep-97

-
-

Alois

-
-

added - chapter 10 (sample programs)

-
-

7-oct-97

-
-

Dieter

-
-

inserted - chapter 7 (house calculation)

-
-

8-oct-97

-
-

Dieter

-
-

Appendix - ”Changes from version 1.00 to 1.01”

-
-

12-oct-1997

-
-

Alois

-
-

Added new - chapter 10 Using the DLL with Visual Basic

-
-

26-oct-1997

-
-

Alois

-
-

 improved implementation and documentation - of swe_fixstar()

-
-

28-oct-1997

-
-

Dieter

-
-

 Changes from Version 1.02 to 1.03

-
-

29-oct-1997

-
-

Alois

-
-

 added VB sample extension, fixed VB - declaration errors

-
-

9-Nov-1997

-
-

Alois

-
-

 added Delphi declaration sample

-
-

8-Dec-97

-
-

Dieter

-
-

 remarks concerning computation of - asteroids, changes to version 1.04

-
-

8-Jan-98

-
-

Dieter

-
-

 changes from version 1.04 to 1.10.

-
-

12-Jan-98

-
-

Dieter

-
-

 changes from version 1.10 to 1.11.

-
-

21-Jan-98

-
-

Dieter

-
-

 calculation of topocentric planets and - house positions (1.20)

-
-

28-Jan-98

-
-

Dieter

-
-

 Delphi 1.0 sample and declarations for 16- - and 32-bit Delphi (1.21)

-
-

11-Feb-98

-
-

Dieter

-
-

 version 1.23

-
-

7-Mar-1998

-
-

Alois

-
-

 version 1.24 support for Borland C++ - Builder added

-
-

4-June-1998

-
-

Alois

-
-

 version 1.25 sample for Borland Delphi-2 - added

-
-

29-Nov-1998

-
-

Alois

-
-

 version 1.26 source code information added - §16, Placalc API added

-
-

1-Dec-1998

-
-

Dieter

-
-

 chapter 19 and some additions in beginning - of Appendix.

-
-

2-Dec-1998

-
-

Alois

-
-

 Equation of Time explained (in §4), changes - version 1.27 explained

-
-

3-Dec-1998

-
-

Dieter

-
-

 Note on ephemerides of 1992 QB1 and 1996 - TL66

-
-

17-Dec-1998

-
-

Alois

-
-

 Note on extended time range of 10'800 years

-
-

22 Dec 1998

-
-

Alois

-
-

 Appendix - A

-
-

12-Jan-1999

-
-

Dieter

-
-

 Eclipse functions added, version 1.31

-
-

19-Apr-99

-
-

Dieter

-
-

 version 1.4

-
-

8-Jun-99

-
-

Dieter

-
-

 Chapter 21 on tracing an debugging Swisseph

-
-

27-Jul-99

-
-

Dieter

-
-

 Info about sidereal calculations

-
-

16-Aug-99

-
-

Dieter

-
-

 version 1.51, minor bug fixes

-
-

15-Feb-00

-
-

Dieter

-
-

 many things for version 1.60

-
-

19-Mar-00

-
-

Vic Ogi

-
-

SWEPHPRG.DOC - re-edited

-
-

17-apr-02

-
-

Dieter

-
-

Documentation for version 1.64

-
-

26-Jun-02

-
-

Dieter

-
-

Version 1.64.01

-
-

31-dec-2002

-
-

Alois

-
-

edited doc to remove references to 16-bit - version

-
-

12-jun-2003

-
-

Alois/Dieter

-
-

Documentation for version 1.65

-
-

10-Jul-2003

-
-

Dieter

-
-

Documentation for version 1.66

-
-

 

-
-

25-May-2004

-
-

Dieter

-
-

Documentation of eclipse functions updated

-
-

 

-
-

31-Mar-2005

-
-

Dieter

-
-

Documentation for version 1.67

-
-

 

-
-

3-May-2005

-
-

Dieter

-
-

Documentation for version 1.67.01

-
-

 

-
-

22-Feb-2006

-
-

Dieter

-
-

Documentation for version 1.70.00

-
-

 

-
-

2-May-2006

-
-

Dieter

-
-

Documentation for version 1.70.01

-
-

 

-
-

5-Feb-2006

-
-

Dieter

-
-

Documentation for version 1.70.02

-
-

 

-
-

30-Jun-2006

-
-

Dieter

-
-

Documentation for version 1.70.03

-
-

 

-
-

28-Sep-2006

-
-

Dieter

-
-

Documentation for version 1.71

-
-

29-May-2008

-
-

Dieter

-
-

Documentation for version 1.73

-
-

18-Jun-2008

-
-

Dieter

-
-

Documentation for version 1.74

-
-

27-Aug-2008

-
-

Dieter

-
-

Documentation for version 1.75

-
-

7-April-2009

-
-

Dieter

-
-

Documentation of version 1.76

-
- -

 

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Release

-
-

Date

-
-

 

-
-

1.00

-
-

30-sep-1997

-
-

 

-
-

1.01

-
-

9-oct-1997

-
-

houses(), sidtime() made more convenient for developer, Vertex added.

-
-

1.02

-
-

16-oct-1997

-
-

houses() - changed again, Visual Basic support, new numbers for fictitious planets This - release was pushed to all existing licensees at this date.

-
-

1.03

-
-

28-Oct-1997

-
-

minor bug - fixes, improved swe_fixstar() functionality. This - release was not pushed, as the changes and bug fixes are minor; no changes of - function definitions occurred.

-
-

1.04

-
-

8-Dec-1997

-
-

minor bug - fixes; more asteroids.

-
-

1.10

-
-

9-Jan-1998

-
-

bug fix, s. - Appendix. This release was pushed to all existing licensees at this date.

-
-

1.11

-
-

12-Jan-98

-
-

small - improvements

-
-

1.20

-
-

20-Jan-98

-
-

New: topocentric planets - and house positions; a minor bug fix

-
-

1.21

-
-

28-Jan-98

-
-

Delphi - declarations and sample for Delphi 1.0

-
-

1.22

-
-

2-Feb-98

-
-

Asteroids - moved to subdirectory. Swe_calc() finds them - there.

-
-

1.23

-
-

11-Feb-98

-
-

two minor - bug fixes.

-
-

1.24

-
-

7-Mar-1998

-
-

Documentation - for Borland C++ Builder added, see section 14.3

-
-

1.25

-
-

4-June-1998

-
-

Sample for - Borland Delphi-2 added

-
-

1.26

-
-

29-Nov-1998

-
-

full source - code made available, Placalc API documented

-
-

1.27

-
-

2-dec-1998

-
-

Changes to SE_EPHE_PATH and swe_set_ephe_path()

-
-

1.30

-
-

17-Dec-1998

-
-

Time range - extended to 10'800 years

-
-

1.31

-
-

12-Jan-1999

-
-

New: Eclipse functions - added

-
-

1.40

-
-

19-Apr-99

-
-

New: planetary phenomena - added; bug fix in swe_sol_ecl_when_glob();

-
-

1.50

-
-

27-Jul-99

-
-

New: SIDEREAL planetary - positions and houses; new fixstars.cat

-
-

1.51

-
-

16-Aug-99

-
-

Minor bug - fixes

-
-

1.60

-
-

15-Feb-2000

-
-

Major - release with many new features and - some minor bug fixes

-
-

1.61

-
-

11-Sep-2000

-
-

Minor - release, additions to se_rise_trans(), swe_houses(), ficitious planets

-
-

1.61.01

-
-

18-Sep-2000

-
-

Minor - release, added Alcabitus house system

-
-

1.61.02

-
-

10-Jul-2001

-
-

Minor - release, fixed bug which prevented asteroid files > 22767 to be accepted

-
-

1.61.03

-
-

20-Jul-2001

-
-

Minor - release, fixed bug which was introduced in 1.61.02: Ecliptic was computed in - Radians instead of degrees

-
-

1.62.00

-
-

    23-Jul-2001

-
-

Minor - release, several bug fixes, code for fictitious satellites of the earth, - asteroid files > 55535 are accepted

-
-

1.62.01

-
-

16-Oct-2001

-
-

Bug fix, - string overflow in sweph.c::read_const(),

-
-

1.63.00

-
-

5-Jan-2002

-
-

Added house - calculation to sweetest.c and swetest.exe

-
-

1.64.00

-
-

6-Mar-2002

-
-

House - system ‘G’ for house functions and function swe_gauquelin_sector() for - Gauquelin sector calculations

-

Occultations of planets and fixed stars - by the moon

-

New Delta T algorithms

-
-

1.64.01

-
-

26-Jun-2002

-
-

Bug fix in - swe_fixstar(). Stars with decl. between –1° and 0° were wrong

-
-

1.65.00

-
-

12-Jun-2003

-
-

Long - variables replaced by INT32 for 64-bit compilers

-
-

1.66.00

-
-

10-Jul-2003

-
-

House - system ‘M’ for Morinus houses

-
-

1.67.00

-
-

31-Mar-2005

-
-

Update Delta T

-
-

1.67.01

-
-

3-May-2005

-
-

Docu for - sidereal calculations (Chap. 10) updated (precession-corrected transits)

-
-

1.70.00

-
-

22-Feb-2006

-
-

all - relevant IAU resolutions up to 2005 have been implemented

-
-

1.70.01

-
-

2-May-2006

-
-

minor bug - fix

-
-

1.70.02

-
-

5-May-2006

-
-

minor bug - fix

-
-

1.70.03

-
-

30-June-2006

-
-

bug fix

-
-

1.71

-
-

28-Sep-2006

-
-

Swiss - Ephemeris functions able to calculate minor planet  no 134340 Pluto

-
-

1.72

-
-

28-Sep-2007

-
-

New - function swe_refract_extended(), Delta T update, minor bug fixes

-
-

1.73

-
-

29-May-2008

-
-

New - function swe_fixstars_mag(), Whole Sign houses

-
-

1.74

-
-

18-Jun-2008

-
-

Bug fixes

-
-

1.75

-
-

27-Aug-2008

-
-

Swiss - Ephemeris can read newer JPL ephemeris files; bug fixes

-
-

1.76

-
-

7-April-2009

-
-

Heliacal - risings, UTC and minor improvements/bug fixes

-
-

1.77

-
-

26-Jan-2010

-
-

swe_deltat(), - swe_fixstar() improved, swe_utc_time_zone_added

-
-

1.78

-
-

3-Aug-2012

-
-

New - precession, improvement of some eclipse functions, some minor bug fixes

-
-

1.79

-
-

18-Apr-2013

-
-

New - precession, improvement of some eclipse functions, some minor bug fixes

-
- -

 

- -

Changes from version 1.78 to 1.79

- -

- Improved precision in eclipse calculations: -2nd and 3rd contact with solar eclipses, penumbral and -partial phases with lunar eclipses.

- -

- Bug fix in function -swe_sol_eclipse_when_loc().If the local maximum eclipse occurs at sunset or -sunrise, tret[0] now gives the moment when the lower limb of the Sun touches -the horizon. This was not correctly implemented in former versions

- -

- Several changes to C code that had -caused compiler warnings (as proposed by Torsten Förtsch).

- -

- Bug fix in Perl functions swe_house() -etc. These functions had crashed with a segmention violation if called with the -house parameter ‘G’.

- -

- Bug fix in Perl function swe_utc_to_jd(), where gregflag had been -read from the 4th instead of the 6th parameter.

- -

- Bug fix in Perl functions to do with date conversion. The default -mechanism for gregflag was buggy. 

- -

- For -Hindu astrologers, some more ayanamshas were added that are related to -Suryasiddhanta and Aryabhata and are of historical interest.

- -

 

- -

Changes from version 1.77 to 1.78

- -

- precession is now calculated according to Vondrák, Capitaine, -and Wallace 2011.

- -

- Delta t for current years updated.

- -

- new function: swe_rise_trans_true_hor() -for risings and settings at a local horizon with known height.

- -

- functions swe_sol_eclipse_when_loc(), -swe_lun_occult_when_loc(): return values tret[5] and tret[6] (sunrise and -sunset times) added, which had been 0 so far.

- -

- function swe_lun_eclipse_how(): return -values attr[4-6] added (azimuth and apparent and true altitude of moon).

- -

- Attention with swe_sol_eclipse_how(): return value -attr[4] is azimuth, now measured from south, in agreement with the function -swe_azalt() and swe_azalt_rev().

- -

- minor bug fix in swe_rise_trans(): -twilight calculation returned invalid times at high geographic latitudes.

- -

- minor bug fix: when calling swe_calc() -1. with SEFLG_MOSEPH, 2. with SEFLG_SWIEPH, 3. again with SEFLG_MOSEPH, the -result of 1. and 3. were slightly different. Now they agree.

- -

- minor bug fix in swe_houses(): With -house methods H (Horizon), X (Meridian), M (Morinus), and geographic latitudes -beyond the polar circle, the ascendant was wrong at times. The ascendant always -has to be on the eastern part of the horizon.

- -

 

- -

Changes from version 1.76 to 1.77

- -

- Delta T:

- -

  -- Current values were updated.

- -

  -- File sedeltat.txt understands doubles.

- -

  -- For the period before 1633, the new formulae by Espenak and Meeus -(2006) are used.  These formulae were -derived from Morrison & Stephenson (2004), as used by the Swiss Ephemeris -until version 1.76.02.

- -

  -- The tidal acceleration of the moon contained in LE405/6 was corrected -according to Chapront/Chapront-Touzé/Francou A&A 387 (2002), p. 705.

- -

 

- -

- Fixed stars:

- -

  -- There was an error in the handling of the proper motion in RA. The -values given in fixstars.cat, which are taken from the Simbad database -(Hipparcos), are referred to a great circle and include a factor of cos(d0).

- -

  -- There is a new fixed stars file sefstars.txt. The parameters are now -identical to those in the Simbad database, which makes it much easier to add -new star data to the file. If the program function swe_fixstars() does not find -sefstars.txt, it will try the the old fixed stars file fixstars.cat and will -handle it correctly.

- -

  -- Fixed stars data were updated, some errors corrected.

- -

  -- Search string for a star ignores white spaces.

- -

 

- -

- Other changes:

- -

  -- New function swe_utc_time_zone(), converts local time to UTC and UTC -to local time. Note, the function has no knowledge about time zones. The Swiss -Ephemeris still does not provide the time zone for a given place and time.

- -

  -- swecl.c:swe_rise_trans() has two new minor features: -SE_BIT_FIXED_DISC_SIZE and SE_BIT_DISC_BOTTOM (thanks to Olivier Beltrami)

- -

  -- minor bug fix in swemmoon.c, Moshier's lunar ephemeris (thanks to -Bhanu Pinnamaneni)

- -

  -- solar and lunar eclipse functions provide additional data:

- -

    -attr[8] magnitude, attr[9] saros series number, attr[10] saros series -member number

- -

 

- -

Changes from version 1.75 to 1.76

- -

New features:

- -

- Functions for the calculation of -heliacal risings and related phenomena, s. chap. 6.15-6.17.

- -

- Functions for conversion between UTC -and JD (TT/UT1), s. chap. 7.2 and 7.3.

- -

- File sedeltat.txt allows the user to -update Delta T himself regularly, s. chap. 8.3

- -

- Function swe_rise_trans(): twilight -calculations (civil, nautical, and astronomical) added

- -

- Function swe_version() returns version -number of Swiss Ephemeris.

- -

- Swiss Ephemeris for Perl programmers -using XSUB

- -

 

- -

Other updates:

- -

- Delta T updated (-2009).

- -

 

- -

Minor bug fixes:

- -

- swe_house_pos(): minor bug with -Alcabitius houses fixed

- -

- swe_sol_eclipse_when_glob(): totality -times for eclipses jd2456776 and jd2879654 fixed (tret[4], tret[5])

- -

Changes from version 1.74 to version 1.75

- -

- The Swiss Ephemeris is now able to read -ephemeris files of JPL ephemerides DE200 - DE421. If JPL will not change the -file structure in future releases, the Swiss Ephemeris will be able to read -them, as well.

- -

 

- -

- Function swe_fixstar() (and -swe_fixstar_ut()) was made slightly more efficient.

- -

 

- -

- Function swe_gauquelin_sector() was -extended.

- -

 

- -

- Minor bug fixes.

- -

Changes from version 1.73 to version 1.74

- -

The Swiss Ephemeris is made available -under a dual licensing system:

- -

  a) -GNU public license version 2 or later

- -

  b) -Swiss Ephemeris Professional License

- -

For more details, see at the beginning of -this file and at the beginning of every source code file.

- -

 

- -

Minor bug fixes:

- -

- Bug in swe_fixstars_mag() fixed.

- -

- Bug in swe_nod_aps() fixed. With -retrograde asteroids (20461 Dioretsa, 65407 2002RP120), the calculation of -perihelion and aphelion was not correct.

- -

- The ephemeris of asteroid 65407 -2002RP120 was updated. It had been wrong before 17 June 2008.

- -

Changes from version 1.72 to version 1.73

- -

New features:

- -

- Whole Sign houses implemented (W)

- -

- swe_house_pos() now also handles -Alcabitius house method

- -

- function swe_fixstars_mag() provides -fixed stars magnitudes

- -

 

- -

Changes from version 1.71 to version 1.72

- -

- Delta T values for recent years were -updated

- -

- Delta T -calculation before 1600 was updated to Morrison/Stephenson 2004..

- -

- New function swe_refract_extended(), in -cooperation with archaeoastronomer Victor  -Reijs.

- -

  This -function allows correct calculation of refraction for altitudes above sea > -0, where the ideal horizon and

- -

  -Planets that are visible may have a negative height.

- -

- Minor bugs in -swe_lun_occult_when_glob() and swe_lun_eclipse_how() were fixed.

- -

 

- -

Changes from version 1.70.03 to version -1.71

- -

In September 2006, Pluto was introduced -to the minor planet catalogue and given the catalogue number 134340.

- -

The numerical integrator we use to -generate minor planet ephemerides would crash with 134340 Pluto, because Pluto -is one of those planets whose gravitational perturbations are used for the -numerical integration. Instead of fixing the numerical integrator for this -special case, we chang the Swiss Ephemeris functions in such a way that they -treat minor planet 134340 Pluto (ipl=SE_AST_OFFSET+134340) as our main body -Pluto (ipl=SE_PLUTO=9). This also results in a slightly better precision for -134340 Pluto.

- -

 

- -

Swiss Ephemeris versions prior to 1.71 -are not able to do any calculations for minor planet number 134340.

- -

Changes from version 1.70.02 to version -1.70.03

- -

Bug fixed (in swecl.c: swi_bias()): This -bug sometimes resulted in a crash, if the DLL was used and the SEFLG_SPEED was -not set. It seems that the error happened only with the DLL and did not appear, -when the Swiss Ephemeris C code was directly linked to the application.

- -

 

- -

Code to do with (#define NO_MOSHIER ) war -removed.

- -

Changes from version 1.70.01 to version -1.70.02

- -

Bug fixed in speed calculation for -interpolated lunar apsides. With ephemeris positions close to 0 Aries, speed -calculations were completely wrong. E.g. swetest -pc -bj3670817.276275689 -(speed = 1448042° !)

- -

Thanks, once more, to Thomas Mack, for -testing the software so well.

- -

 

- -

Changes from version 1.70.00 to version -1.70.01

- -

Bug fixed in speed calculation for -interpolated lunar apsides. Bug could result in program crashes if the speed -flag was set.

- -

 

- -

Changes from version 1.67 to version 1.70

- -

Update of -algorithms to IAU standard recommendations:

- -

All relevant IAU resolutions up to 2005 -have been implemented. These include:

- -

- the "frame bias" rotation from -the JPL reference system ICRS to J2000. The correction of position ~= 0.0068 -arc sec in right ascension.

- -

- the precession model P03 -(Capitaine/Wallace/Chapront 2003). The correction in longitude is smaller than -1 arc second from 1000 B.C. on.

- -

- the nutation model IAU2000B (can be -switched to IAU2000A)

- -

- corrections to epsilon

- -

- corrections to sidereal time

- -

- fixed stars input data can be -"J2000" or "ICRS"

- -

- fixed stars conversion FK5 -> J2000, -where required

- -

- fixed stars data file was updated with -newer data

- -

- constants in sweph.h updated

- -

For more info, see the documentation -swisseph.doc, chapters 2.1.2.1-3.

- -

 

- -

New features:

- -

- Ephemerides of "interpolated lunar -apogee and perigee", as published by Dieter Koch in 2000 (swetest -pcg).

- -

  -For more info, see the documentation swisseph.doc, chapter 2.2.4.

- -

- House system according to Bogdan -Krusinski (character ‘U’).

- -

  -For more info, see the documentation swisseph.doc, chapter 6.1.13.

- -

 

- -

Bug fixes:

- -

- Calculation of magnitude was wrong with -asteroid numbers < 10000 (10-nov-05)

- -

 

- -

Changes from version 1.66 to version 1.67

- -

 

- -

Delta-T updated with new measured values -for the years 2003 and 2004, and better estimates for 2005 and 2006.

- -

Bug fixed #define SE_NFICT_ELEM 15

- -

Changes from version 1.65 to version 1.66

- -

 

- -

New features:

- -

House system according to Morinus (system -‘M’).

- -

Changes from version 1.64.01 to version -1.65.00

- -

 

- -

‘long’ variables were changed to ‘INT32’ -for 64-bit compilers.

- -

 

- -

Changes from version 1.64 to version -1.64.01

- -

 

- -

- Bug fixed in swe_fixstar(). Declinations -between –1° and 0° were wrongly taken as positive.

- -

Thanks to John Smith, Serbia, who found -this bug.

- -

- Several minor bug fixes and cosmetic code -improvements suggested by Thomas Mack, Germany.

- -

  -swetest.c: options –po and –pn work now.

- -

  -Sweph.c: speed of mean node and mean lunar apogee were wrong in rare -cases, near 0 Aries.

- -

Changes from version 1.63 to version 1.64

- -

 

- -

New features:

- -

1) Gauquelin sectors:

- -

- swe_houses() etc. can be called with -house system character ‘G’ to calculate Gauquelin sector boundaries.

- -

- swe_house_pos() can be called with house -system ‘G’ to calculate sector positions of planets.

- -

- swe_gauquelin_sector() is new and -calculates Gauquelin sector positions with three methods: without ecl. latitude, -with ecl. latitude, from rising and setting.

- -

 

- -

2) Waldemath Black Moon elements have been -added in seorbel.txt (with thanks to Graham Dawson).

- -

 

- -

3) Occultations of the planets and fixed -stars by the moon

- -

- swe_lun_occult_when_loc() calculates -occultations for a given geographic location

- -

- swe_lun_occult_when_glob() calculates -occultations globally

- -

 

- -

4) Minor bug fixes in swe_fixstar() -(Cartesian coordinates), solar eclipse functions, swe_rise_trans()

- -

 

- -

5) sweclips.c integrated into swetest.c. -Swetest now also calculates eclipses, occultations, risings and settings.

- -

 

- -

6) new Delta T algorithms

- -

Changes from version 1.62 to version 1.63

- -

 

- -

New features:

- -

The option –house was added to swetest.c so -that swetest.exe can now be used to compute complete horoscopes in textual -mode.

- -

Bux fix: a minor bug in function -swe_co_trans was fixed. It never had an effect.

- -

Changes from version 1.61.03 to version -1.62

- -

 

- -

New features:

- -

1) Elements for hypothetical bodies that -move around the earth (e.g. Selena/White Moon) can be added to the file -seorbel.txt.

- -

2) The software will be able to read -asteroid files > 55535.

- -

 

- -

Bug fixes:

- -

1) error in geocentric planetary descending -nodes fixed

- -

2) swe_calc() now allows hypothetical -planets beyond SE_FICT_OFFSET + 15

- -

3) position of hypothetical planets -slightly corrected (< 0.01 arc second)

- -

Changes from version 1.61 to 1.61.01

- -

 

- -

New features:

- -

1. swe_houses and swe_houses_armc now -supports the Alcabitus house system. The function swe_house_pos() does not yet, -because we wanted to release quickly on user request.

- -

Changes from version 1.60 to 1.61

- -

 

- -

New features:

- -

1. Function swe_rise_trans(): Risings and -settings also for disc center and without refraction

- -

2. “topocentric” house system added to -swe_houses() and other house-related functions

- -

3. Hypothetical planets (seorbel.txt), -orbital elements with t terms are possible now (e.g. for Vulcan according to -L.H. Weston)

- -

Changes from version 1.51 to 1.60

- -

 

- -

New features:

- -

1. Universal time functions swe_calc_ut(), swe_fixstar_ut(), etc.

- -

2. Planetary nodes, perihelia, aphelia, -focal points

- -

3. Risings, settings, and meridian transits of the Moon, planets, asteroids, and stars.

- -

4. Horizontal coordinates (azimuth and altitude)

- -

5. Refraction

- -

6. User-definable orbital elements

- -

7. Asteroid names can be updated by user

- -

8. Hitherto missing "Personal -Sensitive Points" according to M. Munkasey.

- -

 

- -

Minor bug fixes:

- -

·         -Astrometric lunar positions (not relevant for astrology; swe_calc(tjd, SE_MOON, SEFLG_NOABERR)) had a maximum error of about 20 arc sec).

- -

·         -Topocentric lunar positions (not relevant for common astrology): the ellipsoid shape of the -earth was not correctly implemented. This resulted in an error of 2 - 3 arc -seconds. The new precision is 0.2 - 0.3 arc seconds, corresponding to about 500 -m in geographic location. This is also the precision that Nasa's Horizon system -provides for the topocentric moon. The planets are much better, of course.

- -

·         -Solar eclipse functions: The correction of the topocentric moon -and another small bug fix lead to slightly different results of the solar -eclipse functions. The improvement is within a few time seconds.

- -

 

- -

Changes from version 1.50 to 1.51

- -

Minor bug fixes:

- -

·         -J2000 coordinates for the lunar node -and osculating apogee corrected. This bug did not affect ordinary computations -like ecliptical or equatorial positions.

- -

·         -minor bugs in swetest.c corrected

- -

·         -sweclips.exe recompiled

- -

·         -trace DLLs recompiled

- -

·         -some VB5 declarations corrected

- -

Changes from version 1.40 to 1.50

- -

New:SIDEREAL planetary -and house position.

- -

·         -The fixed star file fixstars.cat has been improved and enlarged by Valentin Abramov, Tartu, Estonia.

- -

·         -Stars have been ordered by -constellation. Many names and alternative spellings have been added.

- -

·         -Minor bug fix in solar eclipse -functions, sometimes relevant in border-line cases annular/total, partial/total.

- -

·         -J2000 coordinates for the lunar nodes -were redefined: In versions before 1.50, the J2000 lunar nodes were the -intersection points of the lunar orbit with the ecliptic of 2000. From 1.50 on, -they are defined as the intersection points with the ecliptic of date, referred -to the coordinate system of the ecliptic of J2000.

- -

 

- -

Changes from version 1.31 to 1.40

- -

New:Function for several -planetary phenomena added

- -

Bug fix in swe_sol_ecl_when_glob(). The time for maximum eclipse at local apparent noon (tret[1]) was -sometimes wrong. When called from VB5, the program crashed.

- -

 

- -

Changes from version 1.30 to 1.31

- -

New: Eclipse functions added.

- -

Minor bug fix: with previous versions, the -function -swe_get_planet_name() got the name wrong, if it -was an asteroid name and consisted of two or more words (e.g. Van Gogh)

- -

Changes from version 1.27 to 1.30

- -

The time range of the Swiss Ephemeris has -been extended by numerical integration. The Swiss Ephemeris now covers the -period 2 Jan 5401 BC to 31 Dec 5399 AD. To use the extended time -range, the appropriate ephemeris files must be downloaded.

- -

In the JPL mode and the Moshier mode the -time range remains unchanged at 3000 BC to 3000 AD.

- -

 IMPORTANT  -

- -

Chiron’s ephemeris is now restricted to the -time range 650 AD – 4650 AD; for explanations, see swisseph.doc.

- -

Outside this time range, Swiss Ephemeris -returns an error code and a position value 0. You must handle this situation in -your application. There is a similar restriction with Pholus (as with some -other asteroids).

- -

Changes from version 1.26 to 1.27

- -

The environment variable SE_EPHE_PATH is now always overriding the call to swe_set_ephe_path() if it is set and contains a value.

- -

Both the environment variable and the -function argument can now contain a list of directory names where the ephemeris -files are looked for. Before this release, they could contain only a single -directory name.

- -

Changes from version 1.25 to 1.26

- -

·         -The asteroid subdirectory -ephe/asteroid has been split into directories ast0, ast1,... -with 1000 asteroid files per directory.  -

- -

·         -source code is included with the -distribution under the new licensing model

- -

·         -the Placalc compatibility API (swepcalc.h) is now documented

- -

·         -There is a new function to -compute the equation of time swe_time_equ().

- -

·         -Improvements of ephemerides:

- -

·         -ATTENTION: Ephemeris of 16 Psyche has been wrong so far ! By a -mysterious mistake it has been identical to 3 Juno.

- -

·         -Ephemerides of Ceres, Pallas, Vesta, -Juno, Chiron and Pholus have been reintegrated, with more recent orbital -elements and parameters (e.g. asteroid masses) that are more appropriate to -Bowells database of minor planets elements. The differences are small, though.

- -

·         -Note that the CHIRON ephemeris is should not be used -before 700 A.D.

- -

·         -Minor bug fix in computation of -topocentric planet positions. Nutation has not been correcly considered in -observer’s position. This has lead to an error of 1 milliarcsec with the -planets and 0.1” with the moon.

- -

·         -We have inactivated the coordinate -transformation from IERS to FK5, because there is still no -generally accepted algorithm. This results in a difference of a few milliarcsec -from former releases.

- -

Changes from version 1.22 to 1.23

- -

·         -The topocentric flag now also works -with the fixed stars. (The effect of diurnal aberration is a few 0.1 arc -second.)

- -

·         -Bug fix: The return position of swe_cotrans_sp() has been 0, when the input distance was 0.

- -

·         -About 140 asteroids are on the CD.

- -

Changes from version 1.21 to 1.22

- -

·         -Asteroid ephemerides have been moved -to the ephe\asteroid.

- -

·         -The DLL has been modified in such a -way that it can find them there.

- -

·         -All asteroids with catalogue number -below 90 are on the CD and a few additional ones.

- -

Changes from version 1.20 to 1.21

- -

Sample program and function declarations -for Delphi 1.0   added.

- -

Changes from version 1.11 to 1.20

- -

New:

- -

·         -A flag bit SEFLG_TOPOCTR allows to compute topocentric planet positions. Before calling swe_calc(), call swe_set_topo.

- -

·         -swe_house_pos for computation of the -house position of a given planet. See description in SWISSEPH.DOC, Chapter 3.1 ”Geocentric and topocentric -positions”. A bug has been fixed that has sometimes turned up, when the -JPL ephemeris was closed. (An error in memory allocation and freeing.)

- -

·         -Bug fix: swe_cotrans() did not work in former versions.

- -

Changes from version 1.10 to 1.11

- -

No bug fix, but two minor improvements:

- -

 

- -

·         -A change of the ephemeris bits in -parameter iflag of function -swe_calc() usually forces an implicit swe_close() -operation. Inside a loop, e.g. for drawing a graphical epehemeris, this can -slow down a program. Before this release, two calls with iflag = 0 and iflag = SEFLG_SWIEPH where -considered different, though in fact the same ephemeris is used. Now these two calls -are considered identical, and swe_close() is not -performed implicitly.
-For calls with the pseudo-planet-number
ipl = SE_ECL_NUT, whose result does not depend on the chosen ephemeris, the -ephemeris bits are ignored completely and swe_close() -is never performed implicitly.

- -

·         -In former versions, calls of the -Moshier ephemeris with speed and without speed flag have returned a very small -difference in position (0.01 arc second). The reason was that, for precise -speed, swe_calc() had to do an additional iteration in the light-time calculation. -The two calls now return identical position data.

- -

Changes from version 1.04 to 1.10

- -

·         -A bug has been fixed that sometimes -occurred in swe_calc() when the user changed iflag between calls, e.g. the speed flag. The first call for a planet which had been -previously computed for the same time, but a different iflag, could return -incorrect results, if Sun, Moon or Earth had been computed for a different time -in between these two calls.

- -

·         -More asteroids have been added in this -release.

- -

Changes from Version 1.03 to 1.04

- -

·         -A bug has been fixed that has -sometimes lead to a floating point exception when the speed flag was not -specified and an unusual sequence of planets was called.

- -

·         -Additional asteroid files have been -included.

- -

 

- -

 Attention:   Use these files only with -the new DLL. Previous versions cannot deal with more than one additional -asteroid besides the main asteroids. This error did not appear so far, because -only 433 Eros was on our CD-ROM.

- -

Changes from Version 1.02 to 1.03

- -

·         -swe_fixstar() has a better -implementation for the search of a specific star. If a number is given, the -non-comment lines in the file fixstars.cat are now -counted from 1; they where counted from zero in earlier releases.

- -

·         -swe_fixstar() now also computes -heliocentric and barycentric fixed stars positions. Former versions Swiss -Ephemeris always returned geocentric positions, even if the heliocentric or the -barycentric flag bit was set.

- -

·         -The Galactic Center has been included in fixstars.cat.

- -

·         -Two small bugs were fixed in the -implementation of the barycentric Sun and planets. Under unusual conditions, -e.g. if the caller switched from JPL to Swiss Ephemeris or vice-versa, an error -of an arc second appeared with the barycentric sun and 0.001 arc sec with the -barycentric planets. However, this did not touch normal geocentric -computations.

- -

·         -Some VB declarations in swedecl.txt -contained errors and have been fixed. The VB sample has been extended to show -fixed star and house calculation. This fix is only in 1.03 releases from 29-oct-97 -or later, not in the two 1.03 CDROMs we burned on 28-oct-97.

- -

Changes from Version 1.01 to 1.02

- -

 

- -

·         -The function swe_houses() has been changed.

- -

·         -A new function swe_houses_armc() has been added which can be used when a sidereal time (armc) is given but no actual date is known, e.g. for Composite charts.

- -

·         -The body numbers of the hypothetical -bodies have been changed.

- -

·         -The development environment for the -DLL and the sample programs have been changed from Watcom 10.5 to Microsoft -Visual C++ (5.0 and 1.5). This was necessary because the Watcom compiler -created LIB files which were not compatible with Microsoft C. The LIB files -created by Visual C however are compatible with Watcom.

- -

Changes from Version 1.00  to 1.01

- -

1. -Sidereal time

- -

The computation of the sidereal time is now -much easier. The obliquity and nutation are now computed inside the function. -The structure of the function swe_sidtime() has -been changed as follows:

- -

/* sidereal time */

- -

double swe_sidtime(double tjd_ut);      /* Julian day number, UT */

- -

The old functions swe_sidtime0() has been kept for backward compatibility.

- -

2. Houses

- -

The calculation of houses has been -simplified as well. Moreover, the Vertex has been added.

- -

The version 1.01 structure of swe_houses() is:

- -

int swe_houses(

- -

         double -tjd_ut,      /* julian day number, UT */

- -

         double -geolat,      /* geographic latitude, in -degrees */

- -

         double -geolon,      /* geographic longitude, in -degrees */

- -

         char -hsys,           /* house method, one of the letters PKRCAV */

- -

         double -*asc,     /* address for ascendant */

- -

         double -*mc,       /* -address for mc */         

- -

         double -*armc,     /* address for armc */

- -

         double -*vertex,      /* address for vertex */

- -

double *cusps);     /* address for 13 doubles: 1 empty + 12 houses */

- -

 

- -

Note also, that the indices of the -cusps have changed:

- -

cusp[0] = 0        (before: cusp[0] = house -1)

- -

cusp[1] = house 1        (before: cusp[1] = house -2)

- -

cusp[2] = house -2        (etc.)

- -

etc.

- -

3. -Ecliptic obliquity and nutation

- -

The new pseudo-body SE_ECL_NUT replaces the two separate pseudo-bodies SE_ECLIPTIC -and SE_NUTATION in the function swe_calc().

- -

Appendix A

- -

What is missing ?

- -

 

- -

There are some important limits in regard -to what you can expect from an ephemeris module. We do not tell you:

- -

how to draw a chart

- -

 

- -

·      -which glyphs to use

- -

·         -when a -planet is stationary (it depends on you how slow you -want it to be)

- -

·         -how to compute universal time from -local time, i.e. what timezone a place is located in

- -

·         -how to compute progressions, solar -returns, composit charts, transit times and a lot else

- -

·         -what the -different calendars (Julian, Gregorian, ..) mean and -when they applied.

- -

Index

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Flag

-
-

Body, Point

-
-

Default ephemeris flag

-
-

Additional asteroids

-
-

Ephemeris flags

-
-

Fictitious planets

-
-

Flag bits

-
-

Find a name

-
-

Speed flag

-
-

How to compute

-
-

 

-
-

Special body - SE_ECL_NUT

-
-

 

-
-

Uranian planets

-
- -

 

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Position

-
-

What is..

-
-

How to…

-
-

Astrometric

-
-

Ayanamsha

-
-

Change the tidal - acceleration

-
-

Barycentric

-
-

Dynamical Time

-
-

compute sidereal - composite house cusps

-
-

Equatorial

-
-

Ephemeris Time

-
-

compute the composite - ecliptic obliquity

-
-

Heliocentric

-
-

Equation of time

-
-

Draw the eclipse path

-
-

J2000

-
-

Julian day

-
-

Get obliquity and - nutation

-
-

Position and Speed

-
-

Universal Time

-
-

Get the - umbra/penumbra limits

-
-

Radians/degrees

-
-

Vertex/Anivertex

-
-

Search for a star

-
-

Sidereal

-
-

 

-
-

Switch the coordinate - systems

-
-

Topocentric

-
-

 

-
-

Switch true/mean - equinox of date

-
-

True geometrical - position

-
-

 

-
-

 

-
-

True/apparent

-
-

 

-
-

 

-
-

x, y, z

-
-

 

-
-

 

-
- -

 

- -

 

- -

 

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Errors

-
-

Variable

-
-

Asteroids

-
-

Armc

-
-

Avoiding Koch houses

-
-

Ascmc[..]

-
-

Ephemeris path length

-
-

Atpress

-
-

Errors and return - values

-
-

Attemp

-
-

Fatal error

-
-

Ayan_t0

-
-

House cusps beyond - the polar circle

-
-

Cusps[..]

-
-

Koch houses - limitations

-
-

Eps

-
-

Overriding environment - variables

-
-

Gregflag

-
-

Speeds of the fixed - stars

-
-

Hsys

-
-

 

-
-

Iflag

-
-

 

-
-

Ipl

-
-

 

-
-

Method

-
-

 

-
-

Rsmi

-
-

 

-
-

Sid_mode

-
-

 

-
-

Star

-
- -

 

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Function

-
-

Description

-
-

Swe_azalt

-
-

Computes - the horizontal coordinates (azimuth and altitude)

-
-

Swe_azalt_rev

-
-

computes - either ecliptical or equatorial coordinates from azimuth and true altitude

-
-

swe_calc

-
-

computes - the positions of planets, asteroids, lunar nodes and apogees

-
-

swe_calc_ut

-
-

Modified version of swe_calc

-
-

swe_close

-
-

releases - most resources used by the Swiss Ephemeris

-
-

swe_cotrans

-
-

Coordinate - transformation, from ecliptic to equator or vice-versa

-
-

swe_cotrans_sp

-
-

Coordinate - transformation of position and speed, from ecliptic to equator or vice-versa

-
-

swe_date_conversion

-
-

computes a Julian day from - year, month, day, time and checks whether a date is legal

-
-

swe_degnorm

-
-

normalization of any degree number to the range 0 ... 360

-
-

swe_deltat

-
-

Computes - the difference between Universal Time (UT, GMT) and Ephemeris time

-
-

swe_fixstar

-
-

computes fixed stars

-
-

swe_fixstar_ut

-
-

Modified version of swe_fixstar

-
-

swe_get_ayanamsa -

-
-

Computes - the ayanamsha

-
-

swe_get_ayanamsa_ut

-
-

Modified version of swe_get_ayanamsa

-
-

swe_get_planet_name

-
-

Finds a - planetary or asteroid name by given number

-
-

swe_get_tid_acc

-
-

Gets the - tidal acceleration

-
-

swe_house_pos

-
-

compute the - house - position of a given body for a given ARMC

-
-

swe_houses

-
-

Calculates - houses for a given date and geographic position

-
-

swe_houses_armc

-
-

computes - houses from ARMC (e.g. with the composite - horoscope which has no date)

-
-

swe_houses_ex

-
-

the same as - swe_houses(). Has a parameter, which can be used, if  siderealhouse - positions are wanted

-
-

swe_julday

-
-

Conversion - from day, month, year, time to Julian date

-
-

swe_lun_eclipse_how

-
-

Computes - the attributes of a lunar eclipse at a given time

-
-

swe_lun_eclipse_when

-
-

Finds the next lunar eclipse

-
-

swe_nod_aps

-
-

Computes - planetary nodes and apsides: perihelia, aphelia, second focal points of the - orbital ellipses

-
-

swe_nod_aps_ut

-
-

Modified version of swe_nod_aps

-
-

swe_pheno

-
-

Function - computes phase, - phase angle, elongation, apparent diameter, apparent magnitude

-
-

swe_pheno_ut

-
-

Modified version ofswe_pheno

-
-

swe_refrac

-
-

The true/apparent - altitude convertion

-
-

swe_revjul

-
-

Conversion - from Julian - date to day, month, year, time

-
-

swe_rise_trans

-
-

Computes - the times of rising, setting and meridian transits

-
-

swe_set_ephe_path

-
-

Set - application’s own ephemeris path

-
-

swe_set_jpl_file

-
-

Sets JPL ephemeris directory path

-
-

swe_set_sid_mode

-
-

Specifies - the sidereal modes

-
-

swe_set_tid_acc

-
-

Sets tidal acceleration used in swe_deltat()

-
-

swe_set_topo

-
-

Sets what - geographic position is to be used before topocentric planet positions for a certain birth place can be computed

-
-

swe_sidtime

-
-

returns sidereal time on Julian day

-
-

swe_sidtime0

-
-

returns sidereal time on Julian day, obliquity and nutation

-

 

-
-

swe_sol_eclipse_how

-
-

Calculates - the solar - eclipse attributes for a given geographic position - and time

-
-

swe_sol_eclipse_when_glob

-
-

finds the next solar eclipse - globally

-
-

swe_sol_eclipse_when_loc

-
-

finds the - next solar eclipse for a given geographic position

-
-

swe_sol_eclipse_where

-
-

finds out - the geographic position where an eclipse is

-

central or maximal

-
-

swe_time_equ

-
-

returns the - difference between local apparent and local mean time

-
- -

 

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

PlaCalc function

-
-

Description

-
-

swe_csnorm

-
-

Normalize - argument into interval [0..DEG360]

-
-

swe_cs2degstr

-
-

Centiseconds - -> degrees string

-
-

swe_cs2lonlatstr

-
-

Centiseconds - -> longitude or latitude string

-
-

swe_cs2timestr

-
-

Centiseconds - -> time string

-
-

swe_csroundsec

-
-

Round - second, but at 29.5959 always down

-
-

swe_d2l

-
-

Double to - long with rounding, no overflow check

-
-

swe_day_of_week

-
-

Day of week - Monday = 0, ... Sunday = 6

-
-

swe_difcs2n

-
-

Distance in - centisecs p1 – p2 normalized to [-180..180]

-
-

swe_difcsn

-
-

Distance in - centisecs p1 – p2 normalized to [0..360]

-
-

swe_difdeg2n

-
-

Distance in - degrees

-
-

swe_difdegn -

-
-

Distance in - degrees

-
- -

 

- -

End of SWEPHPRG.DOC

- -
- - - - diff --git a/swe/doc/swisseph.htm b/swe/doc/swisseph.htm deleted file mode 100644 index cfe7336..0000000 --- a/swe/doc/swisseph.htm +++ /dev/null @@ -1,8190 +0,0 @@ - - - - - - -SWISS EPHEMERIS - - - - - -
- -

SWISS EPHEMERIS. 3

- -

Computer ephemeris for developers of -astrological software. 3

- -

Introduction. 4

- -

1.     Licensing. 4

- -

2.     Descripition of the ephemerides. 5

- -

2.1          Planetary and lunar ephemerides. 5

- -

2.1.1             Three ephemerides. 5

- -

1.           The Swiss Ephemeris  5

- -

2.    The Moshier Ephemeris  6

- -

3.    The full JPL Ephemeris  6

- -

2.1.2.1             Swiss Ephemeris and the Astronomical -Almanac  7

- -

2.1.2.2             Swiss Ephemeris and JPL Horizons -System   8

- -

2.1.2.3             Differences between Swiss Ephemeris -1.70 and older versions  8

- -

2.1.2.4             Differences between Swiss Ephemeris -1.78 and 1.77. 9

- -

2.1.3             The details of coordinate -transformation  10

- -

2.1.4             The Swiss Ephemeris compression -mechanism   11

- -

2.1.5             The extension of the time range to -10'800 years. 12

- -

2.2      Lunar and Planetary Nodes and -Apsides  13

- -

2.2.1             Mean Lunar Node and Mean Lunar -Apogee ('Lilith', 'Black Moon')13

- -

2.2.2             The 'True' Node  13

- -

2.2.3             The Osculating Apogee (so-called -'True Lilith' or 'True Dark Moon')14

- -

2.2.4             The Interpolated or Natural Apogee -and Perigee (Lilith and Priapus)15

- -

2.2.5              Planetary Nodes and Apsides  15

- -

2.3.          Asteroids  18

- -

Asteroid ephemeris files. 18

- -

How the asteroids were computed. 19

- -

Ceres, Pallas, Juno, Vesta. 20

- -

Chiron. 20

- -

Pholus. 20

- -

”Ceres” - an application program for asteroid -astrology. 20

- -

2.4      Comets. 20

- -

2.5      Fixed stars and Galactic Center20

- -

2.6          ‚Hypothetical' bodies. 20

- -

Uranian Planets (Hamburg Planets: Cupido, Hades, -Zeus, Kronos, Apollon, Admetos, Vulkanus, Poseidon)21

- -

Transpluto (Isis)21

- -

Harrington. 21

- -

Nibiru. 22

- -

Vulcan. 22

- -

Selena/White Moon. 22

- -

Dr. Waldemath’s Black Moon. 22

- -

The Planets X of Leverrier, Adams, Lowell and -Pickering. 22

- -

2.7 Sidereal Ephemerides. 23

- -

Sidereal Calculations. 23

- -

The problem of defining the zodiac. 23

- -

The Babylonian tradition and the Fagan/Bradley -ayanamsha. 23

- -

The Hipparchan tradition. 24

- -

The Spica/Citra tradition and the Lahiri ayanamsha. 26

- -

The sidereal zodiac and the Galactic Center26

- -

Other ayanamshas. 26

- -

Conclusions. 27

- -

In search of correct algorithms. 27

- -

More benefits from our new sidereal algorithms: -standard equinoxes and precession-corrected transits. 30

- -

3.        Apparent versus true planetary -positions. 30

- -

4.           Geocentric versus topocentric and -heliocentric positions. 30

- -

5. Heliacal Events, Eclipses, Occultations, and -Other Planetary Phenomena. 31

- -

5.1. Heliacal Events of the Moon, Planets and -Stars. 31

- -

5.1.1. Introduction. 31

- -

5.1.2. Aspect determining visibility. 32

- -

5.1.2.1. Position of celestial objects. 32

- -

5.1.2.2. Geographic location. 32

- -

5.1.2.3. Optical properties of observer32

- -

5.1.2.4. Meteorological circumstances. 32

- -

5.1.2.5. Contrast between object and sky -background. 32

- -

5.1.3. Functions to determine the heliacal -events. 32

- -

5.1.3.1. Determining the contrast threshold -(swe_vis_limit_magn)32

- -

5.1.3.2. Iterations to determine when the -studied object is really visible (swe_heliacal_ut)32

- -

5.1.3.3. Geographic limitations of -swe_heliacal_ut() and strange behavior of planets in high geographic latitudes. 33

- -

5.1.3.4. Visibility of Venus and the Moon -during day. 33

- -

5.1.4. Future developments. 33

- -

5.1.5. References. 33

- -

5.2. Eclipses, occultations, risings, settings, -and other planetary phenomena. 34

- -

6.        AC, MC, Houses, Vertex. 34

- -

6.1.      House Systems  34

- -

6.1.1. Placidus. 34

- -

6.1.2. Koch/GOH.. 34

- -

6.1.3. Regiomontanus. 34

- -

6.1.4. Campanus. 35

- -

6.1.5. Equal System.. 35

- -

6.1.6 Vehlow-equal System.. 35

- -

6.1.7. Axial Rotation System.. 35

- -

6.1.8. The Morinus System.. 35

- -

6.1.9. Horizontal system.. 35

- -

6.1.10. The Polich-Page (“topocentric”) system.. 35

- -

6.1.11. Alcabitus system.. 35

- -

6.1.12. Gauquelin sectors. 35

- -

6.1.13. Krusinski/Pisa/Goelzer system.. 36

- -

6.2. Vertex, Antivertex, East Point and -Equatorial Ascendant, etc.36

- -

6.3.          House cusps beyond the polar circle. 37

- -

6.3.1.             Implementation in other calculation -modules:37

- -

6.4.      House position of a planet38

- -

6.5.          Gauquelin sector position of a -planet38

- -

7.     DT (Delta T)39

- -

8.       Programming Environment41

- -

9.        Swiss Ephemeris Functions. 41

- -

9.1      Swiss Ephemeris API41

- -

Calculation of planets and stars. 41

- -

Date and time conversion. 41

- -

Initialization, setup, and closing functions. 42

- -

House calculation. 42

- -

Auxiliary functions. 42

- -

Other functions that may be useful43

- -

9.2      Placalc API44

- -

Appendix. 44

- -

A. The gravity deflection for a planet passing -behind the Sun. 44

- -

B. The list of asteroids. 45

- -

- -
- -
-
- -
- -

 

- -

SWISS EPHEMERIS 

- -

Computer -ephemeris for developers of astrological software

- -

© 1997 - 2011 -by

- -

Astrodienst AG

- -

Dammstr. 23

- -

Postfach -(Station)

- -

 CH-8702 Zollikon / Zürich, Switzerland

- -

Tel. -+41-44-392 18 18

- -

Fax  +41-44-391 75 74

- -

Email -to devlopers swisseph@astro.ch

- -

 

- -

Authors: -Dieter Koch and Dr. Alois Treindl

- -

 

- -

Editing -history:

- -

14-sep-97 -Appendix A by Alois

- -

15-sep-97 -split docu, swephprg.doc now separate (programming interface)

- -

16-sep-97 -Dieter: absolute precision of JPL, position and speed transformations

- -

24-sep-97 -Dieter: main asteroids

- -

27-sep-1997 -Alois: restructured for better HTML conversion, added public function list

- -

8-oct-1997 -Dieter: chapter 4 (houses) added

- -

28-nov-1997 -Dieter: chapter 5 (delta t) added

- -

20-Jan-1998 -Dieter: chapter 3 (more than...) added, chapter 4 (houses) enlarged

- -

14-Jul-98: -Dieter: more about the precision of our asteroids

- -

21-jul-98: -Alois: houses in PLACALC and ASTROLOG

- -

27-Jul-98: -Dieter: True node chapter improved

- -

2-Sep-98: -Dieter: updated asteroid chapter

- -

29-Nov-1998: -Alois: added info on Public License and source code availability

- -

4-dec-1998: -Alois: updated asteroid file information

- -

17-Dec-1998: -Alois: Section 2.1.5 added: extended time range to 10'800 years

- -

17-Dec-1998: -Dieter: paragraphs on Chiron and Pholus ephemerides updated

- -

12-Jan-1999: -Dieter: paragraph on eclipses

- -

19-Apr-99: -Dieter: paragraph on eclipses and planetary phenomena

- -

21-Jun-99: -Dieter: chapter 2.27 on sidereal ephemerides

- -

27-Jul-99: -Dieter: chapter 2.27 on sidereal ephemerides completed

- -

15-Feb-00: -Dieter: many things for Version 1.52

- -

11-Sep-00: -Dieter: a few additions for version 1.61

- -

24-Jul-01: -Dieter: a few additions for version 1.62

- -

5-jan-2002: -Alois: house calculation added to swetest for version 1.63

- -

26-feb-2002: -Dieter: Gauquelin sectors for version 1.64

- -

12-jun-2003: -Alois: code revisions for compatibility with 64-bit compilers, version 1.65

- -

10-jul-2003: -Dieter: Morinus houses for Version 1.66

- -

12-jul-2004: -Dieter: documentation of Delta T algorithms implemented with version 1.64

- -

7-feb-2005: -Alois: added note about mean lunar elements, section 2.2.1

- -

22-feb-2006: -Dieter: added documentation for version 1.70, see section 2.1.2.1-3

- -

17-jul-2007: -Dieter: updated documentation of Krusinski-Pisa house system.

- -

28-nov-2007: -Dieter: documentation of new Delta T calculation for version 1.72, see section -7

- -

17-jun-2008: -Alois: License change to dual license, GNU GPL or Professional License

- -

31-mar-2009: -Dieter: heliacal events

- -

26-Feb-2010: -Alois: manual update, deleted references to CDROM

- -

25-Jan-2011: -Dieter: Delta T updated, v. 1.77.

- -

2-Aug-2012: -Dieter: New precession, v. 1.78.

- -

23-apr-2013: -Dieter: new ayanamshas

- -

 

- -

Swiss -Ephemeris Release history:

- -

1.00      30-sept-1997

- -

1.01      9-oct-1997            simplified -houses() and sidtime() functions, Vertex added.

- -

1.02      16-oct-1997            houses() changed again

- -

1.03      28-oct-1997     minor fixes

- -

1.04      8-Dec-1997     minor -fixes

- -

1.10      9-Jan-1998     bug -fix, pushed to all licensees

- -

1.11      12-Jan-98        minor -fixes

- -

1.20      21-Jan-98        NEW: topocentric planets and house positions

- -

1.21      28-Jan-98        Delphi -declarations and sample for Delphi 1.0

- -

1.22      2-Feb-98            Asteroids moved to subdirectory. -Swe_calc() finds them there.

- -

1.23      11-Feb-98        two -minor bug fixes.

- -

1.24      7-Mar-1998            Documentation for Borland C++ -Builder added

- -

1.25      4-June-1998     sample for Borland Delphi-2 added

- -

1.26      29-Nov-1998     source added, Placalc API added

- -

1.30      17-Dec-1998            NEW:Time range extended to 10'800 years

- -

1.31      12-Jan-1999     NEW: Eclipses

- -

1.40      19-Apr-1999     NEW: planetary phenomena

- -

1.50      27-Jul-1999     NEW: sidereal ephemerides

- -

1.52      15-Feb-2000 -    Several NEW -features, minor bug fixes

- -

1.60      15-Feb-2000     Major release with many new features and some minor bug fixes

- -

1.61      11-Sep-2000     Minor release, additions to se_rise_trans(), swe_houses(), -ficitious planets

- -

1.62      23-Jul-2001      Minor release, fictitious earth satellites, asteroid numbers -> 55535 possible

- -

1.63      5-Jan-2002     Minor -release, house calculation added to swetest.c and swetest.exe

- -

1.64      7-Apr-2002     NEW: occultations of planets, -minor bug fixes, new Delta T algorithms

- -

1.65      12-Jun-2003     Minor release, small code renovations for 64-bit compilation

- -

1.66      10-Jul-2003     NEW: Morinus -houses

- -

1.67      31-Mar-2005     Minor release: Delta-T updated, minor bug fixes

- -

1.70 -     2-Mar-2006     IAU resolutions up to 2005 implemented; "interpolated" -lunar apsides

- -

1.72      28-nov-2007     Delta T calculation according to Morrison/Stephenson 2004

- -

1.74      17-jun-2008     License model changed to dual license, GNU GPL or Professional -License

- -

1.76      31-mar-2009     NEW: Heliacal events

- -

1.77      25-jan-2011     Delta T calculation updated acc. to Espenak/Meeus 2006, new fixed -stars file

- -

1.78      2-aug-2012            Precession -calculation updated acc. to Vondrák et alii 2012

- -

1.79      23-apr-2013     New ayanamshas, improved precision of eclipse functions, minor -bug fixes

- -

Introduction

- -

Swiss Ephemeris is a function -package for the computation of planetary positions. It includes the planets, -the moon, the lunar nodes, the lunar apogees, the main asteroids, Chiron, -Pholus, the fixed stars and several ”hypothetical” bodies. Hundreds of other -minor planets are included as well. Ephemeris files all numbered asteroids are -available for download.

- -

The precision of the Swiss Ephemeris is very high. It is at least as -accurate as the Astromical Almanac, the standard planetary and lunar tables -astronomers refer to. Swiss Ephemeris will, as we hope, -be able to keep abreast to the scientific advances in ephemeris computation for -the coming decades. The expense will be small. In most cases an update of the -data files will do.

- -

The Swiss Ephemeris package consists of a DLL, a -collection of ephemeris files and a few sample programs which demonstrate the -use of the DLL and the Swiss Ephemeris graphical label. The ephemeris files -contain compressed astronomical ephemerides (in equatorial rectangular -coordinates referred to the mean equinox 2000 and the solar system barycenter). -The DLL is mainly the code that reads these files and converts the raw data to -positions as required in astrology (calculation of light-time, transformation -to the geocenter and the true equinox of date, etc.).

- -

Full C source code is included with the Swiss Ephemeris, so that -not-Windows programmers can create a linkable or shared library in their -environment and use it with their application.

- -

1.        Licensing

- -

The Swiss Ephemeris is not a product for end users. It is a toolset for -programmers to build into their astrological software. 

- -

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 Swiss Ephemeris Professional Edition can be purchased from -Astrodienst for a one-time fixed fee for each commercial  programming -project. The license is just a legal document. All actual software and data are -found in the public download area and are to be downloaded from there. 

- -

Professional license: The license fee for the first -license is Swiss Francs (CHF) 750.- , and CHF 400.-  for each additional license by the same licensee. An unlimited -license is available for CHF 1550.-.

- -

2.        Descripition of the ephemerides

- -

2.1         Planetary and lunar ephemerides

- -

2.1.1    Three ephemerides

- -

The Swiss Ephemeris package allows planetary and lunar computations from -any of the following three astronomical ephemerides:

- -

1.         The Swiss Ephemeris

- -

The core part of Swiss Ephemeris is a compression of the JPL-Ephemeris -DE406.  Using a sophisticated mechanism, -we succeeded in reducing JPL's 200 MB storage to only 18 MB. The agreement with -DE406 is  within 1 milli-arcsecond -(0.001”).  Since the inherent -uncertainty of the JPL ephemeris for most of its time range is much greater, -Swiss Ephemeris should be completely satisfying even for computations demanding -very high accuracy.

- -

The time range of the JPL ephemeris is 3000 BC to 3000 AD or 6000 years. -We have extended this time range to 10'800 years, from 2 Jan 5401 BC to 31 Dec 5399. The details of this -extension are described below in section 2.1.5.

- -

Each Swiss Ephemeris file covers a period of 600 years; there are 18 -planetary files, 18 Moon files and 18 main-asteroid files for the whole time -range of 10'800 years.

- -

The file names are as follows:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Planetary file

-
-

Moon file

-
-

Main asteroid file

-
-

Time range

-
-

seplm54.se1

-
-

semom54.se1

-
-

seasm54.se1

-
-

5401 BC – 4802 BC

-
-

seplm48.se1

-
-

semom48.se1

-
-

seasm48.se1

-
-

4801 BC – 4202 BC

-
-

seplm42.se1

-
-

semom42.se1

-
-

seasm42.se1

-
-

4201 BC – 3602 BC

-
-

seplm36.se1

-
-

semom36.se1

-
-

seasm36.se1

-
-

3601 BC – 3002 BC

-
-

seplm30.se1

-
-

semom30.se1

-
-

seasm30.se1

-
-

3001 BC – 2402 BC

-
-

seplm24.se1

-
-

semom24.se1

-
-

seasm24.se1

-
-

2401 BC – 1802 BC

-
-

seplm18.se1

-
-

semom18.se1

-
-

seasm18.se1

-
-

1801 BC – 1202 BC

-
-

seplm12.se1

-
-

semom12.se1

-
-

seasm12.se1

-
-

1201 BC – 602 BC

-
-

seplm06.se1

-
-

semom06.se1

-
-

seasm06.se1

-
-

601 BC – 2 BC

-
-

sepl_00.se1

-
-

semo_00.se1

-
-

seas_00.se1

-
-

1 BC – 599 AD

-
-

sepl_06.se1

-
-

semo_06.se1

-
-

seas_06.se1

-
-

600 AD – 1199 AD

-
-

sepl_12.se1

-
-

semo_12.se1

-
-

seas_12.se1

-
-

1200 AD – 1799 AD

-
-

sepl_18.se1

-
-

semo_18.se1

-
-

seas_18.se1

-
-

1800 AD – 2399 AD

-
-

sepl_24.se1

-
-

semo_24.se1

-
-

seas_24.se1

-
-

2400 AD – 2999 AD

-
-

sepl_30.se1

-
-

semo_30.se1

-
-

seas_30.se1

-
-

3000 AD – 3599 AD

-
-

sepl_36.se1

-
-

semo_36.se1

-
-

seas_36.se1

-
-

3600 AD – 4199 AD

-
-

sepl_42.se1

-
-

semo_42.se1

-
-

seas_42.se1

-
-

4200 AD – 4799 AD

-
-

sepl_48.se1

-
-

semo_48.se1

-
-

seas_48.se1

-
-

4800 AD – 5399 AD

-
- -

 

- -

The blue file names in the table -indicate that a file is derived directly from the JPL data, whereas the other -files are derived from Astrodienst's own numerical integration.

- -

All Swiss Ephemeris files for Version 1 have the file suffix .se1.

- -

A planetary file is about  500 -kb, a lunar file 1300 kb.

- -

Swiss Ephemeris files are distributed with the SWISSEPH package. They -are also available for download from Astrodienst's web server.

- -

The time range of the Swiss Ephemeris

- -

Start date                2 Jan 5401 BC (jul. calendar)                = JD   -251291.5

- -

End date                                31 -Dec 5399 AD (greg. Cal.)        = JD -3693368.5

- -

A note -on year numbering:

- -

There are -two numbering systems for years before the year 1 AD. The historical numbering -system (indicated with BC) has no year zero. Year 1 BC is followed directly by -year 1 AD.

- -

The -astronomical year numbering system does have a year zero; years before the -common era are indicated by negative year numbers. The sequence is year -1, -year 0, year 1 AD.

- -

The -historical year 1 BC corresponds to astronomical year 0,

- -

the -historical your 2 BC corresponds to astronomical year -1, etc.

- -

In this -document and other documents related to the Swiss Ephemeris we use both systems -of year numbering. When we write a negative year number, it is astronomical -style; when we write BC, it is historical style.

- -

2.         The Moshier Ephemeris

- -

This is a semi-analytical approximation of the JPL planetary and lunar -ephemerides, currently based on the DE404 ephemeris, developed by Steve -Moshier. Its deviation from JPL is well below 1 arc second with the planets and -a few arc seconds with the moon. No data files are required for this -ephemeris, as all data are linked into the program code already.

- -

This may be sufficient accuracy for most astrologers, since the moon -moves 1 arc second in 2 time seconds and the sun 2.5 arc seconds in one minute. -

- -

However, if you work with the 'true' lunar node, which is derived from -the lunar ephemeris, you will have to accept an error of about 1 arc minute. To -get a position better than an arc second, you will have to spend 1.3 MB for the -lunar ephemeris file 'semo_18.se1' of Swiss Ephemeris.

- -

The advantage of the Moshier ephemeris is that it needs no disk storage. -Its disadvantage besides the limited precision is reduced speed: it is about 10 -times slower than JPL and Swiss Ephemeris.

- -

The Moshier Ephemeris covers the interval from 3000 BC to 3000 AD. -However, “the adjustment for the inner planets is strictly valid only from 1350 -B.C. to 3000 A.D., but may be used to 3000 B.C. with some loss of precision”. -And:  “The Moon's position is calculated -by a modified version of the lunar theory of Chapront-Touze' and Chapront. This -has a precision of 0.5 arc second relative to DE404 for all dates between 1369 -B.C. and 3000 A.D. “ (Moshier, http://www.moshier.net/aadoc.html).

- -

3.         The full JPL Ephemeris

- -

This is the full precision state-of-the-art ephemeris. It provides the -highest precision and is the basis of the Astronomical Almanac.

- -

JPL is the Jet Propulsion Laboratory of NASA in Pasadena, CA, USA (see http://www.jpl.nasa.gov ). Since many years this -institute which is in charge of the planetary missions of NASA has been the -source of the highest precision planetary ephemerides. The currently newest -version of JPL ephemeris is the DE405/DE406. As most previous ephemerides, it -has been created by Dr. Myles Standish.

- -

According to a paper (see below) by Standish and others on DE403 (of -which DE406 is only a slight refinement), the accuracy of this ephemeris can be -partly estimated from its difference from DE200:

- -

With the inner planets, Standish shows that within the period -1600 – 2160 there is a maximum difference of 0.1 – 0.2” which is mainly due to -a mean motion error of DE200. This means that the absolute precision of DE406 -is estimated significantly better than 0.1” over that period. However, for the -period 1980 – 2000 the deviations between DE200 and DE406 are below 0.01” for all -planets, and for this period the JPL integration has been fit to measurements -by radar and laser interferometry, which are extremely precise.

- -

With the outer planets, Standish's diagrams show that there are -large differences of several ” around 1600, and he says that these deviations -are due to the inherent uncertainty of extrapolating the orbits beyond the -period of accurate observational data.The uncertainty of Pluto exceeds -1” before 1910 and after 2010, and increases rapidly in more remote past or -future.

- -

With the moon, there is an increasing difference of 0.9”/cty2 between 1750 and -2169. It comes mainly from errors in LE200 (Lunar Ephemeris).

- -

The differences between DE200 and DE403 (DE406) can be summarized as -follows:

- -

                1980 – 2000        all -planets                   < -0.01”,

- -

1600 – 1980        Sun – Jupiter                    a few 0.1”,

- -

1900 – 1980        Saturn – Neptune                                a -few 0.1”,

- -

                1600 – 1900        Saturn – Neptune                                a -few ”,

- -

                1750 – 2169        Moon                                     a few ”.

- -

(see: E.M. Standish, X.X. Newhall, J.G. Williams, and W.M. Folkner, JPL -Planetary and Lunar Ephemerides, DE403/LE403, JPL Interoffice Memorandum -IOM 314.10-127, May 22, 1995, pp. 7f.)

- -

 

- -

The DE406 is a 200 Megabyte file available for download from the JPL -server ftp://navigator.jpl.nasa.gov/ephem/export  or on CD-ROM from the astronomical publisher -Willman-Bell, see http://www.willbell.com. -
-Astrodienst has received permission from Dr. Standish to include the file on -the
Swiss Ephemeris CD-ROM.

- -

There are several versions of the JPL Ephemeris. The version is -indicated by the DE-number. A higher number stands for a later update. SWISSEPH -should be able to read any JPL file from DE200 upwards.

- -

The time range of this ephemeris (DE406) is:

- -

    start date                23 -Feb 3001 BC (28 Jan greg.)     = JD    625360.5,

- -

    end date              3 Mar 3000 AD                                     = JD  2816848.5.

- -

Swiss Ephemeris is based on the latest -JPL file, and reproduces the full JPL precision with better than 1/1000 of an -arc second, while requiring only 18 Mb instead of 200 Mb. Therefore for most -applications it makes little sense to get the full JPL file, except to compare -the precision. Precision comparison can also be done at the Astrodienst web -server, because we have a test utility online which allows to compute planetary -positions for any date with any of the three ephemerides.

- -

For the extension of the JPL time range to 5400 BC - 5400 AD please see -section 2.5.1 below.

- -

2.1.2.1Swiss Ephemeris and the Astronomical Almanac

- -

The original JPL ephemeris gives barycentric equatorial Cartesian -positions of the equinox 2000. Moshier provides heliocentric positions.  The conversions to apparent geocentric -ecliptical positions were done with the algorithms and constants of the -Astronomical Almanac as described in the ”Explanatory Supplement to the -Astronomical Almanac”. Using the DE200 data file, it is possible to reproduce -the positions given by the Astronomical Almanac 1995, 1996, and 1997 down to -the last digit. Editions of other years have not been checked.

- -

Since 2003, the Astronomical Almanac has been using JPL ephemeris DE405, -and since Astronomical Almanac 2006 all relevant resolutions of the -International Astronomical Union (IAU) have been implemented. Versions 1.70 and -higher of the Swiss Ephemeris also follow these resolutions and reproduce the -sample calculation given by AA2006, page B61-B63,  to the last digit, i.e. to better than 0.001 arc second. (To -avoid confusion when checking this, it may be useful to know that the JD given -on page B62 does not have enough digits in order to produce the correct final -result.)

- -

2.1.2.2Swiss Ephemeris and JPL Horizons System

- -

The Swiss Ephemeris, from Version 1.70 on, reproduces astrometric planetary positions of the -JPL Horizons System precisely. However, there are small differences with the apparent positions. The reason is that -the Horizons System still uses the old precession model IAU 1976 (Lieske) and -nutation IAU 1980 (Wahr). This was confirmed by Jon Giorgini from JPL in an -E-mail of 3 Feb. 2006.

- -

Note on 2 August 2012. It seems that this is still true, according to -the documentation of the Horizons System at: -http://ssd.jpl.nasa.gov/?horizons_doc#longterm

- -

2.1.2.3            Differences between Swiss Ephemeris -1.70 and older versions

- -

With version 1.70, the standard algorithms recommended by the IAU -resolutions up to 2005 were implemented. The following calculations have been -added or changed with Swiss Ephemeris version 1.70:

- -

- "Frame Bias" transformation from ICRS to J2000.

- -

- Nutation IAU 2000B (could be switched to 2000A by the user)

- -

- Precession model P03 (Capitaine/Wallace/Chapront 2003), including -improvements in ecliptic obliquity and sidereal time that were achieved by this -model

- -

The differences between the old and new planetary positions in ecliptic longitude (arc seconds) are:

- -

year        new - old

- -

2000        -0.00108

- -

1995        0.02448

- -

1980        0.05868

- -

1970        0.10224

- -

1950        0.15768

- -

1900        0.30852

- -

1800        0.58428

- -

1799        -0.04644

- -

1700        -0.07524

- -

1500        -0.12636

- -

1000        -0.25344

- -

0              -0.53316

- -

-1000      -0.85824

- -

-2000      -1.40796

- -

-3000      -3.33684

- -

-4000      -10.64808

- -

-5000      -32.68944

- -

-5400      -49.15188

- -

The discontinuity of the curve between 1800 and 1799 is explained by the -fact that the old Swiss Ephemeris used different precession models for -different time ranges: the model IAU 1976 by Lieske for 1800 - 2200, and the -precession model by Williams 1994 outside of that time range.

- -

Note: In the literature there are no indications concerning the -long-term use of the precession model P03. It is said to be accurate to 0.00005 -arc second for CE 1000-3000. However, there is no reason to trust alternative -models (e.g. Bretagnon 2003) more for the whole period of the Swiss Ephemeris.

- -

The differences between version 1.70 and older versions for the future -are as follows:

- -

2000        -0.00108

- -

2010        -0.01620

- -

2050        -0.14004

- -

2100        -0.29448

- -

2200        -0.61452

- -

2201        0.05940

- -

3000        0.27252

- -

4000        0.48708

- -

5000        0.47592

- -

5400        0.40032

- -

The discontinuity in 2200 has the same explanation as -the one in 1800.

- -

 

- -

Jyotish / sidereal -ephemerides:

- -

The ephemeris changes by a constant value of about +0.3 arc second. This -is because all our ayanamsas have the start epoch 1900, for which epoch -precession was corrected by the same amount.

- -

 

- -

Fictitious planets -/ Bodies from the orbital elements file seorbel.txt:

- -

There are changes of several 0.1 arcsec, depending on the epoch of the -orbital elements and the correction of precession as can be seen in the tables -above.

- -

 

- -

The differences for ecliptic obliquity in arc seconds (new - old) are:

- -

5400        -1.71468

- -

5000        -1.25244

- -

4000        -0.63612

- -

3000        -0.31788

- -

2100        -0.06336

- -

2000        -0.04212

- -

1900        -0.02016

- -

1800        0.01296

- -

1700        0.04032

- -

1600        0.06696

- -

1500        0.09432

- -

1000        0.22716

- -

0              0.51444

- -

-1000      1.07064

- -

-2000      2.62908

- -

-3000      6.68016

- -

-4000      15.73272

- -

-5000      33.54480

- -

-5400      44.22924

- -

 

- -

The differences for sidereal time in -seconds (new - old) are:

- -

5400        -2.544

- -

5000        -1.461

- -

4000        -0.122

- -

3000        0.126

- -

2100        0.019

- -

2000        0.001

- -

1900        0.019

- -

1000        0.126

- -

0              -0.122

- -

-500        -0.594

- -

-1000      -1.461

- -

-2000      -5.029

- -

-3000      -12.355

- -

-4000      -25.330

- -

-5000      -46.175

- -

-5400      -57.273

- -

2.1.2.4            Differences between Swiss Ephemeris -1.78 and 1.77

- -

Former versions of the Swiss Ephemeris had used the precession model by -Capitaine, Wallace, and Chapront of 2003 for the time range 1800-2200 and the -precession model J. G. Williams in Astron. J. 108, 711-724 (1994) for epochs -outside this time range.

- -

Version 1.78 calculates precession and ecliptic obliquity according to -Vondrák, Capitaine, and Wallace, “New precession expressions, valid for long -time intervals”, A&A 534, A22 (2011), which is good for +- 200 millennia.

- -

This change has almost no effect for historical epochs. Planetary -positions and the obliquity of the ecliptic change by less than an arc minute -in 5400 BC. However, for research concerning the prehistoric cave paintings of -Lascaux, Altamira, etc, some of which may represent celestial constellations, -fixed star positions are required for 15’000 BC or even earlier (the Chauvet -cave was painted in 33’000 BC). Such calculations are now possible using the -Swiss Ephemeris version 1.78 or higher. However, the Sun, Moon, and the planets -remain restricted to the time range 5400 BC to 5400 AD.

- -

Differences in precession (v. 1.78 – v. 1.77, test star was Aldebaran):

- -

Year        Difference in arc sec

- -

-20000  -26715"

- -

-15000    -2690" 

- -

-10000      -256"  

- -

  -5000          -3.95388"       -

- -

  -4000          -9.77904"       -

- -

  -3000          -7.00524"       -

- -

  -2000          -3.40560"       -

- -

  -1000          -1.23732"       -

- -

         0           -0.33948"       -

- -

   1000           -0.05436"       -

- -

   1800           -0.00144"       -

- -

   1900           -0.00036"       -

- -

   2000            0.00000"        -

- -

   2100           -0.00036"       -

- -

   2200           -0.00072"       -

- -

   3000            0.03528"        -

- -

   4000            0.59904"        -

- -

   5000            2.90160"        -

- -

 10000          76"    

- -

 15001        -227"   

- -

 19000      -2839"  

- -

 20000      -5218"

- -

 

- -

Differences in -ecliptic obliquity

- -

 

- -

Year        Difference in arc sec

- -

-20000       11074.43664"

- -

-15000         3321.50652"

- -

-10000           632.60532"

- -

  -5000           -33.42636"

- -

          0              0.01008"

- -

    1000              0.00972"

- -

    2000              0.00000"

- -

    3000            -0.01008"

- -

    4000            -0.05868"

- -

  10000          -72.91980"

- -

  15000        --772.91712"

- -

  20000      --3521.23488”

- -

2.1.3    The details of coordinate transformation

- -

The following conversions are applied to the coordinates after reading -the raw positions from the ephemeris files and before output:

- -

Correction for light-time. Since the planet's light -needs time to reach the earth, it is never seen where it actually is, but where -it was some time before. Light-time is a few minutes with the inner planets and -a few hours with distant planets like Uranus, Neptune and Pluto. For the moon, -the light-time correction is about one second. With planets, light-time -correction may be of the order of 20” in position, with the moon 0.5”

- -

Conversion from the solar system barycenter to the -geocenter. Original JPL data are referred to the center of the gravity of the -solar system. Apparent planetary positions are referred to an imaginary -observer in the center of the earth.

- -

Light deflection by the gravity of the sun. In gravitational -fields of the sun and the planets light rays are bent. However, within the -solar system only the sun has mass enough to deflect light significantly. -Gravity deflection is greatest for distant planets and stars, but never greater -than 1.8”. When a planet disappears behind the sun, the Explanatory -Supplement recommends to set the deflection = 0. To avoid discontinuities, -we chose another procedure. See Appendix A.

- -

”Annual” aberration of light. The velocity of -light is finite, and therefore the apparent direction of a moving body from a -moving observer is never the same as it would be if both the planet and the -observer stood still. For comparison: if you run through the rain, the rain -seems to come from ahead even though it actually comes from above. Aberration -may reach 20”.

- -

Frame Bias (ICRS to J2000). The JPL ephemeris -DE405/DE406 is referred to the International Celestial Reference System, a -time-independent, non-rotating reference system which was recommended by the -IAU in 1997. The planetary positions and speed vectors are rotated to the J2000 -system. This transformation makes a difference of only about 0.0068 arc seconds -in right ascension. (Implemented from Swiss Ephemeris 1.70 on)

- -

Precession. The motion of the vernal -equinox, which is an effect of the influences of solar, lunar, and planetary -gravity on the equatorial bulge of the earth. Original JPL data are referred to -the mean equinox of the year 2000. Apparent planetary positions are referred to -the equinox of date. (From Swiss Ephemeris 1.78 on, we use the -precession model Vondrák/Capitaine/Wallace 2011.)

- -

Nutation (true equinox of date). -A short-period oscillation of the vernal equinox. It results from the moons -gravity which acts on the equatorial bulge of the earth. The period of nutation -is identical to the period of a cycle of the lunar node, i.e. 18.6 years. The -difference between the true vernal point and the mean one is always below 17”. -(From Swiss Ephemeris 1.70 on, we use the nutation model IAU 2000. Older -versions used the nutation model IAU 1980 (Wahr).)

- -

Transformation from equatorial to ecliptic coordinates.

- -

 

- -

For precise speed of the planets and the moon, we had to make a -special effort, because the Explanatory Supplement does not give -algorithms that apply the above-mentioned transformations to speed. Since this -is not a trivial job, the easiest way would have been to compute three -positions in a small interval and determine the speed from the derivation of -the parabola going through them. However, double float calculation does not -guarantee a precision better than 0.1”/day. Depending on the time difference -between the positions, speed is either good near station or during fast motion. -Derivation from more positions and higher order polynomials would not help -either.

- -

Therefore we worked out a way to apply directly all the transformations -to the barycentric speeds that can be derived from JPL or Swiss Ephemeris. The -speed precision is now better than 0.002” for all planets, and the computation -is even much faster than it would have been from three positions. A position -with speed takes in average only 1.66 times longer than one without speed, if a -JPL or a Swiss Ephemeris position is computed. With Moshier, however, a -computation with speed takes 2.5 times longer.

- -

2.1.4    The Swiss Ephemeris compression mechanism

- -

The idea behind our mechanism of ephemeris compression was developed by -Dr. Peter Kammeyer of the U.S. Naval Observatory in 1987.

- -

To make it simple, it works as follows:

- -

The lunar and the inner planets ephemerides require by far the largest -part of the storage. A more sophisticated mechanism is needed for them than for -the outer planets.  Instead of the -positions we store the differences between JPL and the mean orbits of the -analytical theory VSOP87. These differences are much smaller than the position -values, wherefore they require less storage.  -They are stored in Chebyshew polynomials covering a period of an -anomalistic cycle each. (By the way, this is the reason, why Swiss Ephemeris -begins only with 4 Nov -3000 (instead of 23 Feb -3000 as JPL).  This is the date, when the last of the inner -planets Mars has its first perihelion after the start date of DE406.)

- -

With the outer planets from Jupiter through Pluto we use a simpler -mechanism. We rotate the positions provided by DE406 to the mean plane of the -planet. This has the advantage that only two coordinates have high values, -whereas the third one becomes very small. The data are stored in Chebyshew -polynomials that cover a period of 4000 days each.  (This is the reason, why Swiss Ephemeris stops in the year 2991 -AD. 4000 days later is a date beyond 3000 AD)

- -

2.1.5    The extension of the time range to 10'800 -years

- -

The JPL ephemeris covers the time range from 3000 BC to 3000 AD. While -this is an excellent range covering all precisely known historical events, -there are some types of astrological and historical research which would -welcome a longer time range.

- -

In December 1998 we have made an effort to extend the time range by our -own numerical integration. The exact physical model used by Standish et. al. -for the numerical integration of the DE406 ephemeris is not fully documented -(at least we do not understand some details), so that we cannot use the same -integration program as had been used at JPL for the creation of the original -ephemeris.

- -

The previous JPL ephemeris, the DE200, however has been reproduced by -Steve Moshier over a very long time range with his integration program, which -has been available to us. We have used this integration program with start -vectors taken at the end points of the DE406 time range. To test our numerical -integrator, we ran it upwards from 3000 BC to 600 BC for a period of 2400 years -and compared its results with the DE406 ephemeris itself. The agreement is -excellent for all planets except the Moon (see table below). The lunar orbit -creates a problem because the physical model for the Moon's libration and the -effect of the tides on lunar motion is quite different in the DE406 from the -model in the DE200. We have varied the tidal coupling parameter (love number) -and the longitudinal libration phase at the start epoch until we found the best -agreement over the 2400 year test range between our integration and the JPL -data. We could reproduce the Moon's motion over a the 2400 time range with a -maximum error of 12 arcseconds. For most of this time range the agreement is -better than 5 arcsec.

- -

With these modified parameters we ran the integration backward in time -from 3000 BC to 5400 BC. It is reasonable to assume that the integration errors -in the backward integration are not significantly different from the -integration errors in the upward integration.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

planet

-
-

max. error arcsec

-
-

avg. error arcec

-
-

Mercury  

-
-

1.67

-
-

0.61

-
-

Venus    

-
-

0.14

-
-

0.03

-
-

Earth    

-
-

1.00

-
-

0.42

-
-

Mars         

-
-

0.21

-
-

0.06

-
-

Jupiter  

-
-

0.85

-
-

0.38

-
-

Saturn   

-
-

0.59

-
-

0.24

-
-

Uranus   

-
-

0.20

-
-

0.09

-
-

Neptune               

-
-

0.12

-
-

0.06

-
-

Pluto     

-
-

0.12

-
-

0.04

-
-

Moon    

-
-

12.2

-
-

2.53

-
-

Sun bary.

-
-

6.3

-
-

0.39

-
- -

 

- -

The same procedure was applied -at the upper end of the DE406 range, to cover an extension period from 3000 AD -to 5400 AD. The maximum integration errors as determined in the test run 3000 -AD down to 600 AD are given in the table below.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

planet

-
-

max. error arcsec

-
-

avg. error arcsec

-
-

Mercury  

-
-

2.01

-
-

0.69

-
-

Venus    

-
-

0.06

-
-

0.02

-
-

Earth    

-
-

0.33

-
-

0.14

-
-

Mars         

-
-

1.69

-
-

0.82

-
-

Jupiter  

-
-

0.09

-
-

0.05

-
-

Saturn   

-
-

0.05

-
-

0.02

-
-

Uranus   

-
-

0.16

-
-

0.07

-
-

Neptune               

-
-

0.06

-
-

0.03

-
-

Pluto     

-
-

0.11

-
-

0.04

-
-

Moon    

-
-

8.89

-
-

3.43

-
-

Sun bary.

-
-

0.61

-
-

0.05

-
- -

 

- -

We expect that in some time a full integration program modeled after the -DE406 integrator will become available. At that time we will rerun our -integration and report any significant differences.

- -

2.2         Lunar and Planetary Nodes and Apsides

- -

2.2.1    Mean Lunar Node and Mean Lunar Apogee -('Lilith', 'Black Moon')

- -

 

- -

Our mean node and mean apogee are computed from Moshier's lunar routine, -which adjusts the ELP2000-85 lunar theory of Chapront-Touzé and Chapront to fit -the JPL ephemeris on the interval from 3000 BC to 3000 AD. Its deviation from -Chapront's mean node is 0 for J2000 and keeps below 20 arc seconds for the -whole period. With the apogee, the deviation reaches 3 arc minutes at 3000 BC

- -

Lilith or the Dark Moon is either the apogee -(”aphelion”) of the lunar orbital ellipse or, for some people, its empty focal -point.  As seen from the geocenter, this -makes no difference. Both of them are located in exactly the same direction. -But the definition makes a difference for topocentric ephemerides.

- -

Because the Earth is located in one of the two focuses of the ellipse, -it has also been argued that the second focal point ought to be called ”Dark -Earth” rather than ”Dark Moon” (Ernst Ott).

- -

The opposite point, the lunar perigee or orbital point closest to the Earth, -is also known as Priapus. However, if Lilith is understood as the second -focus, an opposite point makes no sense, of course.

- -

Originally, the term ”Dark Moon” was used for a hypothetical second body -that was believed to move around the earth. There are still ephemerides around -for such a body, but today’s observational skills and knowledge in celestial -mechanics clearly exclude the possibility of such an object. As a result of -confusion, the term ”Dark Moon” was later given to the lunar apogee. However, -from the astrological symbolism of the lunar apogee, the expression ”Dark Moon” -seems to be appropriate.

- -

The Swiss Ephemeris apogee differs from the ephemeris given by Joëlle de -Gravelaine in her book ”Lilith, der schwarze Mond” (Astrodata 1990). The difference -reaches several arc minutes. The mean apogee (or perigee) moves along the mean -lunar orbit which has an inclination of 5 degrees. Therefore it has to be -projected on the ecliptic. With de Gravelaine's ephemeris, this has been -forgotten and therefore the book contains a false ephemeris. As a result of -this projection, we also provide an ecliptic latitude of the apogee, which will -be of importance if you work with declinations.

- -

There may be still another problem. The 'first' focal point does not coincide -with the geocenter but with the barycenter of the earth-moon-system. The -difference is about 4700 km. If one took this into account, it would result in -a monthly oscillation of the Black Moon. If one defines it as the apogee, this -oscillation would be about +/- 40 arc minutes. If one defines it as the second -focus, the effect is much greater: +/- 6 degrees! However, we have neglected -this effect.

- -

[added by Alois 7-feb-2005, arising out of a discussion with Juan -Revilla] The concept of 'mean lunar orbit' means that short term. e.g. monthly, -fluctuations must not be taken into account. In the temporal average, the EMB -coincides with the geocenter. Therefore, when mean elements are computed, it is -correct only to consider the geocenter, not the Earth-Moon Barycenter.

- -

In addition, computing topocentric positions of mean elements is also -meaningless and should not be done.

- -

2.2.2    The 'True' Node

- -

The 'true' lunar node is usually considered to be the osculating node -element of the momentary lunar orbit. I.e., the axis of the lunar nodes is the -intersection line of the momentary orbital plane of the moon and the plane of -the ecliptic. Or in other words, the nodes are the intersections of the two -great circles representing the momentary apparent orbit of the moon and the -ecliptic.

- -

The nodes are considered to be important because they are connected with -the eclipses. They are the meeting points of the sun and the moon. From this -point of view, a more correct definition might be: The axis of the lunar nodes -is the intersection line of the momentary orbital plane of the moon and the -momentary orbital plane of the sun.

- -

This makes a difference! Because of the monthly motion of the earth -around the earth-moon barycenter, the sun is not exactly on the ecliptic but -has a latitude, which, however, is always below an arc second. Therefore the -momentary plane of the sun's motion is not identical with the ecliptic. For the -true node, this would result in a difference in longitude of several arc -seconds!  However, Swiss Ephemeris -computes the traditional version.

- -

The advantage of the 'true' nodes against the mean ones is that when the -moon is in exact conjunction with them, it has indeed a zero latitude. This is -not true with the mean nodes. 

- -

However, in the strict sense of the word, even the ”true” nodes are true -only twice a month, viz. at the times when the moon crosses the ecliptic. -Positions given for the times in between those two points are just a -hypothesis. They are founded on the idea that celestial orbits can be approximated -by elliptical elements. This works well with the planets, but not with the -moon, because its orbit is strongly perturbed by the sun. Another procedure, -which might be more reasonable, would be to interpolate between the true node -passages. The monthly oscillation of the node would be suppressed, and the -maximum deviation from the conventional ”true” node would be about 20 arc -minutes.

- -

Precision of the true node:

- -

The true node can be computed from all of our three ephemerides.  If you want a precision of the order of at -least one arc second, you have to choose either the JPL or the Swiss Ephemeris.

- -

Maximum differences:

- -

JPL-derived node – Swiss-Ephemeris-derived node                ~ 0.1 arc second

- -

JPL-derived node – Moshier-derived node                        ~ 70   arc seconds

- -

(PLACALC was not better either. Its error was often > 1 arc minute.)

- -

2.2.3    The Osculating Apogee (so-called 'True -Lilith' or 'True Dark Moon')

- -

The position of 'True Lilith' is given in the 'New International -Ephemerides' (NIE, Editions St. Michel) and in Francis Santoni 'Ephemerides de -la lune noire vraie 1910-2010' (Editions St. Michel, 1993). Both Ephemerides -coincide precisely.

- -

The relation of this point to the mean apogee is not exactly of the same -kind as the relation between the true node and the mean node.  Like the 'true' node, it can be considered -as an osculating orbital element of the lunar motion. But there is an important -difference: The apogee contains the concept of the ellipse, whereas the node -can be defined without thinking of an ellipse. As has been shown above, the -node can be derived from orbital planes or great circles, which is not possible -with the apogee. Now ellipses are good as a description of planetary orbits, -but not of the lunar orbit which is strongly perturbed by the gravity of the -sun. The lunar orbit is far away from being an ellipse!

- -

However, the osculating apogee is 'true' twice a month: when it is in -exact conjunction with the moon, the moon is most distant from the earth; and -when it is in exact opposition to the moon, the moon is closest to the -earth.  In between those two points, the -value of the osculating apogee is pure imagination. The amplitude of the -oscillation of the osculating apogee around the mean apogee is +/- 25 -degrees, while the true apogee's deviation from the mean one never -exceeds 5 degrees.

- -

It has also to be mentioned, that there is a small difference between -the NIE's 'true Lilith' and our osculating apogee, which results from an -inaccuracy in NIE. The error reaches 20 arc minutes. According to Santoni, the -point was calculated using 'les 58 premiers termes correctifs au perigée moyen' -published by Chapront and Chapront-Touzé. And he adds: ”Nous constatons que -même en utilisant ces 58 termes correctifs, l'erreur peut atteindre -0,5d!” (p. -13) We avoid this error, computing the orbital elements from the position and -the speed vectors of the moon. (By the way, there is also an error of +/- 1 arc -minute in NIE's true node. The reason is probably the same.)

- -

Precision:

- -

The osculating apogee can be computed from any one of the three -ephemerides. If you want a precision of the order of at least one arc second, -you have to choose either the JPL or the Swiss Ephemeris.

- -

Maximum differences:

- -

JPL-derived apogee – Swiss-Ephemeris-derived apogee                ~ 0.9 arc second

- -

JPL-derived apogee – Moshier-derived apogee                   ~ 360   arc seconds                = -6   arc minutes!

- -

There have been several other attempts to solve the problem of a 'true' -apogee. They are not included in the SWISSEPH package.  All of them work with a correction table.

- -

They are listed in Santoni's 'Ephemerides de la lune noire vraie' -mentioned above. With all of them, a value is added to the mean apogee -depending on the angular distance of the sun from the mean apogee. There is -something to this idea. The actual apogees that take place once a month differ -from the mean apogee by never more than 5 degrees and seem to move along a -regular curve that is a function of the elongation of the mean apogee.

- -

However, this curve does not have exactly the shape of a sine, as is -assumed by all of those correction tables.  -And most of them have an amplitude of more than 10 degrees, which is -much too high. The most realistic solution so far was the one proposed by Henry -Gouchon in ”Dictionnaire Astrologique”, Paris 1992, which is based on an -amplitude of 5 degrees.

- -

In ”Meridian” 1/95, Dieter Koch has published another table that pays -regard to the fact that the motion does not precisely have the shape of a sine. -(Unfortunately, ”Meridian” confused the labels of the columns of the apogee and -the perigee.)

- -

2.2.4    The Interpolated or Natural Apogee and -Perigee (Lilith and Priapus)

- -

As has been said above, the osculating lunar apogee (so-called -"true Lilith") is a mathematical construct which assumes that the -motion of the moon is a two-body problem. This solution is obviously too -simplistic. Although Kepler ellipses are a good means to describe planetary -orbits, they fail with the orbit of the moon, which is strongly perturbed by -the gravitational pull of the sun. This solar perturbation results in gigantic -monthly oscillations in the ephemeris of the osculating apsides (the amplitude -is 30 degrees). These oscillations have to be considered an artifact of the insufficient model, they -do not really show a motion of the apsides.

- -

A more sensible solution seems to be an interpolation between the real -passages of the moon through its apogees and perigees. It turns out that the -motions of the lunar perigee and apogee form curves of different quality and -the two points are usually not in opposition to each other. They are more or -less opposite points only at times when the sun is in conjunction with one of -them or squares them. The amplitude of their oscillation about the mean -position is 5 degrees for the apogee and 25 degrees for the perigee.

- -

This solution has been called the "interpolated" -or "realistic" apogee and perigee by Dieter Koch in his publications. -Juan Revilla prefers to call them the "natural" -apogee and perigee. Today, Dieter Koch would prefer the designation -"natural". The designation "interpolated" is a bit misleading, -because it associates something that astrologers used to do everyday in old -days, when they still used to work with printed ephemerides and house tables.

- -

Note on implementation (from Swiss Ephemeris Version 1.70 on):

- -

Conventional interpolation algorithms do not work well in the case of -the lunar apsides. The supporting points are too far away from each other in -order to provide a good interpolation, the error estimation is greater than 1 -degree for the perigee. Therefore, Dieter chose a different solution. He -derived an "interpolation method" from the analytical lunar theory -which we have in the form of moshier's lunar ephemeris. This -"interpolation method" has not only the advantage that it probably -makes more sense, but also that the curve and its derivation are both -continuous.

- -

Literature -(in German):

- -

- -Dieter Koch, "Was ist Lilith und welche Ephemeride ist richtig", in: -Meridian 1/95

- -

- -Dieter Koch and Bernhard Rindgen, "Lilith und Priapus", -Frankfurt/Main, 2000. (http://www.vdhb.de/Lilith_und_Priapus/lilith_und_priapus.html)

- -

- Juan Revilla, "The Astronomical Variants of the Lunar Apogee - -Black Moon", http://www.expreso.co.cr/centaurs/blackmoon/barycentric.html

- -

 

- -

2.2.5             Planetary Nodes and Apsides

- -

Note to specialists in -planetary nodes and apsides: If important publications or web sites concerning -this topic have been forgotten in this summary, your clue will be appreciated.

- -

Methods written in small -characters are not supported by the Swiss Ephemeris software.

- -

Differences between the Swiss -Ephemeris and other ephemerides of the osculation nodes and apsides are -probably due to different planetary ephemerides being used for their -calculation. Small differences in the planetary ephemerides lead to much -greater differences in nodes and apsides.

- -

 

- -

Definitions of the nodes

- -

The lunar nodes indicate the -intersection axis of the lunar orbital plane with the plane of the ecliptic. At -the lunar nodes, the moon crosses the plane of the ecliptic and its ecliptic -latitude changes sign. There are similar nodes for the planets, but their -definition is more complicated. Planetary nodes can be defined in the following -ways:

- -

1)       They can be -understood as a direction or as an axis defined by the -intersection line of two orbital planes. E.g., the nodes of Mars are defined by -the intersection line of the orbital plane of Mars with the plane of the -ecliptic (or the orbital plane of the Earth).

- -

Note: However, as -Michael Erlewine points out in his elaborate web page on this topic -(http://thenewage.com/resources/articles/interface.html), planetary nodes could -be defined for any couple of planets. E.g. there is also an intersection line -for the two orbital planes of Mars and Saturn. Such non-ecliptic nodes have not -been implemented in the Swiss Ephemeris.

- -

Because such lines -are, in principle, infinite, the heliocentric and the geocentric positions of -the planetary nodes will be the same. There are astrologers that use such -heliocentric planetary nodes in geocentric charts.

- -

The ascending and -the descending node will, in this case, be in precise opposition.

- -

2)       There is a second -definition that leads to different geocentric ephemerides. The planetary nodes -can be understood, not as an infinite axis, but as the two points at -which a planetary orbit intersects with the ecliptic plane.

- -

For the lunar nodes -and heliocentric planetary nodes, this definition makes no difference from the -definition 1). However, it does make a difference for geocentric -planetary nodes, where, the nodal points on the planets orbit are transformed -to the geocenter. The two points will not be in opposition anymore, or they -will roughly be so with the outer planets. The advantage of these nodes is that -when a planet is in conjunction with its node, then its ecliptic latitude will -be zero. This is not true when a planet is in geocentric conjunction with its -heliocentric node. (And neither is it always true for inner the planets, for -Mercury and Venus.)

- -

Note: There is -another possibility, not implemented in the Swiss ephemeris: E.g., instead of -considering the points of the Mars orbit that are located on the ecliptic -plane, one might consider the points of the earth’s orbit that are -located on the orbital plane of Mars. If one takes these points geocentrically, -the ascending and the descending node, will always form an approximate square. -This possibility has not been implemented in the Swiss Ephemeris.

- -

3)       Third, the planetary -nodes could be defined as the intersection points of the plane defined by their -momentary geocentric position and motion with the plane of the ecliptic. Here -again, the ecliptic latitude would change sign at the moment when the planet -were in conjunction with one of its nodes. This possibility has not been -implemented in the Swiss Ephemeris.

- -

 

- -

Possible definitions for apsides and focal points

- -

The lunar apsides - the lunar -apogee and lunar perigee - have already been discussed further above. Similar -points exist for the planets, as well, and they have been considered by -astrologers. Also, as with the lunar apsides, there is a similar disagreement:

- -

One may consider either the -planetary apsides, i.e. the two points on a planetary orbit  that are closest to the sun and most distant -from the sun, resp. The former point is called the ”perihelion” and the -latter one the ”aphelion”. For a geocentric chart, these points could be -transformed from the heliocenter to the geocenter.

- -

However, Bernard Fitzwalter -and Raymond Henry prefer to use the second focal points of the planetary -orbits. And they call them the ”black stars” or the ”black suns of the -planets”. The heliocentric positions of these points are identical to the -heliocentric positions of the aphelia, but geocentric positions are not -identical, because the focal points are much closer to the sun than the -aphelia. Most of them are even inside the Earth orbit.

- -

The Swiss Ephemeris supports -both points of view.

- -

 

- -

Special case: the Earth

- -

The Earth is a special case. -Instead of the motion of the Earth herself, the heliocentric motion of the -Earth-Moon-Barycenter (EMB) is used to determine the osculating perihelion.

- -

There is no node of the earth -orbit itself.

- -

There is an axis around which -the earth's orbital plane slowly rotates due to planetary precession. The -position points of this axis are not calculated by the Swiss Ephemeris.

- -

 

- -

Special case: the Sun

- -

In addition to the Earth (EMB) -apsides, our software computes so-to-say "apsides" of the solar orbit -around the Earth, i.e. points on the orbit of the Sun where it is closest to -and where it is farthest from the Earth. These points form an opposition and are -used by some astrologers, e.g. by the Dutch astrologer George Bode or the Swiss -astrologer Liduina Schmed. The ”perigee”, located at about 13 Capricorn, is -called the "Black Sun", the other one, in Cancer, is called the -”Diamond”.

- -

So, for a complete set of -apsides, one might want to calculate them for the Sun and the Earth and -all other planets.

- -

 

- -

Mean and osculating positions

- -

There are serious problems about the ephemerides of planetary nodes and -apsides. There are mean ones and osculating ones. Both are well-defined points -in astronomy, but this does not necessarily mean that these definitions make -sense for astrology. Mean points, on the one hand, are not true, i.e. if a -planet is in precise conjunction with its mean node, this does not mean it be -crossing the ecliptic plane exactly that moment. Osculating points, on the -other hand, are based on the idealization of the planetary motions as two-body -problems, where the gravity of the sun and a single planet is considered and -all other influences neglected. There are no planetary nodes or apsides, at -least today, that really deserve the label ”true”.

- -

 

- -

Mean positions

- -

Mean nodes and apsides -can be computed for the Moon, the Earth and the planets Mercury – Neptune. They -are taken from the planetary theory VSOP87. Mean points can not be -calculated for Pluto and the asteroids, because there is no planetary theory -for them.

- -

Although the Nasa has -published mean elements for the planets Mercury – Pluto based on the JPL -ephemeris DE200, we do not use them (so far), because their validity is limited -to a 250 year period, because only linear rates are given, and because they are -not based on a planetary theory. (http://ssd.jpl.nasa.gov/elem_planets.html, -”mean orbit solutions from a 250 yr. least squares fit of the DE 200 planetary -ephemeris to a Keplerian orbit where each element is allowed to vary linearly -with time”)

- -

The differences between the -DE200 and the VSOP87 mean elements are considerable, though:

- -

                                Node                      Perihelion

- -

Mercury                 3”                            4”

- -

Venus                    3”                            107”

- -

Earth                      -                              35”

- -

Mars                      74”                          4”

- -

Jupiter                    330”                        1850”

- -

Saturn                    178”                        1530”

- -

Uranus                   806”                        6540”

- -

Neptune                225”                        11600” -(>3 deg!)

- -

 

- -

 

- -

Osculating nodes and apsides

- -

Nodes and apsides can also be -derived from the osculating orbital elements of a body, the parameters that -define an ideal unperturbed elliptic (two-body) orbit for a given time. -Celestial bodies would follow such orbits if perturbations were to cease -instantaneously or if there were only two bodies (the sun and the planet) -involved in the motion from now on and the motion were an ideal ellipse. -This ideal assumption makes it obvious that it would be misleading to call such -nodes or apsides "true". It is more appropriate to call them -"osculating". Osculating nodes and apsides are "true" only -at the precise moments, when the body passes through them, but for the times in -between, they are a mere mathematical construct, nothing to do with the nature -of an orbit.

- -

I have tried to solve the -problem by interpolating between actual passages of the planets through -their nodes and apsides. However, this method works only well with Mercury. -With all other planets, the supporting points are too far apart as to make an -accurate interpolation possible.

- -

There is another problem about -heliocentric ellipses. E.g. Neptune's orbit has often two perihelia and two -aphelia within one revolution. As a result, there is a wild oscillation of the -osculating or "true" perihelion (and aphelion), which is not due to a -transformation of the orbital ellipse but rather due to the deviation of the -orbit from an elliptic shape. Neptune’s orbit cannot be adequately represented -by a heliocentric ellipse. It makes no sense to use such points in astrology.

- -

In actuality, Neptune’s orbit -is not heliocentric at all. The double perihelia and aphelia are an effect of -the motion of the sun about the solar system barycenter. This motion is much -faster than the motion of Neptune, and Neptune cannot react on such fast -displacements of the Sun. As a result, Neptune seems to move around the -barycenter (or a mean sun) rather than around the real sun. In fact, Neptune's -orbit around the barycenter is therefore closer to an ellipse than his orbit -around the sun. The same statement is also true, though less obvious, for -Saturn, Uranus and Pluto, but not for Jupiter and the inner planets.

- -

This fundamental problem about -osculating ellipses of planetary orbits does of course not only affect the -apsides but also the nodes.

- -

As a solution, it seems -reasonable to compute the osculating elements of slow planets from their -barycentric motions rather than from their heliocentric motions. This procedure -makes sense especially for Neptune, but also for all planets beyond Jupiter. It -comes closer to the mean apsides and nodes for planets that have such points -defined. For Pluto and all transsaturnian asteroids, this solution may be used -as a substitute for "mean" nodes and apsides. Note, however, that -there are considerable differences between barycentric osculating and mean -nodes and apsides for Saturn, Uranus, and Neptune. (A few degrees! But heliocentric -ones are worse.)

- -

Anyway, neither the -heliocentric nor the barycentric ellipse is a perfect representation of the -nature of a planetary orbit. So, astrologers, do not expect anything very -reliable here either!

- -

The best choice of method will -probably be:

- -

For Mercury – Neptune: mean -nodes and apsides.

- -

For asteroids that belong to -the inner asteroid belt: osculating nodes/apsides from a heliocentric ellipse.

- -

For Pluto and transjovian -asteroids: osculating nodes/apsides from a barycentric ellipse.

- -

 

- -

The modes of the Swiss Ephemeris function -swe_nod_aps()

- -

The  function swe_nod_aps() can be run in the following modes:

- -

1) Mean positions are given -for nodes and apsides of Sun, Moon, Earth, and the planets up to Neptune. -Osculating positions are given with Pluto and all asteroids. This is the -default mode.

- -

2) Osculating positions are -returned for nodes and apsides of all planets.

- -

3) Same as 2), but for planets -and asteroids beyond Jupiter, a barycentric ellipse is used.

- -

4) Same as 1), but for Pluto -and asteroids beyond Jupiter, a barycentric ellipse is used.

- -

For the reasons given above, -Dieter Koch would prefer method 4) as making most sense.

- -

In all of these modes, the second focal point of the ellipse can be -computed instead of the aphelion.

- -

 

- -

 

- -

2.3.         Asteroids

- -

Asteroid -ephemeris files

- -

The standard distribution of SWISSEPH includes the main asteroids -Ceres, Pallas, Juno, Vesta, as well as Chiron, and Pholus. To compute them, you -must  have the main-asteroid ephemeris -files in your ephemeris directory.

- -

The names of these files are of the following form:

- -

seas_18.se1                  main asteroids -for 600 years from 1800 - 2400

- -

The size of such a file is about 200 kb.

- -

All other asteroids are available in separate files. The names of -additional asteroid files look like:

- -

se00433.se1                   the file of asteroid No. 433 (= -Eros)

- -

These files cover the period 3000 BC - 3000 AD.
-A short version for the years 1500 – 2100 AD has the file name with an 's' -imbedded,
se00433s.se1.

- -

The numerical integration of the all officiall numbered asteroids is an -ongoing effort. In December 1998, 8000 asteroids were numbered, and their -orbits computed by the devlopers of Swiss Ephemeris. In January 2001, the list -of numbered asteroids has reached 20957, and is growing very fast.

- -

Any asteroid can be called either with the JPL, the Swiss, or the -Moshier ephemeris flag, and the results will be slightly different. The reason -is that the solar position (which is needed for geocentric positions) will be -taken from the ephemeris that has been specified.

- -

Availability of asteroid files:

- -

-              all short files -(over 200000) are available for free download at our ftp server ftp.astro.ch/pub/swisseph.
-The purpose of providing this large number of files for download is that the -user can pick those few asteroids he/she is interested in.

- -

-              for all named -asteroids also a long  (6000 years) file -is available in the download area.

- -

How the -asteroids were computed

- -

To generate our asteroid ephemerides, we have modified the numerical -integrator of Steve Moshier, which was capable to rebuild the DE200 JPL -ephemeris.

- -

Orbital elements, with a few exceptions, were taken from the asteroid -database computed by E. Bowell, Lowell Observatory, Flagstaff, Arizona -(astorb.dat). After the introduction of the JPL database mpcorb.dat, we still -keep working with the Lowell data because Lowell elements are given with one -more digit, which can be relevant for long-term integrations.

- -

For a few close-Sun-approaching asteroids like 1566 Icarus, we use the -elements of JPL’s DASTCOM database. Here, the Bowell elements are not good for -long term integration because they do not account for relativity.

- -

Our asteroid ephemerides take into account the gravitational -perturbations of all planets, including the major asteroids Ceres, Pallas, and -Vesta and also the Moon.

- -

The mutual perturbations of Ceres, Pallas, and Vesta were included by -iterative integration. The first run was done without mutual perturbations, the -second one with the perturbing forces from the positions computed in the first -run.

- -

The precision of our integrator is very high. A test integration of the -orbit of Mars with start date 2000 has shown a difference of only 0.0007 arc -second from DE200 for the year 1600. We also compared our asteroid ephemerides -with data from JPL’s on-line ephemeris system ”Horizons” which provides -asteroid positions from 1600 on. Taking into account that Horizons does not -consider the mutual perturbations of the major asteroids Ceres, Pallas and -Vesta, the difference is never greater than a few 0.1 arcsec.

- -

(However, the Swisseph asteroid ephemerides do consider those -perturbations, which makes a difference of 10 arcsec for Ceres and 80 arcsec -for Pallas. This means that our asteroid ephemerides are even better than the -ones that JPL offers on the web.)

- -

The accuracy limits are therefore not set by the algorithms of our -program but by the inherent uncertainties in the orbital elements of the -asteroids from which our integrator has to start.

- -

Sources of errors are:

- -

-      Only some of the -minor planets are known to better than an arc second for recent decades. (See -also informations below on Ceres, Chiron, and Pholus.)

- -

-      Bowells elements do -not consider relativistic effects, which leads to significant errors with -long-term integrations of a few close-Sun-approaching orbits (except 1566, -2212, 3200, 5786, and 16960, for which we use JPL elements that do take into -account relativity).

- -

The orbits of some asteroids are extremely sensitive to perturbations by -major planets. E.g. 1862 Apollo becomes chaotic before the year 1870 AD when he -passes Venus within a distance which is only one and a half the distance from -the Moon to the Earth. In this moment, the small uncertainty of the initial -elements provided by the Bowell database grows, so to speak, ”into infinity”, -so that it is impossible to determine the precise orbit prior to that date. Our -integrator is able to detect such happenings and end the ephemeris generation -to prevent our users working with meaningless data.

- -

Ceres, Pallas, -Juno, Vesta

- -

The orbital elements of the four main asteroids Ceres, Pallas, Juno, and -Vesta are known very precisely, because these planets have been discovered -almost 200 years ago and observed very often since. On the other hand, their -orbits are not as well-determined as the ones of the main planets. We estimate -that the precision of the main asteroid ephemerides is better than 1 arc second -for the whole 20th century. The deviations from the Astronomical Almanac -positions can reach 0.5” (AA 1985 – 1997). But the tables in AA are based on -older computations, whereas we used recent orbital elements. (s. AA 1997, page L14)

- -

MPC elements have a precision of five digits with mean anomaly, -perihelion, node, and inclination and seven digits with eccentricity and -semi-axis. For the four main asteroids, this implies an uncertainty of a few -arc seconds in 1600 AD and a few arc minutes in 3000 BC.

- -

Chiron

- -

Positions of Chiron can be well computed for the time between 700 -AD  and 4650 AD. As a result of close -encounters with Saturn in Sept. 720 AD and in 4606 AD we cannot trace its orbit -beyond this time range. Small uncertainties in today's orbital elements have chaotic -effects before the year 700.

- -

Do not rely on earlier Chiron ephemerides supplying a Chiron for Cesar's, -Jesus', or Buddha's birth chart. They are completely meaningless.

- -

Pholus

- -

Pholus is a minor planet with orbital characteristics that are similar -to Chiron's. It was discovered in 1992. Pholus' orbital elements are not yet as -well-established as Chiron's. Our ephemeris is reliable from 1500 AD through -now. Outside the 20th century it will probably have to be corrected by several -arc minutes during the coming years.

- -

”Ceres” - -an application program for asteroid astrology

- -

Dieter Koch has written the application program Ceres which -allows to compute all kinds of lists for asteroid astrology. E.g. you can -generate a list of all your natal asteroids ordered by position in the zodiac. -But the program does much more:

- -

- natal positions, synastries/transits, composite charts, progressions, -primary directions etc.

- -

- geocentric, heliocentric, topocentric, house horoscopes

- -

- lists sorted by position in zodiac, by asteroid name, by declination -etc.

- -

The program is on the asteroid short files CD-ROM and the standard Swiss -Ephemeris CD-ROM.

- -

 

- -

2.4         Comets

- -

The Swiss Ephemeris does not provide ephemerides of comets yet.

- -

2.5         Fixed stars and Galactic Center

- -

A database of fixed stars is included with Swiss Ephemeris. It contains -about 800 stars, which can be computed with the swe_fixstar() function. The -precision is about 0.001”.

- -

Our data are based on the star catalogue of Steve Moshier. It can be -easily extended if more stars are required.

- -

The database was improved by Valentin Abramov, Tartu, Estonia. He -reordered the stars by constellation, added some stars, many names and -alternative spellings of names.

- -

In Feb. -2006 (Version 1.70) the fixed stars file was updated with data from the SIMBAD -database (http://simbad.u-strasbg.fr/Simbad).

- -

 

- -

In Jan. -2011 (Version 1.77) a new fixed stars file sefstars.txt was created from the -SIMBAD database.

- -

2.6         ‚Hypothetical' bodies

- -

We include some astrological factors in the ephemeris which have no -astronomical basis – they have never been observed physically. As the purpose -of the Swiss Ephemeris is astrology, we decided to drop our scientific view in -this area and to be of service to those astrologers who use these -‘hypothetical’ planets and factors. Of course neither of our scientific -sources, JPL or Steve Moshier, have anything to do with this part of the Swiss -Ephemeris.

- -

Uranian Planets -(Hamburg Planets: Cupido, Hades, Zeus, Kronos, Apollon, Admetos, Vulkanus, -Poseidon)

- -

There have been discussions whether these factors are to be called -'planets' or 'Transneptunian points'. However, their inventors, the German -astrologers Witte and Sieggrün, considered them to be planets. And moreover -they behave like planets in as far as they circle around the sun and obey its -gravity.

- -

On the other hand, if one looks at their orbital elements, it is obvious -that these orbits are highly unrealistic.  -Some of them are perfect circles – something that does not exist in -physical reality. The inclination of the orbits is zero, which is very -improbable as well. The revised elements published by James Neely in Matrix Journal -VII (1980) show small eccentricities for the four Witte planets, but they are -still smaller than the eccentricity of Venus which has an almost circular -orbit. This is again very improbable.

- -

There are even more problems. An ephemeris computed with such elements -describes an unperturbed motion, i.e. it takes into account only the Sun's -gravity, not the gravitational influences of the other planets. This may result -in an error of a degree within the 20th century, and -greater errors for earlier centuries.

- -

Also, note that none of the real transneptunian objects that have been -discovered since 1992 can be identified with any of the Uranian planets.

- -

SWISSEPH uses James Neely's revised orbital elements, because they agree -better with the original position tables of Witte and Sieggrün.

- -

The hypothetical planets can again be called with any of the three -ephemeris flags. The solar position needed for geocentric positions will then -be taken from the ephemeris specified.

- -

Transpluto -(Isis)

- -

This hypothetical planet was postulated 1946 by the French astronomer -M.E. Sevin because of otherwise unexplainable gravitational perturbations in -the orbits of Uranus and Neptune.

- -

However, this theory has been superseded by other attempts during the -following decades, which proceeded from better observational data.  They resulted in bodies and orbits -completely different from what astrologers know as 'Isis-Transpluto'. More -recent studies have shown that the perturbation residuals in the orbits of -Uranus and Neptune are too small to allow postulation of a new planet. They -can, to a great extent, be explained by observational errors or by systematic -errors in sky maps.

- -

In telescope observations, no hint could be discovered that this planet -actually existed. Rumors that claim the opposite are wrong.  Moreover, all of the transneptunian bodies -that have been discovered since 1992 are very different from Isis-Transpluto.

- -

Even if Sevin's computation were correct, it could only provide a rough -position. To rely on arc minutes would be illusory.  Neptune was more than a degree away from its theoretical position -predicted by Leverrier and Adams.

- -

Moreover, Transpluto's position is computed from a simple Kepler -ellipse, disregarding the perturbations by other planets' gravities.  Moreover, Sevin gives no orbital -inclination.

- -

Though Sevin gives no inclination for his Transpluto, you will realize -that there is a small ecliptic latitude in positions computed by SWISSEPH. This -mainly results from the fact that its orbital elements are referred to epoch -5.10.1772 whereas the ecliptic changes position with time.

- -

The elements used by SWISSEPH are taken from ”Die Sterne” 3/1952, p. 70. -The article does not say which equinox they are referred to.  Therefore, we fitted it to the Astron -ephemeris which apparently uses the equinox of 1945 (which, however, is rather -unusual!).

- -

Harrington

- -

This is another attempt to predict Planet X's orbit and position from -perturbations in the orbits of  Uranus -and Neptune. It was published in The Astronomical Journal 96(4), October 1988, -p. 1476ff. Its precision is meant to be of the order of +/- 30 degrees. -According to Harrington there is also the possibility that it is actually -located in the opposite constellation, i.e. Taurus instead of Scorpio. The -planet has a mean solar distance of about 100 AU and a period of about 1000 -years.

- -

Nibiru

- -

A highly speculative planet derived from the theory of Zecharia Sitchin, -who is an expert in ancient Mesopotamian history and a ”paleoastronomer”.  The elements have been supplied by Christian -Woeltge, Hannover.  This planet is -interesting because of its bizarre orbit. It moves in clockwise direction and -has a period of 3600 years. Its orbit is extremely eccentric. It has its -perihelion within the asteroid belt, whereas its aphelion lies at about 12 -times the mean distance of Pluto.  In -spite of its retrograde motion, it seems to move counterclockwise in -recent centuries. The reason is that it is so slow that it does not even -compensate the precession of the equinoxes.

- -

Vulcan

- -

This is a ‘hypothetical’ planet inside the orbit of Mercury (not -identical to the “Uranian” planet Vulkanus). Orbital elements according to L.H. -Weston. Note that the speed of this “planet” does not agree with the Kepler -laws. It is too fast by 10 degrees per year.

- -

Selena/White -Moon

- -

This is a ‘hypothetical’ second moon of the earth (or a third one, after -the “Black Moon”) of obscure provenance. Many Russian astrologers use it. Its -distance from the earth is more than 20 times the distance of the moon and it -moves about the earth in 7 years. Its orbit is a perfect, unperturbed circle. -Of course, the physical existence of such a body is not possible. The gravities -of Sun, Earth, and Moon would strongly influence its orbit.

- -

Dr. -Waldemath’s Black Moon

- -

This is another hypothetical second moon of the earth, postulated by a -Dr. Waldemath in the Monthly Wheather Review 1/1898. Its distance from -the earth is 2.67 times the distance of the moon, its daily motion about 3 -degrees. The orbital elements have been derived from Waldemath’s original data. -There are significant differences from elements used in earlier versions of -Solar Fire, due to different interpretations of the values given by Waldemath. -After a discussion between Graham Dawson and Dieter Koch it has been agreed -that the new solution is more likely to be correct. The new ephemeris does not -agree with Delphine Jay’s ephemeris either, which is obviously inconsistent -with Waldemath’s data.

- -

This body has never been confirmed. With its 700-km diameter and an -apparent diameter of 2.5 arc min, this should have been possible very soon -after Waldemath’s publication.

- -

 

- -

The -Planets X of Leverrier, Adams, Lowell and Pickering

- -

These are the hypothetical planets that have lead to the discovery of -Neptune and Pluto or at least have been brought into connection with them.  Their enormous deviations from true Neptune -and Pluto may be interesting for astrologers who work with hypothetical bodies. -E.g. Leverrier and Adams are good only around the 1840ies, the discovery epoch -of Neptune. To check this, call the program swetest as follows:

- -

$ swetest -p8 -dU -b1.1.1770 -n8 -s7305 -hel --fPTLBR -head

- -

(i.e.: compute planet 8 (Neptune) - planet 'U' (Leverrier), from -1.1.1770, 8 times, in 7305-day-steps, heliocentrically. You can do this from -the Internet web page swetest.htm. The -output will be:)

- -

Nep-Lev -01.01.1770  -18° 0'52.3811    0°55' 0.0332   -6.610753489

- -

Nep-Lev -01.01.1790   -8°42' 9.1113    1°42'55.7192   -4.257690148

- -

Nep-Lev -02.01.1810   -3°49'45.2014    1°35'12.0858   -2.488363869

- -

Nep-Lev -02.01.1830   -1°38' 2.8076    0°35'57.0580   -2.112570665

- -

Nep-Lev -02.01.1850    1°44'23.0943   -0°43'38.5357   -3.340858070

- -

Nep-Lev -02.01.1870    9°17'34.4981   -1°39'24.1004   -5.513270186

- -

Nep-Lev -02.01.1890   21°20'56.6250   -1°38'43.1479   -7.720578177

- -

Nep-Lev -03.01.1910   36°27'56.1314   -0°41'59.4866   -9.265417529

- -

 

- -

  (difference in    (difference in   -(difference in

- -

  longitude)        latitude)        -solar distance)

- -

 

- -

One can see that the error is in the range of 2 degrees between 1830 and -1850 and grows very fast beyond that period.

- -

 

- -

2.7 -Sidereal Ephemerides

- -

Sidereal -Calculations

- -

 

- -

Sidereal -astrology has a complicated history, and we (the developers of Swiss Ephemeris) -are actually tropicalists. Any suggestions how we could improve our sidereal -calculations are welcome!

- -

 

- -

For deeper -studies of the problem, read:

- -

Raymond -Mercier, ”Studies in the Medieval Conception of Precession”,

- -

in 'Archives -Internationales d'Histoire des Sciences', (1976) 26:197-220 (part I), and -(1977) 27:33-71 (part II)

- -

 

- -

Thanks to -Juan Ant. Revilla, San Jose, Costa Rica, who gave us this precious -bibliographic hint.

- -

 

- -

The -problem of defining the zodiac

- -

 

- -

One of the -main differences between the western and the eastern tradition of astrology is -the definition of the zodiac. Western astrology uses the so-called tropical -zodiac in which 0 Aries is defined as the vernal point (the celestial point -where the sun stands at the beginning of spring). The tropical zodiac is a division of the ecliptic into 12 zodiac -signs that are all of equal size, i. e. 30°. Astrologers call these signs -after some constellations that are found along the ecliptic, but they are -actually independent of these constellations. Because the vernal point slowly -moves through the constellations and completes its cycle once in 26000 years, -tropical Aries moves through all constellations along the ecliptic, staying in -each one for roughly 2160 years. Currently, the vernal point, and the beginning -of tropical Aries, is located in sidereal Pisces. In a few hundred years, it will -enter Aquarius, which is the reason why the more impatient ones among us are -already preparing for the “Age of Aquarius”.

- -

 

- -

The -so-called sidereal zodiac also consists of 12 equal-sized zodiac signs, -but it is tied to the fixed stars. These sidereal signs, which are used in -Hindu astrology but also by some western Neo-Babylonian and Neo-Hellenistic -astrologers, only roughly coincide with the sidereal constellations, which are -of variable size.

- -

 

- -

While the -definition of the tropical zodiac is clear and never questioned, sidereal -astrology has quite some problems in defining its zodiac. There are many -different definitions of the sidereal zodiac, and they differ by several -degrees. At a first glance, all of them look arbitrary, and there is no -striking evidence – from a mere astronomical point of view – for anyone of -them. However, a historical study shows at least that all of them stem from -only one sidereal zodiac. On the other hand, this does not mean that it be -simple to give a precise definition of it.

- -

 

- -

Sidereal -planetary positions are usually computed from an equation similar to:

- -

sidereal_position -= tropical_position – ayanamsha,

- -

where ayanamsha -is the difference between the two zodiacs and changes with time. (Sanskrit ayanâmsha -means ”part of a path”; the Hindi form of the word is ayanamsa with an s -instead of sh.) ”

- -

The value -of the ayanamsha of date is computed from the ayanamsha value at -a start date (e.g. 1 Jan 1900) and the speed of the vernal point, the so-called -precession rate in ecliptic longitude.

- -

 

- -

The zero -point of the sidereal zodiac is therefore traditionally defined by the equation

- -

sidereal Aries = tropical Aries – -ayanamsha

- -

and by a -date for which this equation is true.

- -

 

- -

The Swiss -Ephemeris allows for about twenty different ayanamshas, but the user can -also define his or her own ayanamsha.

- -

 

- -

 

- -

The -Babylonian tradition and the Fagan/Bradley ayanamsha

- -

 

- -

There have -been several attempts to calculate the zero point of the Babylonian ecliptic -from cuneiform lunar and planetary tablets. Positions were given from some -sidereally fixed reference point. The main problem in fixing the zero point is -the inaccuracy of ancient observations. Around 1900 F.X. Kugler found -that the Babylonian star positions fell into three groups:

- -

 

- -

  9) ayanamsha = -3°22´, t0 = -100

- -

10) ayanamsha -= -4°46´, t0 = -100                                Spica at 29 vi 26

- -

11) ayanamsha -= -5°37´, t0 = -100 

- -

 

- -

(9 – 11 = -Swiss Ephemeris ayanamsha numbers)

- -

 

- -

In 1958, Peter -Huber reviewed the topic in the light of new material and found:

- -

 

- -

12) ayanamsha -= -4°34´ +/- 20´, t0 = –100                  -Spica at 29 vi 14

- -

The -standard deviation was 1°08’

- -

 

- -

In 1977 Raymond -Mercier noted that the zero point might have been defined as the ecliptic -point that culminated simultaneously with the star eta Piscium (Al -Pherg). For this possibility, we compute:

- -

 

- -

13) ayanamsha -= -5°04’46”, t0 = –129                             Spica at 29 vi 21

- -

 

- -

Around -1950, Cyril Fagan, the founder of the modern western sidereal astrology, -reintroduced the old Babylonian zodiac into astrology, placing the fixed star -Spica near 29°00 Virgo. As a result of ”rigorous statistical investigation” -(astrological!) of solar and lunar ingress charts, Donald Bradley decided -that the sidereal longitude of the vernal point must be computed from Spica at -29 vi 06'05" disregarding its proper motion. Fagan and Bradley -defined their ”synetic vernal point” as:

- -

 

- -

0) ayanamsha -= 24°02’31.36”  for 1 Jan. 1950   with Spica at 29 vi 06'05" (without -aberration)

- -

(For the -year –100, this ayanamsha places Spica at 29 vi 07’32”.)

- -

 

- -

Fagan and -Bradley said that the difference between P. Huber’s zodiac and theirs was only -1’. But actually (if Mercier’s value for the Huber ayanamsha is correct) -it was 7’.

- -

 

- -

According -to a text by Fagan (found on the internet), Bradley ”once opined in print prior -to "New Tool" that it made more sense to consider Aldebaran and -Antares, at 15 degrees of their respective signs, as prime fiducials than it -did to use Spica at 29 Virgo”. Such statements raise the question if the -sidereal zodiac ought to be tied up to one of those stars. Today, we know that -the fixed stars have a proper motion, wherefore such definitions are not a good -idea, if an absolute coordinate system independent on moving bodies is -intended. But the Babylonians considered them to be fixed.

- -

 

- -

For this -possibility, Swiss Ephemeris gives an Aldebaran ayanamsha:

- -

 

- -

14) ayanamsha -with Aldebaran at 15ta00’00” and Antares at 15sc00’17” around the year –100.

- -

 

- -

The -difference between this ayanamsha and the Fagan/Bradley one is 1’06”.

- -

 

- -

 

- -

The -Hipparchan tradition

- -

 

- -

Raymond -Mercier has shown -that all of the ancient Greek and the medieval Arabic astronomical works -located the zero point of the ecliptic somewhere between 10 and 22 arc -minutes east of the star zeta Piscium. This definition goes back to the -great Greek astronomer Hipparchus. How did he choose that point? -Hipparchus said that the beginning of Aries rises when Spica sets. This -statement was meant for a geographical latitude of 36°, the latitude of the -island of Rhodos, which Hipparchus’ descriptions of rises and settings are -referred to.

- -

 

- -

However, -there seems to be more behind it. Mercier points out that according to -Hipparchus’ star catalogue the stars alpha Arietis, beta Arietis, zeta -Piscium, and Spica are located in precise alignment on a great -circle which goes through that zero point near zeta Piscium. Moreover, -this great circle was identical with the horizon once a day at Hipparchus’ -geographical latitude of 36°. In other words, the zero point rose at the same -time when the three mentioned stars in Aries and Pisces rose and at the same -time when Spica set.

- -

 

- -

This would -of course be a nice definition for the zero point, but unfortunately the stars -were not really in such precise alignment. They were only assumed to be -so.

- -

 

- -

Mercier -gives the following ayanamshas for Hipparchus and Ptolemy -(who used the same star catalogue as Hipparchus):

- -

 

- -

16) ayanamsha -= -9°20’     27 June –128 (jd -1674484)    zePsc 29pi33’49”                Hipparchos

- -

 

- -

(According -to Mercier’s calculations, the Hipparchan zero point should have been between -12 and 22 arc min east of zePsc, but the Hipparchan ayanamsha, as given -by Mercier, has actually the zero point 26’ east of zePsc. This comes from the -fact that Mercier refers to the Hipparchan position of zeta Piscium, which -was at least rounded to 10’ – if otherwise correct.)

- -

 

- -

If we used -the explicit statement of Hipparchus that Aries rose when Spica set at a -geographical latitude of 36 degrees, the precise ayanamsha would be --8°58’13” for 27 June –128 (jd 1674484) and zePsc would be found at 29pi12’, -which is too far from the place where it ought to be.

- -

 

- -

Mercier -also discusses the old Indian precession models and zodiac point definitions. -He notes that, in the Sûrya Siddânta, the star zeta Piscium (in -Sanskrit Revatî) has almost the same position as in the Greek sidereal -zodiac, i.e. 29°50’ in Pisces. On the other hand, however, Spica (in Sanskrit Citra) -is given the longitude 30° Virgo. This is a contradiction, either Spica or -Revatî must be considered wrong.

- -

 

- -

Moreover, -if the precession model of the Sûrya Siddânta is used to compute an ayanamsha -for the date of Hipparchus, it will turn out to be –9°14’01”, which is very -close to the Hipparchan value. The same calculation can be done with the Ârya -Siddânta, and the ayanamsha for Hipparchos’ date will be –9°14’55”. -For the Siddânta Shiromani the zero point turns out to be Revatî itself. -By the way, this is also the zero point chosen by Copernicus! So, there -is an astonishing agreement between Indian and Western traditions!

- -

 

- -

The same -zero point near the star Revatî is also used by the so-called Ushâshashî -ayanamsha which is still in use. It differs from the Hipparchan one by only -11 arc minutes.

- -

 

- -

4) ayanamsha -= 18°39’39.46                1 Jan. 1900                Ushâshashî         

- -

zePsc (Revatî) 29pi50’ (today), -29pi45’ (Hipparchus’ epoch)

- -

 

- -

The -Greek-Arabic-Hindu ayanamsha was zero around 560 AD. The tropical and -the sidereal zero points were at exactly the same place. Did astronomers or -astrologers react on that event? They did! Under the Sassanian ruler Khusrau -Anûshirwân, in the year 556, the astronomers of Persia met to correct their -astronomical tables, the so-called Zîj al-Shâh. These tables are no -longer extant, but they were the basis of later Arabic tables, the ones of -al-Khwârizmî and the Toledan tables.

- -

 

- -

One of the -most important cycles in Persian astronomy/astrology was the one of Jupiter, -which started and ended with the conjunctions of Jupiter with the sun. This -cycle happened to end in the year 564, and the conjunction of Jupiter -with the Sun took place only one day after the spring equinox. And the -spring equinox took place precisely 10 arcmin east of zePsc. This may be a -mere coincidence from a present-day astronomical point of view, but for -scientists of those days this was obviously the moment to redefine all -astronomical data.

- -

 

- -

Mercier -also shows that in the precession model used in that epoch and in other models -used later by Arabic Astronomers, precession was considered to be a phenomenon -connected with ”the movement of Jupiter, the calendar marker of the night sky, -in its relation to the Sun, the time keeper of the daily sky”. Such theories -were of course wrong, from the point of view of today’s knowledge, but they -show how important that date was considered to be.

- -

 

- -

After the -Sassanian reform of astronomical tables, we have a new definition of the -Greek-Arabic-Hindu sidereal zodiac (this is not explicitly stated by Mercier, -however):

- -

 

- -

16) ayanamsha -= 0                              18 Mar 564, 7:53:23 UT (jd /ET 1927135.8747793)    Sassanian

- -

     -zePsc  29pi49'59"

- -

 

- -

The same -zero point then reappears with a precision of 1’ in the Toledan tables, the -Khwârizmian tables, the Sûrya Siddhânta, and the Ushâshashî ayanamsha.

- -

 

- -

(Besides -the synchronicity of the Sun-Jupiter conjunction and the coincidence of the two -zodiacs, it is funny to note that the cosmos helped the inaccuracy of ancient -astronomy by ”rounding” the position of the star zePsc to precisely 10 arc -minutes east of the zero point! All Ptolemean star positions were rounded to 10 -arc minutes.)

- -

 

- -

 

- -

Suryasiddhanta and Aryabhata

- -

 

- -

The explanations above are mainly -derived from the article by Mercier. However, it is possible to derive -ayanamshas from ancient Indian works themselves.

- -

 

- -

The planetary theory of the main -work of ancient Indian astronomy, the Suryasiddhanta, uses the so-called -Kaliyuga era as its zero point, i. e. the 18th February 3102 BC, -0:00 local time at Ujjain, which is at geographic longitude of 75.7684565 east -(Mahakala temple). This era is henceforth called “K0s”. This is also the zero -date for the planetary theory of the ancient Indian astronomer Aryabhata, with -the only difference that he reckons from sunrise of the same date instead of -midnight. We call this Aryabhatan era “K0a”.

- -

 

- -

Now, Aryabhata mentioned that he was -23 years old when exactly 3600 years had passed since the beginning of the -Kaliyuga era. If 3600 years with a year length as defined by the Aryabhata are -counted from K0a, we arrive at the 21st March, 499 AD, 6:56:55.57 -UT. At this point of time the mean Sun is assumed to have returned to the -beginning of the sidereal zodiac, and we can derive an ayanamsha from this -information. There are two possible solutions, though:

- -

 

- -

1. We can find the place of the mean -Sun at that time using modern astronomical algorithms and define this point as -the beginning of the sidereal zodiac.

- -

2. As Aryabhata believed that the -zodiac began at the vernal point, we can take the vernal point of this date as -the zero point.

- -

 

- -

The same calculations can be done -based on K0s and the year length of the Suryasiddhanta. The resulting date of -Kali 3600 is the same day but about half an hour later: 7:30:31.57 UT.

- -

 

- -

Algorithms for the mean Sun were -taken from: Simon et alii, “Numerical expressions for precession formulae and -mean elements for the Moon and the planets”, in: Astron. Astrophys. 282,663-683 -(1994).   

- -

 

- -

 

- -

The -Spica/Citra tradition and the Lahiri ayanamsha

- -

 

- -

There is -another ayanamsha tradition that assumes the star Spica (in Sanskrit Citra) at -0° Libra. This ayanamsha definition is the most common one in modern Hindu astrology. -It was first proposed by the astronomy historian S. B. Dixit (also written -Dikshit), who in 1896 published his important work History of Indian -Astronomy (= Bharatiya Jyotih -Shastra; bibliographical details further below). Dixit came to the -conclusion that, given the prominence that Vedic religion gave to the cardinal -points of the tropical year, the Indian calendar, which is based on the zodiac, -should be reformed and no longer be calculated relative to the sidereal, but to -the tropical zodiac. However, if such a reform could not be brought about due -to the rigid conservatism of contemporary Vedic culture, then the ayanamsha -should be chosen in such a way that the sidereal zero point would be in -opposition to Spica. In this way, it would be in accordance with Grahalaghava, a work by the 16th century -astronomer Ganeśa Daivajña that -was still used in the 20th century by Indian calendar makers. (op. -cit., Part II, p. 323ff.). This view was taken over by the Indian Calendar Reform Committee on the occasion of the Indian -calendar reform in 1956, when the ayanamsha based on the -star Spica/Citra was declared the Indian standard. This standard is mandatory -not only for astrology but also for astronomical ephemerides and almanacs and -calendars published in India. The ayanamsha based on the star Spica/Citra -became known as “Lahiri ayanamsha”. It was named after the Calcuttan astronomer -and astrologer Nirmala Chandra Lahiri, who was a member of the Reform -Committee.

- -

 

- -

However, as -has been said, it was Dixit who first propagated this solution to the ayanamsha -problem. Besides, the Suryasiddhanta, the most important work of ancient Hindu -astronomy, which was written in the first centuries AD, but reworked several -times, already assumes Spica/Citra at 180° (although this statement has caused -a lot of controversy because it is in contradiction with the positions of other -stars, and in particular with zeta Piscium/Revati at 359°50‘). And last but not -least, the same ayanamsha definition seems to have been used in Babylon and -Greece, as well. While the information given above in the chapters about the -Babylonian and the Hipparchan traditions are based on analyses of old star -catalogues and planetary theories, a study by Nick Kollerstrom of 22 ancient -Greek and 5 Babylonian birth charts has lead to a different conclusion: they -fit better with Spica at 0 Libra (= Lahiri), than with Aldebaran at 15 Taurus -and Spica at 29 Virgo (= Fagan/Bradley).

- -

 

- -

The -standard definition of the Indian ayanamsha (“Lahiri” ayanamsha) was originally -introduced in 1955 by the Indian Calendar -Reform Committee (23°15' 00" on the 21 March 1956, 0:00 Ephemeris -Time). The definition was corrected in Indian -Astronomical Ephemeris 1989, page 556, footnote:

- -

"According -to new determination of the location of equinox this initial value has been -revised to and used in computing the mean ayanamsha with effect from -1985'."

- -

The mention -of “mean ayanamsha” is misleading though. The value 23°15' 00".658 is true -ayanamsha, i. e. it includes nutation and is relative to the true equinox of -date.

- -

 

- -

1) true -ayanamsha = 23°15' 00".658                             21 March 1956, 0:00 TDT        Lahiri, Spica roughly at 0 Libra

- -

 

- -

The Lahiri -standard position of Spica is 179°59’04 in the year 2000, and 179°59’08 in -1900. In the year 285, when the star was conjunct the autumnal equinox, its -position was 180°00’16. It was in the year 667 AD that its position was -precisely 180°. The motion of the star is a result partly of its proper motion -and partly of planetary precession, which has the ecliptic slightly change its -orientation. But what method exactly was used to define this ayanamsha? -According to the Indian pundit AK Kaul, an expert in Hindu calendar and -astrology, Lahiri wanted to place the star at 180°, but at the same time arrive -at an ayanamsha that was in agreement with the Grahalaghava, an important work -for traditional Hindu calendar calculation that was written in the 16th -century. (e-mail from Mr. Kaul to Dieter Koch on 1 March 2013)

- -

 

- -

In 1967, 12 -years after the standard definition of the Lahiri ayanamsha had been published -by the Calendar Reform Committee, Lahiri published another ayanamsha in his -Bengali book Panchanga Darpan. There, -the value of “mean ayanamsha” is given as 22°26’45”.50 in 1900, whereas the -official value is 22°27’37”.76. The idea behind this modification was obviously -that he wanted to have the star exactly at 180° for recent years, whereas with -the standard definition the star is “wrong” by almost an arc minute. It -therefore seems that Lahiri did not follow the Indian standard himself but was -of the opinion that Spica had to be at exactly 180° (true chitrapaksha -ayanamsha). At the moment, the Swiss only supports the official standard. -However, it is rather trivial to calculate the positions of a planet and the -star and then subtract the star from the planet.

- -

 

- -

Swiss -Ephemeris versions below 1.78.01, had a slightly different definition of the -Lahiri ayanamsha that had been taken from Robert Hand's astrological software -Nova. It made a difference of only 0.01 arc sec.

- -

 

- -

Many thanks -to Vinay Jha, Narasimha Rao, and Avtar Krishen Kaul for helping us to better -understand the complicated matter.

- -

 

- -

If the -reader finds errors in this documentation or is able to contribute important -information, his or her feedback will be greatly appreciated.

- -

 

- -

Sources:

- -

Burgess, -E., The Surya Siddanta. A Text-book of Hindu Astronomy, Delhi, 2000 -(MLBD).

- -

Dikshit, S(ankara) B(alkrishna), Bharatiya Jyotish Sastra (History of Indian Astronomy) (Tr. -from Marathi), Govt. of India, 1969, part I & II.

- -

Kollerstrom, Nick, „The Star Zodiac of Antiquity“, in: Culture -& Cosmos, Vol. -1, No.2, 1997).

- -

Lahiri, N. C., Panchanga Darpan (in Bengali), Calcutta, 1967 (Astro Research -Bureau).

- -

Lahiri, -N. C., Tables of the Sun, Calcutta, 1952 (Astro Research Bureau).

- -

Saha, M. -N., and Lahiri, N. C., Report of the Calendar Reform Committee, C.S.I.R., New Delhi, 1955.

- -

The -Indian astronomical ephemeris for the year 1989, -Delhi (Positional Astronomy Centre, India Meteorological Department)

- -

 

- -

The -sidereal zodiac and the Galactic Center

- -

 

- -

As said -before, there is a very precise definition for the tropical ecliptic. It starts -at one of the two intersection points of the ecliptic and the celestial -equator. Similarly, we have a very precise definition for the house circle -which is said to be an analogy of the zodiac. It starts at one of the two -intersection points of the ecliptic and the local horizon. Unfortunately there -is no such definition for the sidereal zodiac. Or can a fixed star like Spica -be important enough to play the role of an anchor star?

- -

 

- -

One could -try to make the sidereal zero point agree with the Galactic Center. The Swiss -astrologer Bruno Huber has pointed out that the Galactic Center enters a new -tropical sign always around the same time when the vernal point enters the next -sidereal sign. Around the time, when the vernal point will go into Aquarius, -the Galactic Center will change from Sagittarius to Capricorn. Huber also notes -that the ruler of the tropical sign of the Galactic Center is always the same -as the ruler of the sidereal sign of the vernal point (at the moment Jupiter, -will be Saturn in a few hundred years).

- -

 

- -

A -correction of the Fagan ayanamsha by about 2 degrees or a correction of -the Lahiri ayanamsha by 3 degrees would place the Galactic Center at 0 -Sagittarius. Astrologically, this would obviously make some sense. Therefore, -we add an ayanamsha fixed at the Galactic Center:

- -

 

- -

17) -Galactic Center at 0 Sagittarius

- -

 

- -

The other -possibility – in analogy with the tropical ecliptic and the house circle – -would be to start the sidereal ecliptic at the intersection point of the -ecliptic and the galactic plane. At present, this point is located near 0 -Capricorn. However, defining this point as sidereal 0 Aries would mean to break -completely with the tradition, because it is far away from the traditional sidereal -zero points.

- -

 

- -

Other -ayanamshas

- -

 

- -

There are a -few more ayanamshas, whose provenance is not known to us. They were -given to us by Graham Dawson (”Solar Fire”), who took them over from Robert -Hand’s Program ”Nova”:

- -

 

- -

2) De Luce

- -

3) Raman

- -

5) Krishnamurti

- -

 

- -

David Cochrane adds

- -

 

- -

7) Yukteshvar

- -

8) JN Bhasin

- -

 

- -

Graham -Dawson adds the following one:

- -

 

- -

6) Djwhal -Khul

- -

 

- -

He comments it as follows: ”The "Djwhal -Khul" ayanamsha originates from information in an article in the Journal -of Esoteric Psychology, Volume 12, No 2, pp91-95, Fall 1998-1999 publ. Seven -Ray Institute). It is based on an inference that the Age of Aquarius starts in -the year 2117. I decided to use the 1st of July simply to minimise the possible -error given that an exact date is not given.”

- -

 

- -

Conclusions

- -

 

- -

We have -found that there are basically three definitions, not counting the manifold -variations:

- -

1.     the Babylonian zodiac with Spica at 29 -Virgo or Aldebaran at 15 Taurus:

- -

a) P. Huber, b) Fagan/Bradley c) refined with Aldebaran -at 15 Tau

- -

2.     the Greek-Arabic-Hindu zodiac with the zero -point between 10 and 20’ east of zeta Piscium:

- -

a) Hipparchus, b) Ushâshashî, c) Sassanian

- -

3.     the Greek-Hindu astrological zodiac with -Spica at 0 Libra

- -

a) Lahiri

- -

 

- -

The -differences are:

- -

between 1) -and 3) is about 1 degree

- -

between 1) -and 2) is about 5 degrees

- -

between 2) -and 3) is about 4 degrees

- -

 

- -

It is -obvious that all of them stem from the same origin, but it is difficult to say -which one should be preferred for sidereal astrology.

- -

 

- -

1) is -historically the oldest one, but we are not sure about its precise astronomical -definition. Aldebaran at 15 Tau might be one.

- -

 

- -

3) has the -most striking reference point, the bright star Spica at 0 Libra. But this -definition is so clear and simple that, had it really been intended by the -inventors of the sidereal ecliptic, it would certainly not have been forgotten -or given up by the Greek and Arabic tradition.

- -

 

- -

2) is the -only definition independent on a star – especially, if we take the Sassanian -version. This is an advantage, because all stars have a proper motion and -cannot really define a fixed coordinate system. Also, it is the only ayanamsha -for which there is historical evidence that it was observed and recalibrated at -the time when it was 0.

- -

 

- -

On the -other hand, the point 10’ East of zePsc has no astronomical significance at -all, and the great difference between this zero point and the Babylonian one -raises the question: Did Hipparchus’ definition result from a misunderstanding -of the Babylonian definition, or was it an attempt to improve the Babylonian -zodiac?

- -

 

- -

 

- -

In search -of correct algorithms

- -

 

- -

A second -problem in sidereal astrology – after the definition of the zero point – is the -precession algorithm to be applied. We can think of five possibilities:

- -

 

- -

1)     the traditional algorithm (implemented in -Swiss Ephemeris as default mode)

- -

 

- -

In all -software known to us, sidereal planetary positions are computed from an -equation mentioned before:

- -

sidereal_position -= tropical_position – ayanamsha,

- -

The ayanamhsa -is computed from the ayanamsha(t0) at a starting date (e.g. 1 Jan 1900) -and the speed of the vernal point, the so-called precession rate.

- -

 

- -

This -algorithm is unfortunately too simple. At best, it can be considered as an -approximation. The precession of the equinoxes is not only a matter of -ecliptical longitude, but is a more complex phenomenon. It has two components:

- -

 

- -

a) The soli-lunar -precession: The combined gravitational pull of the Sun and the Moon on -the equatorial bulge of the earth causes the earth to spin like a top. As a -result of this movement, the vernal point moves around the ecliptic with a -speed of about 50”. This cycle lasts about 26000 years.

- -

 

- -

b) The planetary -precession: The earth orbit itself is not fixed. The gravitational -influence from the planets causes it to wobble. As a result, the obliquity of -the ecliptic currently decreases by 47” per century, and this movement has an -influence on the position of the vernal point, as well. (This has nothing to do -with the precessional motion of the earth rotation axis; the equator holds an -almost stable angle against the ecliptic of a fixed date, e.g. 1900, with a -change of only a couple of 0.06” cty-2).

- -

 

- -

Because the -ecliptic is not fixed, it cannot be correct just to subtract an ayanamsha -from the tropical position in order to get a sidereal position. Let us take, -e.g., the Fagan/Bradley ayanamsha, which is defined by:

- -

ayanamsha = -24°02’31.36” + d(t)

- -

24°02’... -is the value of the ayanamsha on 1 Jan 1950. It is obviously measured on -the ecliptic of 1950.

- -

d(t) is the distance of the vernal point -at epoch t from the position of the vernal point on 1 Jan 1950. This -value is also measured on the ecliptic of 1950. But the whole ayanamsha -is subtracted from a planetary position which is referred to the ecliptic of -the epoch t. This does not make sense.

- -

 

- -

As an -effect of this procedure, objects that do not move sidereally, e.g. the -Galactic Center, seem to move. If we compute its precise tropical position for -several dates and then subtract the Fagan/Bradley ayanamsha for the same -dates in order to get its sidereal position, these positions will all be -slightly different:

- -

 

- -

Date         Longitude        -Latitude

- -

01.01.-5000  2 sag 07'57.7237   -4°41'34.7123 (without aberration)

- -

01.01.-4000  2 sag 07'32.9817   -4°49' 4.8880

- -

01.01.-3000  2 sag 07'14.2044   -4°56'47.7013

- -

01.01.-2000  2 sag 07' 0.4590   -5° 4'39.5863

- -

01.01.-1000  2 sag 06'50.7229   -5°12'36.9917

- -

01.01.0      2 sag 06'44.2492   -5°20'36.4081

- -

01.01.1000   2 sag 06'40.7813   -5°28'34.3906

- -

01.01.2000   2 sag 06'40.5661   -5°36'27.5619

- -

01.01.3000   2 sag 06'44.1743   -5°44'12.6886

- -

01.01.4000   2 sag 06'52.1927   -5°51'46.6231

- -

01.01.5000   2 sag 07' 4.8942   -5°59' 6.3665

- -

 

- -

The effect -can be much greater for bodies with greater ecliptical latitude.

- -

Exactly the -same kind of thing happens to sidereal planetary positions, if one calculates -them in the traditional way. It is only because planets move that we are not -aware of it.

- -

 

- -

The traditional method of computing sidereal positions is -geometrically not sound and can never achieve the same degree of accuracy as -tropical astrology is used to.

- -

 

- -

2)     fixed-star-bound ecliptic (not -implemented in Swiss Ephemeris)

- -

 

- -

One could -use a stellar object as an anchor for the sidereal zodiac, and make sure that a -particular stellar object is always at a certain position on the ecliptic of -date. E.g. one might want to have Spica always at 0 Libra or the Galactic -Center always at 0 Sagittarius. There is nothing against this method from a -geometrical point of view. But it has to be noted, that this system is not -really fixed either, because it is still based on the moving ecliptic, and -moreover the fixed stars have a small proper motion, as well.

- -

 

- -

3)     projection onto the ecliptic of t0 -(implemented in Swiss Ephemeris as an option)

- -

 

- -

Another -possibility would be to project the planets onto the reference ecliptic of the ayanamsha -– for Fagan/Bradley, e.g., this would be the ecliptic of 1950 – by a correct coordinate -transformation and then subtract 24.042°, the initial value of the ayanamsha. -

- -

 

- -

If we -follow this method, the position of the galactic center will always be the same -(2 sag 06'40.4915   -5°36' 4.0652     (without aberration))

- -

 

- -

This method -is geometrically sounder than the traditional one, but still it has a problem. -For, if we want everything referred to the ecliptic of a fixed date t0, we will -have to choose that date very carefully. Its ecliptic ought to be of special -importance. The ecliptic of 1950 or the one of 1900 are obviously meaningless -and not suitable as a reference plane. And how about that 18 March 564, on -which the tropical and the sidereal zero point coincided? Although this may be -considered as a kind of cosmic anniversary (the Sassanians did so), the -ecliptic plane of that time does not have an ”eternal” value. It is different -from the ecliptic plane of the previous anniversary around the year 26000 BC, -and it is also different from the ecliptic plane of the next cosmic anniversary -around the year 26000 AD.

- -

 

- -

This -algorithm is supported by the Swiss Ephemeris, too. However, it must not be -used with the Fagan/Bradley definition or with other definitions that were -calibrated with the traditional method of ayanamsha subtraction. It can -be used for computations of the following kind:

- -

a)     Astronomers may want to calculate positions -referred to a standard equinox like J2000, B1950, or B1900, or to any other -equinox.

- -

b)    Astrologers may be interested in the -calculation of precession-corrected transits. See explanations in the -next chapter.

- -

c)     The algorithm can be applied to the Sassanian -ayanamsha or to any user-defined sidereal mode, if the ecliptic of its -reference date is considered to be astrologically significant.

- -

d)    The algorithm makes the problems of the -traditional method visible. It shows the dimensions of the inherent inaccuracy -of the traditional method.

- -

 

- -

For the planets -and for centuries close to t0, the difference from the traditional procedure -will be only a few arc seconds in longitude. Note that the Sun will have an -ecliptical latitude of several arc minutes after a few centuries.

- -

 

- -

For the -lunar nodes, the procedure is as follows:

- -

Because the -lunar nodes have to do with eclipses, they are actually points on the ecliptic -of date, i.e. on the tropical zodiac. Therefore, we first compute the nodes as -points on the ecliptic of date and then project them onto the sidereal zodiac. -This procedure is very close to the traditional method of computing sidereal -positions (a matter of arc seconds). However, the nodes will have a latitude of -a couple of arc minutes.

- -

 

- -

For the -axes and houses, we compute the points where the horizon or the house lines -intersect with the sidereal plane of the zodiac, not with the ecliptic -of date. Here, there are greater deviations from the traditional procedure. If t -is 2000 years from t0 the difference between the ascendant positions -might well be 1/2 degree.

- -

 

- -

4)     The long-term mean Earth-Sun plane (not -implemented in Swiss Ephemeris)

- -

 

- -

To avoid -the problem of choice of a reference ecliptic, we might watch out for a kind of -”average ecliptic”. As a matter of fact, there are some possibilities in this -direction. The mechanism of the planetary precession mentioned above works in a -similar way as the mechanism of the luni-solar precession. The movement of the -earth orbit can be compared to a spinning top, with the earth mass equally -distributed around the whole orbit. The other planets, especially Venus and -Jupiter, cause it to move around an average position. But unfortunately, this -”long-term mean Earth-Sun plane” is not really stable, either, and therefore -not suitable as a fixed reference frame.

- -

 

- -

The period -of this cycle is about 75000 years. The angle between the long-term mean plane -and the ecliptic of date is at the moment about 1°33’, but it changes -considerably. (This cycle must not be confused with the period between two -maxima of the ecliptic obliquity, which is about 40000 years and often -mentioned in the context of planetary precession. This is the time it takes the -vernal point to return to the node of the ecliptic (its rotation point), and -therefore the oscillation period of the ecliptic obliquity.)

- -

 

- -

5)     The solar system rotation plane -(implemented in Swiss Ephemeris as an option)

- -

 

- -

The solar -system as a whole has a rotation axis, too, and its equator is quite close to -the ecliptic, with an inclination of 1°34’44” against the ecliptic of the year -2000. This plane is extremely stable and probably the only convincing candidate -for a fixed zodiac plane.

- -

 

- -

This method -avoids the problem of method 3). No particular ecliptic has to be chosen as a -reference plane. The only remaining problem is the choice of the zero point.

- -

 

- -

This -algorithm must not be applied to any of the predefined sidereal modes, except -the Sassanian one. You can use this algorithm, if you want to research on a -better-founded sidereal astrology, experiment with your own sidereal mode, and -calibrate it as you like.

- -

 

- -

 

- -

More -benefits from our new sidereal algorithms: standard equinoxes and -precession-corrected transits

- -

 

- -

Method no. -3, the transformation to the ecliptic of t0, opens two more possibilities:

- -

You can -compute positions referred to any equinox, 2000, 1950, 1900, or whatever you -want. This is sometimes useful when Swiss Ephemeris data ought to be compared -with astronomical data, which are often referred to a standard equinox.

- -

There are -predefined sidereal modes for these standard equinoxes:

- -

18) J2000

- -

19) J1900

- -

20) B1950

- -

 

- -

Moreover, -it is possible to compute precession-corrected transits or synastries -with very high precision. An astrological transit is defined as the passage of -a planet over the position in your birth chart. Usually, astrologers assume -that tropical positions on the ecliptic of the transit time has to be compared -with the positions on the tropical ecliptic of the birth date. But it has been -argued by some people that a transit would have to be referred to the ecliptic -of the birth date. With the new Swiss Ephemeris algorithm (method no. 3) it is -possible to compute the positions of the transit planets referred to the -ecliptic of the birth date, i.e. the so-called precession-corrected -transits. This is more precise than just correcting for the precession in -longitude (see details in the programmer's documentation swephprg.doc, -ch. 8.1).

- -

 

- -

3.         Apparent versus true planetary positions

- -

The Swiss ephemeris provides the calculation of apparent or true -planetary positions. Traditional astrology works with apparent positions. -”Apparent” means that the position where we see the planet is used, not -the one where it actually is. Because the light's speed is finite, a planet is -never seen exactly where it is. (see above, 2.1.3 ”The details of coordinate -transformation”, light-time and aberration) Astronomers therefore make a -difference between apparent and true positions. However, this -effect is below 1 arc minute.

- -

Most astrological ephemerides provide apparent positions. However, -this may be wrong. The use of apparent positions presupposes that astrological -effects can be derived from one of the four fundamental forces of physics, -which is impossible. Also, many astrologers think that astrological ”effects” -are a synchronistic phenomenon (the ones familiar with physics may refer to the -Bell theorem). For such reasons, it might be more convincing to work with true -positions.

- -

Moreover, the Swiss Ephemeris supports so-called astrometric -positions, which are used by astronomers when they measure positions of -celestial bodies with respect to fixed stars. These calculations are of no use -for astrology, though.

- -

4.         Geocentric versus topocentric and -heliocentric positions

- -

More precisely speaking, common ephemerides tell us the position where -we would see a planet if we stood in the center of the earth and could see the -sky. But it has often been argued that a planet’s position ought to be referred -to the geographic position of the observer (or the birth place). This can make -a difference of several arc seconds with the planets and even more than a -degree with the moon! Such a position referred to the birth place is called -the topocentric planetary position. The observation of transits over the -moon might help to find out whether or not this method works better.

- -

For very precise topocentric calculations, the Swiss Ephemeris not only -requires the geographic position, but also its altitude above sea. An altitude -of 3000 m (e.g. Mexico City) may make a difference of more than 1 arc second -with the moon. With other bodies, this effect is of the amount of a 0.01”. The -altitudes are referred to the approximate earth ellipsoid. Local irregularities -of the geoid have been neglected.

- -

Our topocentric lunar positions differ from the NASA positions (s. the Horizons -Online Ephemeris System http://ssd.jpl.nasa.gov) by 0.2 - 0.3 arc sec. This -corresponds to a geographic displacement by a few 100 m and is about the best -accuracy possible. In the documentation of the Horizons System, -it is written that: "The Earth is assumed to be a rigid body. ... These -Earth-model approximations result in topocentric station location errors, with -respect to the reference ellipsoid, of less than 500 meters."

- -

The Swiss ephemeris also allows the computation of apparent or true topocentric -positions.

- -

With the lunar nodes and apogees, Swiss Ephemeris does not make a -difference between topocentric and geocentric positions. There are manyfold -ways to define these points topocentrically. The simplest one is to understand -them as axes rather than points somewhere in space. In this case, the -geocentric and the topocentric positions are identical, because an axis is an -infinite line that always points to the same direction, not depending on the -observer's position.

- -

Moreover, the Swiss Ephemeris supports the calculation of heliocentric -and barycentric planetary positions. Heliocentric positions are -positions as seen from the center of the sun rather than from the center of the -earth. Barycentric ones are positions as seen from the center of the solar -system, which is always close to but not identical to the center of the sun.

- -

5. -Heliacal Events, Eclipses, Occultations, and Other Planetary Phenomena

- -

5.1. Heliacal Events of the Moon, -Planets and Stars

- -

5.1.1. Introduction

- -

From Swiss Ephemeris version 1.76 on, heliacal -events have been included. The heliacal rising and setting of planets and stars -was very important for ancient Babylonian and Greek astronomy and -astrology.  Also, first and last -visibility of the Moon can be calculated, which are important for many -calendars, e.g. the Islamic, Babylonian and ancient Jewish calendars.

- -

The heliacal events that can be determined are:

- -

·     -Inferior -planets

- -

·Heliacal -rising (morning first)

- -

·Heliacal -setting (evening last)

- -

·Evening -first

- -

·Morning last

- -

·     -Superior -planets and stars

- -

·Heliacal -rising

- -

·Heliacal setting

- -

 

- -

·     -Moon

- -

·Evening -first

- -

·Morning -last

- -

 

- -

The -acronychal risings and settings (also called cosmical settings) of superior -planets are a different matter. They will be added in a future version of the -Swiss Ephemeris.

- -

 

- -

The principles behind the calculation are based -on the visibility criterion of Schaefer [1993, 2000], which includes -dependencies on aspects of:

- -

·     -Position -celestial objects  
-like the position and magnitude of the Sun, Moon and the studied celestial object, -

- -

·     -Location -and optical properties observer 
-like his/her location (longitude, latitude, height), age, acuity and possible -magnification of optical instruments (like binoculars)

- -

·     -Meteorological -circumstances 
-mainly expressed in the astronomical extinction coefficient, which is -determined by temperature, air pressure, humidity, visibility range (air -quality).

- -

·     -Contrast -between studied object and sky background 
-The observer’s eye can on detect a certain amount of contract and this contract -threshold is the main body of the calculations

- -

In the following sections above aspects will be -discussed briefly and an idea will be given what functions are available to -calculate the heliacal events. Lastly the future developments will be -discussed.

- -

5.1.2. Aspect determining visibility

- -

The theory behind this visibility criterion is -explained by Schaefer [1993, 2000] and the implemented by Reijs [2003] and Koch -[2009]. The general ideas behind this theory are explained in the following -subsections.

- -

5.1.2.1. Position of celestial -objects

- -

To determine the visibility of a celestial -object it is important to know where the studied celestial object is and what -other light sources are in the sky. Thus beside determining the position of the -studied object and its magnitude, it also involves calculating the position of -the Sun (the main source of light) and the Moon. This is common functions -performed by Swiss Ephemeris.

- -

5.1.2.2. Geographic location

- -

The location of the observer determines the -topocentric coordinates (incl. influence of refraction) of the celestial object -and his/her height (and altitude of studied object) will have influence on the -amount of airmass that is in the path of celestial object’s light. 

- -

5.1.2.3. Optical properties of -observer

- -

The observer’s eyes will determine the -resolution and the contrast differences he/she can perceive (depending on age -and acuity), furthermore the observer might used optical instruments (like -binocular or telescope).

- -

5.1.2.4. Meteorological -circumstances

- -

The meteorological circumstances are very -important for determining the visibility of the celestial object. These -circumstances influence the transparency of the airmass (due to -Rayleigh&aerosol scattering and ozone&water absorption) between the -celestial object and the observer’s eye. This result in the astronomical -extinction coefficient (AEC: ktot). As this is a complex -environment, it is sometimes ‘easier’ to use a certain AEC, instead of -calculating it from the meteorological circumstances.

- -

The parameters are stored in the datm (Pressure -[mbar], Temperature [C], Relative humidity [%], AEC [-]) array.

- -

5.1.2.5. Contrast between object and -sky background

- -

All the above aspects influence the perceived -brightnesses of the studied celestial object and its background sky. The -contrast threshold between the studied object and the background will determine -if the observer can detect the studied object.

- -

5.1.3. Functions to determine the -heliacal events

- -

Two functions are seen as the spill of -calculating the heliacal events:

- -

5.1.3.1. Determining the contrast -threshold (swe_vis_limit_magn) 

- -

Based on all the aspects mentioned earlier, the -contrast threshold is determine which decides if the studied object is visible -by the observer or not.

- -

5.1.3.2. Iterations to determine -when the studied object is really visible (swe_heliacal_ut) 

- -

In general this procedure works in such a way -that it finds (through iterations) the day that conjunction/opposition between -Sun and studied object happens and then it determines, close to Sun’s rise or -set (depending on the heliacal event), when the studied object is visible (by -using the swe_vis_limit_magn function).

- -

5.1.3.3. Geographic limitations of -swe_heliacal_ut() and strange behavior of planets in high geographic latitudes

- -

This function is limited to geographic -latitudes between 60S and 60N. Beyond that the heliacal phenomena of the -planets become erratic.  We found cases -of strange planetary behavior even at 55N.

- -

An example:

- -

At 0E, 55N, with an extinction coefficient 0.2, -Mars had a heliacal rising on 25 Nov. 1957. But during the following weeks and -months Mars did not constantly increase its height above the horizon before -sunrise. In contrary, it disappeared again, i.e. it did a “morning last” on 18 -Feb. 1958. Three months later, on 14 May 1958, it did a second morning first -(heliacal rising). The heliacal setting or evening last took place on 14 June -1959.

- -

Currently, this special case is not handled by -swe_heliacal_ut(). The function cannot detect “morning lasts” of Mars and -following “second heliacal risings”. The function only provides the heliacal -rising of  25 Nov. 1957 and the next -ordinary heliacal rising in its ordinary synodic cycle which took place on 11 -June 1960.

- -

However, we may find a solution for such -problems in future releases of the Swiss Ephemeris and even extend the -geographic range of swe_heliacal_ut() to beyond +/- 60.

- -

5.1.3.4. Visibility of Venus and the -Moon during day

- -

For the Moon, swe_heliacal_ut() calculates the -evening first and the morning last. For each event, the function returns the -optimum visibility and a time of visibility start and visibility end. Note, -that on the day of its morning last or evening first, the moon is often visible -for almost the whole day. It even happens that the crescent first becomes -visible in the morning after its rising, then disappears, and again reappears -during culmination, because the observation conditions are better as the moon -stands high above the horizon. The function swe_heliacal_ut() does not handle -this in detail. Even if the moon is visible after sunrise, the function assumes -that the end time of observation is at sunrise. The evening fist is handled in -the same way.

- -

With Venus, we have a similar situation. Venus -is often accessible to naked eye observation during day, and sometimes even -during inferior conjunction, but usually only at a high altitude above the -horizon. This means that it may be visible in the morning at its heliacal -rising, then disappear and reappear during culmination.  (Whoever does not believe me, please read -the article by H.B. Curtis listed under “References”.)  The function swe_heliacal_ut() does not -handle this case. If binoculars or a telescope is used, Venus may be even -observable during most of the day on which it first appears in the east.

- -

5.1.4. Future developments

- -

The section of the Swiss Ephemeris software is -still under development. The acronychal events of superior planets and stars -will be added. And comparing other visibility criterions will be included; like -Schoch’s criterion [1928], Hoffman’s overview [2005] and -Caldwall&Laney  criterion [2005].

- -

5.1.5. References

- -

- Caldwell, J.A.R., Laney, C.D., First -visibility of the lunar crescent, http://www.saao.ac.za/public-info/sun-moon-stars/moon-index/lunar-crescent-visibility/first-visibility-of-lunar-crescent/, 2005, viewed March, 30th, -2009 

- -

- H.B. Curtis, Venus Visible at inferior -conjunction, in : Popular Astronomy vol. 18 (1936), p. 44; -online at http://articles.adsabs.harvard.edu/cgi-bin/nph-iarticle_query?1936PA.....44...18C&data_type=PDF_HIGH&whole_paper=YES&type=PRINTER&filetype=.pdf

- -

- Hoffman, R.E., Rational design of -lunar-visibility criteria, The observatory, Vol. 125, June 2005, No. -1186, pp 156-168. 

- -

- Reijs, V.M.M., Extinction angle and heliacal events, -http://www.iol.ie/~geniet/eng/extinction.htm, 2003, viewed March, 30th, -2009 

- -

- Schaefer, B., Astronomy and the limit of -vision, Vistas in astronomy, 36:311, 1993 

- -

- Schaefer, B., New methods and techniques for -historical astronomy and archaeoastronomy, Archaeoastronomy, Vol. XV, -2000, page 121-136 

- -

- Schoch, K., Astronomical and calendrical -tables in Langdon. S., Fotheringham, K.J., The Venus tables of Amninzaduga: -A solution of Babylonian chronology by means of Venus observations of the first -dynasty, Oxford, 1928.

- -

 

- -

5.2. -Eclipses, occultations, risings, settings, and other planetary phenomena

- -

The Swiss Ephemeris also includes functions for many calculations -concerning solar and lunar eclipses. You can:

- -

- search for eclipses or occultations, globally or for a given -geographical position

- -

- compute global or local circumstances of eclipses or occultations

- -

- compute the geographical position where an eclipse is central

- -

Moreover, you can compute for all planets and asteroids:

- -

- risings and settings (also for stars)

- -

- midheaven and lower heaven transits (also for stars)

- -

- height of a body above the horizon (refracted and true, also for -stars)

- -

- phase angle

- -

- phase (illumined fraction of disc)

- -

- elongation (angular distance between a planet and the sun)

- -

- apparent diameter of a planetary disc

- -

- apparent magnitude.

- -

6.     AC, MC, Houses, Vertex

- -

The Swiss Ephemeris package -also includes a function that computes the Ascendant, the MC, the houses, the -Vertex, and the Equatorial Ascendant (sometimes called "East Point").

- -

6.1.         House Systems

- -

The following house methods -have been implemented so far:

- -

6.1.1. -Placidus

- -

This system is named after the Italian monk -Placidus de Titis (1590-1668). The cusps are defined by divisions of -semidiurnal and seminocturnal arcs. The 11th -cusp is the point on the ecliptic that has completed 2/3 of its semidiurnal -arc, the 12th cusp the point that has completed 1/3 of it. -The 2nd cusp has completed 2/3 of its seminocturnal arc, and the 3rd cusp 1/3.

- -

6.1.2. -Koch/GOH

- -

This system is called after -the German astrologer Walter Koch (1895-1970). Actually it was invented by -Fiedrich Zanzinger and Heinz Specht, but it was made known by Walter Koch. In -German-speaking countries, it is also called the -"Geburtsorthäusersystem" (GOHS), i.e. the "Birth place house -system". Walter Koch thought that this system was more related to the -birth place than other systems, because all house cusps are computed with the "polar -height of the birth place", which has the same value as the geographic -latitude.

- -

This argumentation shows -actually a poor understanding of celestial geometry. With the Koch system, the -house cusps are actually defined by horizon lines at different times. To -calculate the cusps 11 and 12, one can take the time it took the MC degree to -move from the horizon to the culmination, divide this time into three and see -what ecliptic degree was on the horizon at the thirds. There is no reason why -this procedure should be more related to the birth place than other house -methods.

- -

6.1.3. -Regiomontanus

- -

Named after the Johannes -Müller (called "Regiomontanus", because he stemmed from Königsberg) -(1436-1476).

- -

The equator is divided into 12 -equal parts and great circles are drawn through these divisions and the north -and south points on the horizon. The intersection points of these circles with -the ecliptic are the house cusps.

- -

6.1.4. Campanus

- -

Named after Giovanni di Campani -(1233-1296).

- -

The vertical great circle from -east to west is divided into 12 equal parts and great circles are drawn through -these divisions and the north and south points on the horizon. The intersection -points of these circles with the ecliptic are the house cusps.

- -

6.1.5. -Equal System

- -

The zodiac is divided into 12 -houses of 30 degrees each starting from the Ascendant.

- -

6.1.6 -Vehlow-equal System

- -

Equal houses with the -Ascendant positioned in the middle of the first house.

- -

6.1.7. -Axial Rotation System

- -

Also called the "Meridian -house system". The equator is partitioned into 12 equal parts starting -from the ARMC. Then the ecliptic points are computed that have these divisions -as their right ascension. Note: The ascendant is different from the 1st -house cusp.

- -

6.1.8. -The Morinus System

- -

The equator is divided into 12 -equal parts starting from the ARMC. The resulting 12 points on the equator are -transformed into ecliptic coordinates. Note: The Ascendant is different from -the 1st cusp, and the MC is different from the 10th cusp. -

- -

6.1.9. -Horizontal system

- -

The house cusps are defined by -division of the horizon into 12 directions. The first house cusp is not -identical with the Ascendant but is located precisely in the east.

- -

6.1.10. -The Polich-Page (“topocentric”) system

- -

This system was introduced in -1961 by Wendel Polich and A.P. Nelson Page. Its construction is rather -abstract: The tangens of the polar height of the 11th house is the -tangens of the geo. latitude divided by 3. (2/3 of it are taken for the 12th -house cusp.) The philosophical reasons for this algorithm are obscure. Nor is this -house system more “topocentric” (i.e. birth-place-related) than any other house -system. (c.f. the misunderstanding with the “birth place system”.) The -“topocentric” house cusps are close to Placidus house cusps except for high -geographical latitudes. It also works for latitudes beyond the polar circles, -wherefore some consider it to be an improvement of the Placidus system. -However, the striking philosophical idea behind Placidus, i.e. the division of -diurnal and nocturnal arcs of points of the zodiac, is completely abandoned.

- -

6.1.11. -Alcabitus system

- -

A method of house division -which first appears with the Hellenistic astrologer Rhetorius (500 A.D.) but is -named after Alcabitius, an Arabic astrologer, who lived in the 10th century -A.D. This is the system used in the few remaining examples of ancient Greek -horoscopes.

- -

The MC and ASC are -respectively the 10th- and 1st- house cusps. The remaining cusps are determined -by the trisection of the semidiurnal and seminocturnal arcs of the ascendant, -measured on the celestial equator. The houses are formed by great circles that -pass through these trisection points and the celestial north and south poles.

- -

6.1.12. -Gauquelin sectors

- -

This is the “house” system -used by the Gauquelins and their epigones and critics in statistical -investigations in Astrology. Basically, it is identical with the Placidus house -system, i.e. diurnal and nocturnal arcs of ecliptic points or planets are -subdivided. There are a couple of differences, though.

- -

-          -Up to 36 “sectors” (or house cusps) are used instead of 12 houses.

- -

-          -The sectors are counted in clockwise direction.

- -

-          -There are so-called plus (+) and minus (–) zones. The plus zones are the -sectors that turned out to be significant in statistical investigations, e.g. -many top sportsmen turned out to have their Mars in a plus zone. The plus -sectors are the sectors 36 – 3, 9 – 12, 19 – 21, 28 – 30.

- -

-          -More sophisticated algorithms are used to calculate the exact house -position of a planet (see chapters 6.4 and 6.5 on house positions and Gauquelin -sector positions of planets).

- -

 

- -

6.1.13. -Krusinski/Pisa/Goelzer system

- -

This house system was first published in 1994/1995 by three different -authors independently of each other:

- -

- by Bogdan -Krusinski (Poland)

- -

- by Milan Pisa -(Czech Republic) under the name “Amphora house system”.

- -

- by Georg Goelzer (Switzerland) under the name “Ich-Kreis-Häusersystem” -(“I-Circle house system”)..

- -

Krusinski -defines the house system as “… based on the great circle passing through -ascendant and zenith. This circle is divided into 12 equal parts (1st cusp is -ascendant, 10th cusp is zenith), then the resulting points are projected onto -the ecliptic through meridian circles. The house cusps in space are -half-circles perpendicular to the equator and running from the north to the south -celestial pole through the resulting cusp points on the house circle. The -points where they cross the ecliptic mark the ecliptic house cusps.” -(Krusinski, e-mail to Dieter Koch)

- -

It -may seem hard to believe that three persons could have discovered the same -house system at almost the same time. But apparently this is what happened. -Some more details are given here, in order to refute wrong accusations from the -Czech side against Krusinski of having “stolen” the house system.

- -

Out of the documents that Milan Pisa sent to -Dieter Koch, the following are to be mentioned: Private correspondence from -1994 and 1995 on the house system between Pisa and German astrologers Böer and -Schubert-Weller, two type-written (apparently unpublished) treatises in German -on the house system dated from 1994. A printed booklet of 16 pages in Czech -from 1997 on the theory of the house system (“Algoritmy noveho systemu -astrologickych domu”). House tables computed by Michael Cifka for the -geographical latitude of Prague, copyrighted from 1996. The house system was -included in the Czech astrology software Astrolog v. 3.2 (APAS) in 1998. Pisa’s -first publication on the house system happened in spring 1997 in “Konstelace“ -No. 22, the periodical of the Czech Astrological Society.

- -

 

- -

Bogdan Krusinski first published the house -system at an astrological congress in Poland, the “"XIV -Szkola Astrologii Humanistycznej" held by Dr Leszek Weres, which took -place between 15.08.1995 and 28.08.1995 in  -Pogorzelica at cost of the Baltic Sea.” Since -then Krusinski has distributed printed house tables for the Polish geographical -latitudes 49-55° and floppy disks with house tables for latitudes 0-90°. In -1996, he offered his program code to Astrodienst for implementation of this -house system into Astrodienst’s then astronomical software Placalc. (At that -time, however, Astrodienst was not interested in it.) In May 1997, Krusinski -put the data on the web at http://www.ci.uw.edu.pl/~bogdan/astrol.htm (now at -http://www.astrologia.pl/main/domy.html) In February 2006 he sent -Swiss-Ephemeris-compatible program code in C for this house system to -Astrodienst. This code was included into Swiss Ephemeris Version 1.70 and -released on 8 March 2006.

- -

 

- -

Georg Goelzer describes the same house system -in his book “Der Ich-Kosmos”, which appeared in July 1995 at Dornach, -Switzerland (Goetheanum). The book has a second volume with house tables -according to the house method under discussion. The house tables were created -by Ulrich Leyde. Goelzer also uses a house calculation programme which has the -time stamp “9 April 1993” and produces the same house cusps.

- -

 

- -

By March 2006, when the house system was -included in the Swiss Ephemeris under the name  -of “Krusinski houses”, neither Krusinski nor Astrodienst knew about the -works of Pisa and Goelzer. Goelzer heard of his co-discoverers only in 2012 and -then contacted Astrodienst.

- -

 

- -

Conclusion: It seems that the house system was -first “discovered” and published by  -Goelzer, but that Pisa and Krusinski also “discovered” it independently. -We do not consider this a great miracle because the number of possible house -constructions is quite limited.

- -

 

- -

6.2. -Vertex, Antivertex, East Point and Equatorial Ascendant, etc.

- -

The Vertex is the point -of the ecliptic that is located precisely in western direction. The Antivertex -is the opposition point and indicates the precise east in the horoscope. It is -identical to the first house cusp in the horizon house system.

- -

There is a lot of confusion -about this, because there is also another point which is called the "East -Point" but is usually not located in the east. In celestial -geometry, the expression "East Point" means the point on the horizon -which is in precise eastern direction. The equator goes through this point as -well, at a right ascension which is equal to ARMC + 90 degrees. On the other -hand, what some astrologers call the "East Point" is the point on the -ecliptic whose right ascension is equal to ARMC + 90 (i.e. the right ascension -of the horizontal East Point). This point can deviate from eastern direction by -23.45 degrees, the amount of the ecliptic obliquity. For this reason, the -term  "East Point" is not very -well-chosen for this ecliptic point, and some astrologers (M. Munkasey) prefer -to call it the Equatorial Ascendant. This, because it is identical to -the Ascendant at a geographical latitude 0.

- -

The Equatorial Ascendant is -identical to the first house cusp of the axial rotation system.

- -

Note: If a projection of the -horizontal East Point on the ecliptic is wanted, it might seem more reasonable -to use a projection rectangular to the ecliptic, not rectangular to the equator -as is done by the users of the "East Point". The planets, as well, -are not projected on the ecliptic in a right angle to the ecliptic.

- -

The Swiss Ephemeris supports -three more points connected with the house and angle calculation. They are part -of Michael Munkasey's system of the 8 Personal Sensitive Points (PSP). -The PSP include the Ascendant, the MC, the Vertex, the Equatorial -Ascendant, the Aries Point, the Lunar Node, -and the "Co-Ascendant" and the "Polar Ascendant".

- -

The term -"Co-Ascendant" seems to have been invented twice by two different -people, and it can mean two different things. The one "Co-Ascendant" -was invented by Walter Koch (?). To calculate it, one has to take the ARIC as -an ARMC and compute the corresponding Ascendant for the birth place. The -"Co-Ascendant" is then the opposition to this point.

- -

The second -"Co-Ascendant" stems from Michael Munkasey. It is the Ascendant -computed for the natal ARMC and a latitude which has the value 90° - -birth_latitude.

- -

The "Polar -Ascendant" finally was introduced by Michael Munkasey. It is the -opposition point of Walter Koch's version of the "Co-Ascendant". -However, the "Polar Ascendant" is not the same as an Ascendant -computed for the birth time and one of the geographic poles of the earth. At -the geographic poles, the Ascendant is always 0 Aries or 0 Libra. This is not -the case for Munkasey's "Polar Ascendant".

- -

 

- -

6.3.      House cusps beyond the polar circle

- -

Beyond the polar circle, we proceed as follows:

- -

1)    We make sure that -the ascendant is always in the eastern hemisphere.

- -

2)    Placidus and Koch house -cusps sometimes can, sometimes cannot be computed beyond the polar circles. -Even the MC doesn't exist always, if one defines it in the Placidus manner. Our -function therefore automatically switches to Porphyry houses (each quadrant is -divided into three equal parts) and returns a warning.

- -

3)    Beyond the polar -circles, the MC is sometimes below the horizon. The geometrical definition of -the Campanus and Regiomontanus systems requires in such cases -that the MC and the IC are swapped. The whole house system is then oriented in -clockwise direction.

- -

There are similar problems with the Vertex and the horizon -house system for birth places in the tropics. The Vertex is defined -as the point on the ecliptic that is located in precise western direction. The -ecliptic east point is the opposition point and is called the Antivertex. -Our program code makes sure that the Vertex (and the cusps 11, 12, 1, 2, 3 of the -horizon house system) is always located in the western hemisphere. Note that -for birthplaces on the equator the Vertex is always 0 Aries or 0 Libra.

- -

Of course, there are no problems in the calculation of the Equatorial -Ascendant for any place on earth.

- -

6.3.1.            Implementation in other calculation -modules:

- -

a) PLACALC

- -

Placalc is the predecessor of Swiss Ephemeris; it is a calculation -module created by Astrodienst in 1988 and distributed as C source code. Beyond -the polar circles, Placalc‘s house calculation did switch to Porphyry houses -for all unequal house systems. Swiss Ephemeris still does so with the Placidus -and Koch method, which are not defined in such cases. However, the computation -of the MC and Ascendant was replaced by a different model in some cases: Swiss -Ephemeris gives priority to the Ascendant, choosing it always as the -eastern rising point of the ecliptic and accepting an MC below the horizon, -whereas Placalc gave priority to the MC. The MC was always chosen as the -intersection of the meridian with the ecliptic above the horizon. To -keep the quadrants in the correct order, i.e. have an Ascendant in the left -side of the chart, the Ascendant was switched by 180 degrees if necessary.

- -

In the discussions between Alois Treindl and Dieter Koch during the -development of the Swiss Ephemeris it was recognized that this model is more -unnatural than the new model implemented in Swiss Ephemeris.

- -

Placalc also made no difference between Placidus/Koch on one hand and -Regiomontanus/Campanus on the other as Swiss Ephemeris does. In Swiss -Ephemeris, the geometrical definition of Regiomontanus/Campanus is strictly -followed, even for the price of getting the houses in ”wrong” order. (see -above, chapter 4.1.)

- -

b) ASTROLOG program as written by Walter Pullen

- -

While the freeware program Astrolog contains the planetary routines of -Placalc, it uses its own house calculation module by Walter Pullen. Various -releases of Astrolog contain different approaches to this problem.

- -

c) ASTROLOG on our website

- -

ASTROLOG is also used on Astrodienst’s website for displaying free -charts. This version of Astrolog used on our website however is different from -the Astrolog program as distributed on the Internet. Our webserver version of -Astrolog contains calls to Swiss Ephemeris for planetary positions. For -Ascendant, MC and houses it still uses Walter Pullen's code. This will change -in due time because we intend to replace ASTROLOG on the website with our own -charting software.

- -

d) other astrology programs

- -

Because most astrology programs still use the Placalc module, they -follow the Placalc method for houses inside the polar circles. They give -priority to keep the MC above the horizon and switch the Ascendant by 180 -degrees if necessary to keep the quadrants in order.

- -

6.4.         House position of a planet

- -

The Swiss Ephemeris DLL also provides a function to compute the house -position of a given body, i.e. in which house it is. This function can be used -either to determine the house number of a planet or to compute its position in -a house horoscope. (A house horoscope is a chart in which all -houses are stretched or shortened to a size of 30 degrees. For unequal house -systems, the zodiac is distorted so that one sign of the zodiac does not -measure 30 house degrees)

- -

Note that the actual house position of a planet is not always the one -that it seems to be in an ordinary chart drawing. Because the planets are not -always exactly located on the ecliptic but have a latitude, they can seemingly -be located in the first house, but are actually visible above the horizon. In -such a case, our program function will place the body in the 12th (or 11 th or -10 th) house, whatever celestial geometry requires. However, it is possible to -get a house position in the ”traditional” way, if one sets the ecliptic -latitude to zero.

- -

Although it is not possible to compute Placidus house cusps -beyond the polar circle, this function will also provide Placidus house -positions for polar regions. The situation is as follows:

- -

The Placidus method works with the semidiurnal and seminocturnal arcs of -the planets. Because in higher geographic latitudes some celestial bodies (the -ones within the circumpolar circle) never rise or set, such arcs do not exist. -To avoid this problem it has been proposed in such cases to start the diurnal -motion of a circumpolar body at its ”midnight” culmination and its nocturnal -motion at its midday culmination. This procedure seems to have been proposed by -Otto Ludwig in 1930. It allows to define a planet's house position even if it -is within the circumpolar region, and even if you are born in the northernmost -settlement of Greenland. However, this does not mean that it be possible to -compute ecliptical house cusps for such locations. If one tried that, it would -turn out that e.g. an 11 th house cusp did not exist, but there were two 12th -house cusps.

- -

Note however, that circumpolar bodies may jump from the 7th house -directly into the 12th one or from the 1st one directly into the 6th one.

- -

The Koch method, on the other hand, cannot be helped even with -this method. For some bodies it may work even beyond the polar circle, but for -some it may fail even for latitudes beyond 60 degrees. With fixed stars, it may -even fail in central Europe or USA. (Dieter Koch regrets the connection of his -name with such a badly defined house system)

- -

Note that Koch planets do strange jumps when the cross the meridian. -This is not a computation error but an effect of the awkward definition of this -house system. A planet can be east of the meridian but be located in the

- -

9th house, or west of the meridian and in the 10th house. It is possible -to avoid this problem or to make Koch house positions agree better with the -Huber ”hand calculation” method, if one sets the ecliptic latitude of the -planets to zero. But this is not more correct from a geometrical point of view.

- -

6.5.         Gauquelin sector position of a planet

- -

The calculation of the -Gauquelin sector position of a planet is based on the same idea as the Placidus -house system, i.e. diurnal and nocturnal arcs of ecliptic points or planets are -subdivided.

- -

Three different algorithms -have been used by Gauquelin and others to determine the sector position of a -planet.

- -

1.        -We can take the ecliptic point of the planet (ecliptical latitude -ignored) and calculate the fraction of its diurnal or nocturnal arc it has -completed

- -

2.        -We can take the true planetary position (taking into account ecliptical -latitude) for the same calculation.

- -

3.        -We can use the exact times for rise and set of the planet to determine -the ratio between the time the planet has already spent above (or below) the -horizon and its diurnal (or nocturnal) arc. Times of rise and set are defined -by the appearance or disappearance of the center of the planet’s disks.

- -

All three methods are -supported by the Swiss Ephemeris.

- -

Methods 1 and 2 also work for -polar regions. The Placidus algorithm is used, and the Otto Ludwig method -applied with circumpolar bodies. I.e. if a planet does not have a rise and set, -the “midnight” and “midday” culminations are used to define its semidiurnal and -seminocturnal arcs.

- -

With method 3, we don’t try to -do similar. Because planets do not culminate exactly in the north or south, a -planet can actually rise on the western part of the horizon in high geographic -latitudes. Therefore, it does not seem appropriate to use meridian transits as -culmination times. On the other hand, true culmination times are not always -available. E.g. close to the geographic poles, the sun culminates only twice a -year.

- -

7.               DT (Delta T)

- -

The computation of planets uses the so called Ephemeris Time (ET) -which is a completely regular time measure. Computations of sidereal time and -houses, on the other hand, depend on the rotation of the earth, which is not -regular at all. The time used for such purposes is called Universal Time (UT) -or Terrestrial Dynamic Time (TDT). It is an irregular time measure, and -is roughly identical to the time indicated by our clocks (if time zones are -neglected). The difference between ET and UT is called DT (”Delta T”), and -is defined as DT = ET – UT.

- -

The earth's rotation decreases slowly, currently at the rate of about -0.5 – 1 second per year. Even worse, this decrease is irregular itself. It -cannot precisely predicted but only derived from star observations. The values -of DT achieved like this must be tabulated. However, this -table, which is published yearly by the Astronomical Almanac, starts only at -1620, about the time when the telescope was invented. For more remote -centuries, DT must be estimated from old eclipse records. The -uncertainty is in the range of hours for the year 3000 B.C. For future times, DT is estimated from -the current and the general changing rate, depending on whether a short-term or -a long-term extrapolation is intended.

- -

NOTE:The DT algorithms have been -improved with the Swiss Ephemeris release 1.64 (Stephenson 1997), with release -1.72 (Morrison/Stephenson 2004) and 1.77 (Espenak & Meeus). These changes -result in significant changes of the ephemeris for remote historical dates, if -Universal Time is used.

- -

The Swiss Ephemeris computes DT as follows.

- -

1633 - today + a -couple of years:

- -

The tabulated values of DT, in hundredths of a second, -were taken from the Astronomical Almanac page K8 and K9 and are yearly updated. -

- -

The DT function adjusts for a value of secular tidal -acceleration ndot = -25.826 arcsec per century squared, the value contained in -JPL's lunar ephemeris LE405/6. ELP2000 (and DE200) used the value -23.8946.

- -

To change ndot, one can either redefine SE_TIDAL_DEFAULT in swephexp.h -or use the routine swe_set_tid_acc() before calling the Swiss Ephemeris.

- -

Bessel's interpolation formula was implemented to obtain fourth order -interpolated values at intermediate times.

- -

-before 1633:

- -

For dates before 1600, the polynomials published by Espenak and Meeus -(2006) are used, with linear interpolation. They are based on an assumed value -of ndot = -26. The program adjusts for ndot = -25.826. These formulae include -the long-term formula by Morrison/Stephenson (2004, p. 332), which is used for -epochs before -500.

- -

future:

- -

For the time after the last tabulated value, we use the formula of -Stephenson (1997; p. 507), with a modification that avoids a jump at the end of -the tabulated period. A linear term is added that makes a slow transition from -the table to the formula over a period of 100 years. (Need not be updated, when -table will be enlarged.)

- -

Differences between -the old and new algorithms (before and after release 1.77):

- -

    year           -difference in seconds (new - old)

- -

  -3000                 3

- -

  -2000              -   2

- -

  -1100              -   1

- -

  -1001              -29

- -

    -900              --45

- -

    -800              --57

- -

    -700              -     -696  (is a maximum!)

- -

    -500              --14

- -

until -200         3 -> diff > -25

- -

until 100           3 -> diff > -15

- -

until 500           3 -> diff > -3

- -

until 1600         4 -> diff > -16

- -

until 1630         1 -> diff > -30

- -

until 1700         0.1 -|diff|

- -

until 1900                               0.01

- -

until 2100                             0.001

- -

 

- -

The differences for –1000 to + 1630 are explained as -follows:

- -

Espenak & Meeus ignore Morrison & Stephenson's -values for -700 and -600, whereas the former Swiss Ephemeris versions used -them. For -500 to +1600 Espenak & Meeus use polynomials whereas the former -Swiss Ephemeris versions used a linear interpolation between Morrison / -Stephenson's tabulated values.

- -

 

- -

Differences between -the old and new algorithms (before and after release 1.72):

- -

    year           -difference in seconds (new - old)

- -

  -3000                   -4127

- -

  -2000              -     -2130

- -

  -1000              -     -760

- -

         0              -20

- -

   1000              -30

- -

   1600               10

- -

   1619              0.5

- -

   1620                 0

- -

 

- -

Differences between -the old and new algorithms (before and after release 1.64):

- -

    year           -difference in seconds (new - old)

- -

  -3000           2900

- -

         0           1200

- -

   1600               29

- -

   1619               60

- -

   1620               -0.6

- -

   1700               -0.4

- -

   1800               -0.1

- -

   1900               -0.02

- -

   1940               -0.001

- -

   1950                0

- -

   2000                0

- -

   2020                2

- -

   2100              23

- -

   3000           -400

- -

In 1620, where the DT table of the Astronomical -Almanac starts, there was a jump of a whole minute in the old algorithms. The -new algorithms has no jumps anymore.

- -

The smaller differences for the period 1620-1955, where we still use the -same data as before, is due to a correction in the tidal acceleration of the -moon, which now has the same value as is also used by JPL for their DT calculations.

- -

References:

- -

 

- -

- Borkowski, K. M., "ELP2000-85 and the Dynamical Time - Universal -Time relation," Astronomy and -Astrophysics 205, L8-L10 (1988)

- -

- Chapront-Touze, Michelle, and Jean Chapront, Lunar Tables and Programs from 4000 B.C. to A.D. 8000, Willmann-Bell -1991

- -

- Espenak, Fred, and Jean Meeus, “Five-millennium Catalog of Lunar -Eclipses –1900 to +3000”, 2009, p. 18ff., http://eclipse.gsfc.nasa.gov/5MCSE/TP2009-214174.pdf.

- -

- Explanatory Supplement of the -Astronomical Almanach, University Science Books, 1992, Mill Valley, CA, p. -265ff.

- -

- Morrison, L. V. and F. R. Stephenson, Sun and Planetary System, vol 96,73 eds. W. Fricke, G. Teleki, Reidel, -Dordrecht (1982)

- -

- Morrison, L. V., and F.R. Stephenson, “Historical -Values of the Earth’s Clock Error DT -and the Calculation of Eclipses”, JHA xxxv (2004), pp.327-336

- -

- Stephenson, F. R., and L. V. Morrison, -"Long-term changes in the rotation of the Earth: 700 BC to AD 1980", Philosophical Transactions of the Royal Society of London, -Series A 313, 47-70 (1984)

- -

- Stephenson, F. R., and M. A. Houlden, Atlas of Historical Eclipse Maps, Cambridge U. Press (1986)

- -

- Stephenson, F.R. & Morrison, L.V., "Long-Term Fluctuations in -the Earth's Rotation: 700 BC to AD 1990", in: Philosophical Transactions of the Royal Society of London, Ser. A, -351 (1995), 165-202.

- -

- Stephenson, F. Richard, Historical -Eclipses and Earth's Rotation, Cambridge U. Press (1997)

- -

- For a comprehensive collection of -publications and formulae, see R.H. van Gent at -http://www.phys.uu.nl/~vgent/astro/deltatime.htm.

- -

 

- -

8.        Programming Environment

- -

Swiss Ephemeris is written in portable C and the same code is used for -creation of the 32-bit Windows DLL and the link library. All data files are -fully portable between different hardware architectures.

- -

To build the DLLs, we use Microsoft Visual C++ version 5.0 (for 32-bit).

- -

The DLL has been successfully used in the following programming -environments:

- -

Visual C++ 5.0                 (sample -code included in the distribution)

- -

Visual Basic 5.0  (sample code -and VB declaration file included)

- -

Delphi 2 and Delphi 3 (32-bit, declaration file included)

- -

As the number of  users grows, -our knowledge base about the interface details between programming environments -and the DLL grows. All such information is added to the distributed Swiss -Ephemeris and registered users are informed via an email mailing list.

- -

Earlier version up to version 1.61 supported 16-bit Windows programming. -Since then, 16-bit support has been dropped.

- -

9.         Swiss Ephemeris Functions

- -

9.1         Swiss Ephemeris API

- -

We give a short overview of the most important functions contained in -the Swiss Ephemeris DLL. The detailed description of the programming interface -is contained in the document swephprg.doc which is -distributed together with the file you are reading.

- -

Calculation -of planets and stars

- -

/* planets, moon, asteroids, lunar -nodes, apogees, fictitious bodies */

- -

swe_calc();

- -

 

- -

/* fixed stars */

- -

swe_fixstar();   

- -

Date and -time conversion

- -

/* delta t from Julian day number

- -

 * Ephemeris time (ET) = Universal time (UT) + swe_deltat(UT)*/

- -

swe_deltat();

- -

 

- -

/* Julian day number from year, month, -day, hour, */

- -

swe_date_conversion ();           

- -

/* Julian day number from year, month, -day, hour */

- -

swe_julday();          

- -

 

- -

/* year, month, day, hour from Julian -day number */

- -

swe_revjul ();

- -

 

- -

/* UTC to Julian day number */

- -

swe_utc_to_jd ();

- -

 

- -

/* Julian day number TT to UTC */

- -

swe_jdet_to_utc ();

- -

 

- -

/* Julian day number UT1 to UTC */

- -

swe_jdut1_to_utc ();

- -

 

- -

/* utc to time zone or time zone to -utc*/

- -

swe_utc_time_zone ();

- -

 

- -

/* get tidal acceleration used in -swe_deltat() */

- -

swe_get_tid_acc();

- -

 

- -

/* set tidal acceleration to be used in -swe_deltat() */

- -

swe_set_tid_acc();

- -

Initialization, -setup, and closing functions

- -

/* set directory path of ephemeris files -*/

- -

swe_set_ephe_path();

- -

 

- -

/* set name of JPL ephemeris file */

- -

swe_set_jpl_file();

- -

 

- -

/* close Swiss Ephemeris */

- -

swe_close();

- -

House -calculation

- -

/* sidereal time */

- -

swe_sidtime();   

- -

/* house cusps, ascendant, MC, armc, -vertex */

- -

swe_houses();    

- -

      Auxiliary functions

- -

/* coordinate transformation, from -ecliptic to equator or vice-versa. */

- -

swe_cotrans();   

- -

/* coordinate transformation of position -and speed,

- -

 * from ecliptic to equator or vice-versa*/

- -

swe_cotrans_sp();

- -

/* get the name of a planet */

- -

swe_get_planet_name(); 

- -

/* normalization of any degree number to -the range 0 ... 360 */

- -

swe_degnorm();

- -

Other -functions that may be useful

- -

PLACALC, the predecessor of SWISSEPH, included several functions that we -do not need for SWISSEPH anymore. Nevertheless we include them again in our -DLL, because some users of our software may have taken them over and use them -in their applications. However, we gave them new names that were more -consistent with SWISSEPH.

- -

PLACALC used angular measurements in centiseconds a lot; a centisecond -is 1/100 of an arc second. The C type CSEC or centisec is a 32-bit integer. CSEC -was used because calculation with integer variables was considerably faster -than floating point calculation on most CPUs in 1988, when PLACALC was written.

- -

In the Swiss Ephemeris we have dropped the use of centiseconds and use -double (64-bit floating point) for all angular measurements.

- -

/* -normalize argument into interval [0..DEG360]

- -

 * former function name: csnorm() */

- -

swe_csnorm();

- -

 

- -

/* -distance in centisecs p1 - p2 normalized to [0..360[

- -

 * former function name: difcsn() */

- -

swe_difcsn -();

- -

 

- -

/* -distance in degrees  * former function -name: difdegn() */

- -

swe_difdegn -();

- -

 

- -

/* -distance in centisecs p1 - p2 normalized to [-180..180[

- -

 * former function name: difcs2n() */

- -

swe_difcs2n();

- -

 

- -

/* -distance in degrees

- -

 * former function name: difdeg2n() */

- -

swe_difdeg2n();

- -

 

- -

/* round -second, but at 29.5959 always down

- -

 * former function name: roundsec() */

- -

swe_csroundsec();

- -

 

- -

/* -double to long with rounding, no overflow check

- -

 * former function name: d2l() */

- -

swe_d2l();

- -

 

- -

/* -Monday = 0, ... Sunday = 6

- -

 * former function name: day_of_week() */

- -

swe_day_of_week();

- -

 

- -

/* -centiseconds -> time string

- -

 * former function name: TimeString() */

- -

swe_cs2timestr();

- -

 

- -

/* -centiseconds -> longitude or latitude string 

- -

 * former function name: LonLatString() */

- -

swe_cs2lonlatstr();

- -

 

- -

/* centiseconds --> degrees string

- -

 * former function name: DegreeString() */

- -

swe_cs2degstr();

- -

 

- -

9.2         Placalc API

- -

Placalc is a planetary calculation module which was made available by -Astrodienst since 1988 to other programmers under a source code license. Placalc -is less well designed, less complete and not as precise as the Swiss Ephemeris -module. However, many developers of astrological software have used it over -many years and like it. Astrodienst has used it internally since 1989 for a -large set of application programs.

- -

To simplify the introduction of Swiss Ephemeris in 1997 in Astrodienst's -internal operation, we wrote an interface module which translates all calls to -Placalc functions into Swiss Ephemeris functions, and translates the results -back into the format expected in the Placalc Application Interface (API).

- -

This interface (swepcalc.c and swepcalc.h) is part of the source code distribution of Swiss Ephemeris; it is not -contained in the DLL. All new software should be written directly for the -SwissEph API, but porting old Placalc software is convenient and very simple -with the Placalc API.

- -

Appendix

- -

A. The -gravity deflection for a planet passing behind the Sun

- -

The calculation of the apparent position of a planet involves a -relativistic effect, which is the curvature of space by the gravity field of -the Sun. This can also be described by a semi-classical algorithm, where the -photon travelling from the planet to the observer is deflected in the Newtonian -gravity field of the Sun, where the photon has a non-zero mass arising from its -energy. To get the correct relativistic result, a correction factor 2.0 must be -included in the calculation.

- -

A problem arises when a planet disappears behind the solar disk, as seen -from the Earth. Over the whole 6000 year time span of the Swiss Ephemeris, it -happens often.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Planet

-
-

number of passes behind the Sun

-
-

Mercury

-
-

1723

-
-

Venus

-
-

456

-
-

Mars

-
-

412

-
-

Jupiter

-
-

793

-
-

Saturn

-
-

428

-
-

Uranus

-
-

1376

-
-

Neptune

-
-

543

-
-

Pluto

-
-

57

-
- -

 

- -

A typical occultation of a planet by the Solar disk, which has a diameter -of approx. _ degree, has a duration of about 12 hours. For the outer planets it -is mostly the speed of the Earth's movement which determines this duration.

- -

Strictly speaking, there is no apparent position of a planet when -it is eclipsed by the Sun. No photon from the planet reaches the observer's eye -on Earth. Should one drop gravitational deflection, but keep aberration and -light-time correction, or should one switch completely from apparent positions -to true positions for occulted planets? In both cases, one would come up with -an ephemeris which contains discontinuities, when at the moment of occultation -at the Solar limb suddenly an effect is switched off.

- -

Discontinuities in the ephemeris need to be avoided for several reasons. -On the level of physics, there cannot be a discontinuity. The planet cannot -jump from one position to another. On the level of mathematics, a non-steady -function is a nightmare for computing any derived phenomena from this function, -e.g. the time and duration of an astrological transit over a natal body, -or  an aspect of the planet.

- -

Nobody seems to have handled this problem before in astronomical -literature. To solve this problem, we have used the following approach: We -replace the Sun, which is totally opaque for electromagnetic waves and not -transparent for the photons coming from a planet behind it, by a transparent -gravity field. This gravity field has the same strength and spatial -distribution as the gravity field of the Sun. For photons from occulted -planets, we compute their path and deflection in this gravity field, and from -this calculation we get reasonable apparent positions also for occulted -planets.

- -

The calculation has been carried out with a semi-classical Newtonian -model, which can be expected to give the correct relativistic result when it is -multiplied with a correction factor 2. The mass of the Sun is mostly -concentrated near its center; the outer regions of the Solar sphere have a low -mass density. We used the a mass density distribution from the Solar standard model, -assuming it to have spherical symmetry (our Sun mass distribution m® is from -Michael Stix, The Sun, p. 47). The path of photons through this gravity field -was computed by numerical integration. The application of this model in the -actual ephemeris could then be greatly simplified by deriving an effective -Solar mass which a photon ”sees” when it passes close by or ”through” the Sun. -This effective mass depends only from the closest distance to the Solar center -which a photon reaches when it travels from the occulted planet to the -observer. The dependence of the effective mass from the occulted planet's -distance is so small that it can be neglected for our target precision of 0.001 -arc seconds.

- -

For a remote planet just at the edge of the Solar disk the gravity -deflection is about 1.8”, always pointing away from the center of the Sun. This -means that the planet is already slightly behind the Solar disk (with a -diameter of 1800”) when it appears to be at the limb, because the light bends -around the Sun. When the planet now passes on a central path behind the Solar -disk, the virtual gravity deflection we compute increases to 2.57 times the -deflection at the limb, and this maximum is reached at _ of the Solar radius. -Closer to the Solar center, the deflection drops and reaches zero for photons -passing centrally through the Sun's gravity field.

- -

We have discussed our approach with Dr. Myles Standish from JPL and here -is his comment (private email to Alois Treindl, 12-Sep-1997):

- -

.. it -seems that your approach is

- -

entirely -reasonable and can be easily justified as long

- -

as you -choose a reasonable model for the density of

- -

the -sun.  The solution may become more -difficult if an

- -

ellipsoidal -sun is considered,  but certainly that -is

- -

an -additional refinement which can not be crucial.

- -

 

- -

B. The -list of asteroids

- -

 

- -

# -====================================

- -

# At -the same time a brief introduction into asteroids

- -

# -====================================================

- -

#

- -

# As -of the year 2010, there is no longer any CDROM. All

- -

# -parts of Swiss Ephemeris can be downloaded in the download area.

- -

#

- -

# -Literature:

- -

# -Lutz D. Schmadel, Dictionary of Minor Planet Names,

- -

#   Springer, Berlin, Heidelberg, New York

- -

# -Charles T. Kowal, Asteroids. Their Nature and Utilization,

- -

#   Whiley & Sons, 1996, Chichester, -England

- -

#

- -

#

- -

# -What is an asteroid?

- -

# ---------------------

- -

#

- -

# -Asteroids are small planets. Because there are too many

- -

# of -them and because most of them are quite small,

- -

# -astronomers did not like to call them "planets", but

- -

# -invented names like "asteroid" (Greek "star-like",

- -

# -because through telescopes they did not appear as planetary

- -

# -discs but as star like points) or "planetoid" (Greek

- -

# -"something like a planet"). However they are also often

- -

# -called minor planets.

- -

# The -minor planets can roughly be divided into two groups.

- -

# -There are the inner asteroids, the majority of which

- -

# -circles in the space between Mars and Jupiter, and

- -

# -there are the outer asteroids, which have their realm

- -

# -beyond Neptune. The first group consists of rather

- -

# -dense, earth-like material, whereas the Transneptunians

- -

# -mainly consist of water ice and frozen gases. Many comets

- -

# are -descendants of the "asteroids" (or should one say

- -

# -"comets"?) belt beyond Neptune. The first Transneptunian

- -

# -objects (except Pluto) were discovered only after 1992

- -

# and -none of them has been given a name as yet.

- -

#

- -

#

- -

# The -largest asteroids

- -

# ----------------------

- -

# -Most asteroids are actually only debris of collisions

- -

# of -small planets that formed in the beginning of the

- -

# -solar system. Only the largest ones are still more

- -

# or -less complete and round planets.

- -

 

- -

1    Ceres        # 913 km  goddess of -corn and harvest

- -

2    Pallas       # 523 km  goddess of -wisdom, war and liberal arts

- -

4    Vesta        # 501 km  goddess of -the hearth fire

- -

10   Hygiea       # 429 km  goddess of -health

- -

511  Davida       -# 324 km  after an astronomer -David P. Todd

- -

704  Interamnia   -# 338 km  "between -rivers", ancient name of

- -

                  #         its discovery place Teramo

- -

65   Cybele       # 308 km  Phrygian -Goddess, = Rhea, wife of Kronos-Saturn

- -

52   Europa       # 292 km  beautiful -mortal woman, mother of Minos by Zeus

- -

87   Sylvia       # 282 km 

- -

451  Patientia    -# 280 km  patience

- -

31   Euphrosyne   # 270 km  one of the -three Graces, benevolence

- -

15   Eunomia      # 260 km  one of the -Hours, order and law

- -

324  Bamberga     -# 252 km  after a city in Bavaria

- -

3    Juno         # 248 km  wife of -Zeus

- -

16   Psyche       # 248 km  -"soul", name of a nymph

- -

 

- -

 

- -

# -Asteroid families

- -

# ------------------

- -

# -Most asteroids live in families. There are several kinds

- -

# of -families.

- -

# - -There are families that are separated from each other

- -

#   by orbital resonances with Jupiter or other -major planets.

- -

# - -Other families, the so-called Hirayama families, are the

- -

#   relics of asteroids that broke apart long -ago when they

- -

#   collided with other asteroids.

- -

# - -Third, there are the Trojan asteroids that are caught

- -

#   in regions 60 degrees ahead or behind a -major planet

- -

#   (Jupiter or Mars) by the combined -gravitational forces

- -

#   of this planet and the Sun.

- -

 

- -

# -Near Earth groups:

- -

# -------------------

- -

#

- -

# -Aten family: they cross Earth; mean distance from Sun is less than Earth

- -

 

- -

2062 -Aten         # an Egyptian Sun god

- -

2100 -Ra-Shalom    # Ra is an Egyptian Sun -god, Shalom is Hebrew "peace"

- -

                  # was discovered during Camp -David mid-east peace conference

- -

 

- -

# -Apollo family: they cross Earth; mean distance is greater than Earth

- -

 

- -

1862 -Apollo       # Greek Sun god

- -

1566 -Icarus       # wanted to fly to the sky, -fell into the ocean

- -

                  # Icarus crosses Mercury, -Venus, Earth, and Mars

- -

                  # and has his perihelion -very close to the Sun

- -

3200 -Phaethon     # wanted to drive the solar -chariot, crashed in flames

- -

                  # Phaethon crosses Mercury, Venus, Earth, and Mars

- -

                  # and has his perihelion -very close to the Sun

- -

 

- -

# -Amor family: they cross Mars, approach Earth

- -

 

- -

1221 -Amor         # Roman love god

- -

433  Eros         -# Greek love god

- -

 

- -

# Mars -Trojans:

- -

# --------------

- -

 

- -

5261 -Eureka       a mars Trojan

- -

 

- -

# -Main belt families:

- -

# --------------------

- -

 

- -

# -Hungarias: asteroid group at 1.95 AU

- -

 

- -

434  Hungaria     -# after Hungary

- -

 

- -

# -Floras: Hirayama family at 2.2 AU

- -

 

- -

8    Flora        # goddess of flowers

- -

 

- -

# -Phocaeas: asteroid group at 2.36 AU

- -

 

- -

25   Phocaea      # maritime town in Ionia

- -

 

- -

# -Koronis family: Hirayama family at 2.88 AU

- -

 

- -

158  Koronis      -# mother of Asklepios by Apollo

- -

 

- -

# Eos -family: Hirayama family at 3.02 AU

- -

 

- -

221  Eos          -# goddess of dawn

- -

 

- -

# Themis -family: Hirayama family at 3.13 AU

- -

 

- -

24   Themis       # goddess of justice

- -

 

- -

# -Hildas: asteroid belt at 4.0 AU, in 3:2 resonance with Jupiter

- -

# ---------------------------------------------------------------

- -

# The -Hildas have fairly eccentric orbits and, at their

- -

# -aphelion, are very close to the orbit of Jupiter. However,

- -

# at -those times, Jupiter is ALWAYS somewhere else. As

- -

# -Jupiter approaches, the Hilda asteroids move towards

- -

# -their perihelion points.

- -

 

- -

153  Hilda        -# female first name, means "heroine"

- -

 

- -

# a -single asteroid at 4.26 AU, in 4:3 resonance with Jupiter

- -

279  Thule        -# mythical center of Magic in the uttermost north

- -

 

- -

# -Jupiter Trojans:

- -

# -----------------

- -

# -Only the Trojans behind Jupiter are actually named after Trojan heroes,

- -

# whereas -the "Trojans" ahead of Jupiter are named after Greek heroes that

- -

# -participated in the Trojan war. However there have been made some mistakes,

- -

# -i.e. there are some Trojan "spies" in the Greek army and some Greek -"spies"

- -

# in -the Trojan army.

- -

 

- -

# Greeks -ahead of Jupiter:

- -

624  Hector       -# Trojan "spy" in the Greek army, by far the greatest

- -

                  # Trojan hero and the -greatest Trojan asteroid

- -

588  Achilles     -# slayer of Hector

- -

1143 -Odysseus

- -

 

- -

# -Trojans behind Jupiter:

- -

1172 -Äneas

- -

3317 -Paris

- -

884  Priamus

- -

 

- -

# -Jupiter-crossing asteroids:

- -

# ----------------------------

- -

 

- -

3552 -Don Quixote  # perihelion near Mars, -aphelion beyond Jupiter;

- -

                  # you know Don Quixote, -don't you?

- -

944  Hidalgo      -# perihelion near Mars, aphelion near Saturn;

- -

                  # after a Mexican national -hero

- -

5335 -Damocles     # perihelion near Mars, -aphelion near Uranus;

- -

                  # the man sitting below a -sword suspended by a thread

- -

 

- -

# -Centaurs:

- -

# ----------

- -

 

- -

2060 -Chiron       # perihelion near Saturn, -aphelion near Uranus

- -

                  # educator of heros, -specialist in healing and war arts

- -

5145 -Pholus       # perihelion near Saturn, -aphelion near Neptune

- -

                  # seer of the gods, keeper -of the wine of the Centaurs

- -

7066 -Nessus       # perihelion near Saturn, aphelion in Pluto's mean distance

- -

                  # ferryman, killed by -Hercules, kills Hercules

- -

 

- -

# -Plutinos:

- -

# ----------

- -

# -These are objects with periods similar to Pluto, i.e. objects

- -

# -that resonate with the Neptune period in a 3:2 ratio.

- -

# -There are no Plutinos included in Swiss Ephemeris so far, but

- -

# -PLUTO himself is considered to be a Plutino type asteroid!

- -

 

- -

# -Cubewanos:

- -

# -----------

- -

# -These are non-Plutiono objects with periods greater than Pluto.

- -

# The -word "Cubewano" is derived from the preliminary designation

- -

# of -the first-discovered Cubewano: 1992 QB1

- -

 

- -

20001 -1992 QB1    # will be given the name of -a creation deity

- -

                  # (fictitious catalogue number -20001!)

- -

 

- -

# -other Transplutonians:

- -

 

- -

20001 -1996 TL66   # mean solar distance 85 AU, -period 780 years

- -

 

- -

# -Asteroids that challenge hypothetical planets astrology

- -

# --------------------------------------------------------

- -

 

- -

42   Isis         # not identical with "Isis-Transpluto"

- -

                  # Egyptian lunar goddess

- -

763  Cupido       -# different from Witte's Cupido

- -

                  # Roman god of sexual desire

- -

4341 -Poseidon     # not identical with -Witte's Poseidon

- -

                  # Greek name of Neptune

- -

4464 -Vulcano      # compare Witte's Vulkanus

- -

                  # and intramercurian hypothetical Vulcanus

- -

                  # Roman fire god

- -

5731 -Zeus         # different from Witte's -Zeus

- -

                  # Greek name of Jupiter

- -

1862 -Apollo       # different from Witte's -Apollon

- -

                  # Greek god of the Sun

- -

398  Admete       -# compare Witte's Admetos

- -

                  # "the untamed -one", daughter of Eurystheus

- -

 

- -

# -Asteroids that challenge Dark Moon astrology

- -

# ---------------------------------------------

- -

 

- -

1181 -Lilith       # not identical with Dark -Moon 'Lilith'

- -

                  # first evil wife of Adam

- -

3753 -Cruithne     # often called the -"second moon" of earth;

- -

                  # actually not a moon, but -an asteroid that

- -

                  # orbits around the sun in a -certain resonance

- -

                  # with the earth.

- -

                  # After the first Celtic -group to come to the British Isles.

- -

 

- -

# -Also try the two points 60 degrees in front of and behind the

- -

# -Moon, the so called Lagrange points, where the combined

- -

# -gravitational forces of the earth and the moon might imprison

- -

# -rocks and stones. There have been some photographic hints

- -

# -that there are clouds of such material around these points.

- -

# -They are called the Kordylewski clouds.

- -

 

- -

 

- -

# -other asteroids

- -

# ----------------

- -

 

- -

5    Astraea      # a goddess of justice

- -

6    Hebe         # goddess of youth

- -

7    Iris         # rainbow goddess, messenger of the gods

- -

8    Flora        # goddess of flowers and gardens

- -

9    Metis        # goddess of prudence

- -

10   Hygiea       # goddess of health

- -

14   Irene        # goddess of peace

- -

16   Psyche       # "soul", a nymph

- -

19   Fortuna      # goddess of fortune

- -

 

- -

# -Some frequent names:

- -

# ---------------------

- -

# -There are thousands of female first names in the asteroids list.

- -

# -Very interesting for relationship charts!

- -

 

- -

78   Diana

- -

170  Maria

- -

234  Barbara

- -

375  Ursula       -

- -

412  Elisabetha

- -

542  Susanna

- -

 

- -

# -Wisdom asteroids:

- -

# ------------------

- -

 

- -

134  Sophrosyne   -# equanimity, healthy mind and impartiality

- -

197  Arete        -# virtue

- -

227  Philosophia

- -

251  Sophia       -# wisdom (Greek)

- -

259  Aletheia     -# truth

- -

275  Sapientia    -# wisdom (Latin)

- -

 

- -

# Love -asteroids:

- -

# ----------------

- -

 

- -

344  Desiderata

- -

433  Eros

- -

499  Venusia

- -

763  Cupido

- -

1221 -Amor              

- -

1387 -Kama         # Indian god of sexual -desire           

- -

1388 -Aphrodite    # Greek love Goddess

- -

1389 -Onnie        # what is this, after 1387 -and 1388 ?

- -

1390 -Abastumani   # and this?

- -

 

- -

# The -Nine Muses

- -

# ---------------

- -

 

- -

18   Melpomene    Muse of tragedy

- -

22   Kalliope     Muse of heroic poetry

- -

23   Thalia   -    Muse of comedy

- -

27   Euterpe      Muse of music and lyric poetry

- -

30   Urania       Muse of astronomy and astrology

- -

33   Polyhymnia   Muse of singing and rhetoric

- -

62   Erato        Muse of song and dance

- -

81   Terpsichore  Muse of choral dance and song

- -

84   Klio         Muse of history

- -

 

- -

# -Money and big busyness asteroids

- -

# ---------------------------------

- -

 

- -

19   Fortuna      # goddess of fortune

- -

904  Rockefellia

- -

1338 -Duponta

- -

3652 -Soros

- -

 

- -

# -Beatles asteroids:

- -

# -------------------

- -

 

- -

4147 -Lennon

- -

4148 -McCartney

- -

4149 -Harrison

- -

4150 Starr

- -

 

- -

# Composer -Asteroids:

- -

# --------------------

- -

 

- -

2055 -Dvorak

- -

1814 -Bach

- -

1815 -Beethoven

- -

1034 -Mozartia

- -

3941 -Haydn

- -

And -there are many more...

- -

 

- -

# -Astrodienst asteroids:

- -

# -----------------------

- -

 

- -

# -programmers group:

- -

3045 -Alois

- -

2396 -Kochi

- -

2968 -Iliya        # Alois' dog

- -

 

- -

# -artists group:

- -

412  Elisabetha

- -

 

- -

# -production family:

- -

612  Veronika

- -

1376 -Michelle

- -

1343 -Nicole

- -

1716 -Peter

- -

 

- -

# -children group

- -

105 -Artemis

- -

1181 -Lilith

- -

 

- -

# -special interest group

- -

564 -Dudu

- -

349 -Dembowska

- -

484 -Pittsburghia

- -

 

- -

# By -the year 1997, the statistics of asteroid names looked as follows:

- -

 

- -

# Men -(mostly family names)           2551

- -

# -Astronomers                         1147

- -

# -Women (mostly first names)           684

- -

# -Mythological terms                   542

- -

# -Cities, harbours buildings           497

- -

# -Scientists (no astronomers)          493

- -

# -Relatives of asteroid discoverers    277

- -

# -Writers                              249

- -

# -Countries, provinces, islands        246

- -

# -Amateur astronomers                  209

- -

# -Historical, political figures        176

- -

# -Composers, musicians, dancers        157

- -

# -Figures from literature, operas      145

- -

# -Rivers, seas, mountains              135

- -

# -Institutes, observatories            116

- -

# -Painters, sculptors                  101

- -

# Plants, trees, animals                63

- -
- - - -