home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / x / volume19 / xephem / part17 / constel.c next >
Encoding:
C/C++ Source or Header  |  1993-05-15  |  19.9 KB  |  549 lines

  1. #include <math.h>
  2. #include "astro.h"
  3.  
  4. #if defined(__STDC__) || defined(__cplusplus)
  5. #define P_(s) s
  6. #else
  7. #define P_(s) ()
  8. #endif
  9.  
  10. extern void cal_mjd P_((int mn, double dy, int yr, double *Mjd));
  11. extern void precess P_((double mjd1, double mjd2, double *ra, double *dec));
  12.  
  13. void confnd P_((double r, double d, double e, char **name));
  14.  
  15. #undef P_
  16.  
  17.  
  18. /*
  19.   METHOD TO DETERMINE THE CONSTELLATION IN WHICH A POSITION IS LOCATED
  20.  
  21. C version by Craig Counterman and Elwood Downey,
  22. adapted from fortran version:
  23. exerpt from accompanying doc file:
  24.  
  25.         Recently, Mr. Barry N. Rappaport of New  Mexico State University
  26.   transcribed  the constellation  boundaries as  fixed  by the IAU  into
  27.   machine-readable form.  These have  been  transcribed  by Dr. Nancy G.
  28.   Roman to make it possible  to determine by  computer the constellation
  29.   in which a position is located.
  30.  
  31. NSSDC catalog description:
  32.  6042   AN     Catalog of Constellation Boundary Data (Delporte, E. 1930, 
  33.                Cambridge Univ. Press)
  34.                Comment(s): includes constellation identification software 
  35.                (ADC 1987; see Roman, N.G. 1987, Publ. Astron. Soc. Pacific 
  36.                99, 695); 23 description, 118 software, 358 data records. 
  37.                3 files: 23x80, 118x80, 358x29 
  38.  
  39. full documentation file:
  40.  
  41.    METHOD TO DETERMINE THE CONSTELLATION IN WHICH A POSITION IS LOCATED
  42.  
  43.      Recently, Mr. Barry N. Rappaport of New Mexico State University trans-
  44. cribed the constellation boundaries as fixed by the IAU into machine-readable
  45. form.  These have been transcribed by Dr. Nancy G. Roman to make it possible to
  46. determine by computer the constellation in which a position is located.
  47.      Two files follow.  The first is a program, in FORTRAN77, for determining
  48. the constellation using the data in the succeeding file.  Comments describe
  49. the format in which the positions must be entered.  The main program is
  50. followed by a precession subroutine.
  51.      The final file is a list of constellation boundaries in the form Lower
  52. Right Ascension (F8.4), Upper Right Ascension (F8.4), Lower Declination (F9.4),
  53. three letter abbreviation for the Constellation (1X,A3).  The file contains
  54. 358, 29-byte records.
  55.     The following is an example of the output of the program:
  56.  RA =  9.0000 DEC =  65.0000  IS IN CONSTELLATION UMa
  57.  RA = 23.5000 DEC = -20.0000  IS IN CONSTELLATION Aqr
  58.  RA =  5.1200 DEC =   9.1200  IS IN CONSTELLATION Ori
  59.  RA =  9.4555 DEC = -19.9000  IS IN CONSTELLATION Hya
  60.  RA = 12.8888 DEC =  22.0000  IS IN CONSTELLATION Com
  61.  RA = 15.6687 DEC = -12.1234  IS IN CONSTELLATION Lib
  62.  RA = 19.0000 DEC = -40.0000  IS IN CONSTELLATION CrA
  63.  RA =  6.2222 DEC = -81.1234  IS IN CONSTELLATION Men
  64.  END OF INPUT POSITIONS AFTER: RA =   6.2222   DEC = -81.1234
  65.  THE EQUINOX FOR THESE POSITIONS IS 1950.0
  66. */
  67.  
  68. static char And[] = "And: Andromeda";
  69. static char Ant[] = "Ant: Antlia";
  70. static char Aps[] = "Aps: Apus";
  71. static char Aql[] = "Aql: Aquila";
  72. static char Aqr[] = "Aqr: Aquarius";
  73. static char Ara[] = "Ara: Ara";
  74. static char Ari[] = "Ari: Aries";
  75. static char Aur[] = "Aur: Auriga";
  76. static char Boo[] = "Boo: Bootes";
  77. static char CMa[] = "CMa: Canis Major";
  78. static char CMi[] = "CMi: Canis Minor";
  79. static char CVn[] = "CVn: Canes Venatici";
  80. static char Cae[] = "Cae: Caelum";
  81. static char Cam[] = "Cam: Camelopardalis";
  82. static char Cap[] = "Cap: Capricornus";
  83. static char Car[] = "Car: Carina";
  84. static char Cas[] = "Cas: Cassiopeia";
  85. static char Cen[] = "Cen: Centaurus";
  86. static char Cep[] = "Cep: Cepheus";
  87. static char Cet[] = "Cet: Cetus";
  88. static char Cha[] = "Cha: Chamaeleon";
  89. static char Cir[] = "Cir: Circinus";
  90. static char Cnc[] = "Cnc: Cancer";
  91. static char Col[] = "Col: Columba";
  92. static char Com[] = "Com: Coma Berenices";
  93. static char CrA[] = "CrA: Corona Australis";
  94. static char CrB[] = "CrB: Corona Borealis";
  95. static char Crt[] = "Crt: Crater";
  96. static char Cru[] = "Cru: Crux";
  97. static char Crv[] = "Crv: Corvus";
  98. static char Cyg[] = "Cyg: Cygnus";
  99. static char Del[] = "Del: Delphinus";
  100. static char Dor[] = "Dor: Dorado";
  101. static char Dra[] = "Dra: Draco";
  102. static char Equ[] = "Equ: Equuleus";
  103. static char Eri[] = "Eri: Eridanus";
  104. static char For[] = "For: Fornax";
  105. static char Gem[] = "Gem: Gemini";
  106. static char Gru[] = "Gru: Grus";
  107. static char Her[] = "Her: Hercules";
  108. static char Hor[] = "Hor: Horologium";
  109. static char Hya[] = "Hya: Hydra";
  110. static char Hyi[] = "Hyi: Hydrus";
  111. static char Ind[] = "Ind: Indus";
  112. static char LMi[] = "LMi: Leo Minor";
  113. static char Lac[] = "Lac: Lacerta";
  114. static char Leo[] = "Leo: Leo";
  115. static char Lep[] = "Lep: Lepus";
  116. static char Lib[] = "Lib: Libra";
  117. static char Lup[] = "Lup: Lupus";
  118. static char Lyn[] = "Lyn: Lynx";
  119. static char Lyr[] = "Lyr: Lyra";
  120. static char Men[] = "Men: Mensa";
  121. static char Mic[] = "Mic: Microscopium";
  122. static char Mon[] = "Mon: Monoceros";
  123. static char Mus[] = "Mus: Musca";
  124. static char Nor[] = "Nor: Norma";
  125. static char Oct[] = "Oct: Octans";
  126. static char Oph[] = "Oph: Ophiuchus";
  127. static char Ori[] = "Ori: Orion";
  128. static char Pav[] = "Pav: Pavo";
  129. static char Peg[] = "Peg: Pegasus";
  130. static char Per[] = "Per: Perseus";
  131. static char Phe[] = "Phe: Phoenix";
  132. static char Pic[] = "Pic: Pictor";
  133. static char PsA[] = "PsA: Piscis Austrinus";
  134. static char Psc[] = "Psc: Pisces";
  135. static char Pup[] = "Pup: Puppis";
  136. static char Pyx[] = "Pyx: Pyxis";
  137. static char Ret[] = "Ret: Reticulum";
  138. static char Scl[] = "Scl: Sculptor";
  139. static char Sco[] = "Sco: Scorpius";
  140. static char Sct[] = "Sct: Scutum";
  141. static char Ser[] = "Ser: Serpens";
  142. static char Sex[] = "Sex: Sextans";
  143. static char Sge[] = "Sge: Sagitta";
  144. static char Sgr[] = "Sgr: Sagittarius";
  145. static char Tau[] = "Tau: Taurus";
  146. static char Tel[] = "Tel: Telescopium";
  147. static char TrA[] = "TrA: Triangulum Australe";
  148. static char Tri[] = "Tri: Triangulum";
  149. static char Tuc[] = "Tuc: Tucana";
  150. static char UMa[] = "UMa: Ursa Major";
  151. static char UMi[] = "UMi: Ursa Minor";
  152. static char Vel[] = "Vel: Vela";
  153. static char Vir[] = "Vir: Virgo";
  154. static char Vol[] = "Vol: Volans";
  155. static char Vul[] = "Vul: Vulpecula";
  156.  
  157. static struct cdata {
  158.     double l_ra, u_ra, l_dec;
  159.     char *cons;
  160. } con_data[] = {
  161.     {0.0000, 24.0000, 88.0000, UMi},
  162.     {8.0000, 14.5000, 86.5000, UMi},
  163.     {21.0000, 23.0000, 86.1667, UMi},
  164.     {18.0000, 21.0000, 86.0000, UMi},
  165.     {0.0000, 8.0000, 85.0000, Cep},
  166.     {9.1667, 10.6667, 82.0000, Cam},
  167.     {0.0000, 5.0000, 80.0000, Cep},
  168.     {10.6667, 14.5000, 80.0000, Cam},
  169.     {17.5000, 18.0000, 80.0000, UMi},
  170.     {20.1667, 21.0000, 80.0000, Dra},
  171.     {0.0000, 3.5083, 77.0000, Cep},
  172.     {11.5000, 13.5833, 77.0000, Cam},
  173.     {16.5333, 17.5000, 75.0000, UMi},
  174.     {20.1667, 20.6667, 75.0000, Cep},
  175.     {7.9667, 9.1667, 73.5000, Cam},
  176.     {9.1667, 11.3333, 73.5000, Dra},
  177.     {13.0000, 16.5333, 70.0000, UMi},
  178.     {3.1000, 3.4167, 68.0000, Cas},
  179.     {20.4167, 20.6667, 67.0000, Dra},
  180.     {11.3333, 12.0000, 66.5000, Dra},
  181.     {0.0000, 0.3333, 66.0000, Cep},
  182.     {14.0000, 15.6667, 66.0000, UMi},
  183.     {23.5833, 24.0000, 66.0000, Cep},
  184.     {12.0000, 13.5000, 64.0000, Dra},
  185.     {13.5000, 14.4167, 63.0000, Dra},
  186.     {23.1667, 23.5833, 63.0000, Cep},
  187.     {6.1000, 7.0000, 62.0000, Cam},
  188.     {20.0000, 20.4167, 61.5000, Dra},
  189.     {20.5367, 20.6000, 60.9167, Cep},
  190.     {7.0000, 7.9667, 60.0000, Cam},
  191.     {7.9667, 8.4167, 60.0000, UMa},
  192.     {19.7667, 20.0000, 59.5000, Dra},
  193.     {20.0000, 20.5367, 59.5000, Cep},
  194.     {22.8667, 23.1667, 59.0833, Cep},
  195.     {0.0000, 2.4333, 58.5000, Cas},
  196.     {19.4167, 19.7667, 58.0000, Dra},
  197.     {1.7000, 1.9083, 57.5000, Cas},
  198.     {2.4333, 3.1000, 57.0000, Cas},
  199.     {3.1000, 3.1667, 57.0000, Cam},
  200.     {22.3167, 22.8667, 56.2500, Cep},
  201.     {5.0000, 6.1000, 56.0000, Cam},
  202.     {14.0333, 14.4167, 55.5000, UMa},
  203.     {14.4167, 19.4167, 55.5000, Dra},
  204.     {3.1667, 3.3333, 55.0000, Cam},
  205.     {22.1333, 22.3167, 55.0000, Cep},
  206.     {20.6000, 21.9667, 54.8333, Cep},
  207.     {0.0000, 1.7000, 54.0000, Cas},
  208.     {6.1000, 6.5000, 54.0000, Lyn},
  209.     {12.0833, 13.5000, 53.0000, UMa},
  210.     {15.2500, 15.7500, 53.0000, Dra},
  211.     {21.9667, 22.1333, 52.7500, Cep},
  212.     {3.3333, 5.0000, 52.5000, Cam},
  213.     {22.8667, 23.3333, 52.5000, Cas},
  214.     {15.7500, 17.0000, 51.5000, Dra},
  215.     {2.0417, 2.5167, 50.5000, Per},
  216.     {17.0000, 18.2333, 50.5000, Dra},
  217.     {0.0000, 1.3667, 50.0000, Cas},
  218.     {1.3667, 1.6667, 50.0000, Per},
  219.     {6.5000, 6.8000, 50.0000, Lyn},
  220.     {23.3333, 24.0000, 50.0000, Cas},
  221.     {13.5000, 14.0333, 48.5000, UMa},
  222.     {0.0000, 1.1167, 48.0000, Cas},
  223.     {23.5833, 24.0000, 48.0000, Cas},
  224.     {18.1750, 18.2333, 47.5000, Her},
  225.     {18.2333, 19.0833, 47.5000, Dra},
  226.     {19.0833, 19.1667, 47.5000, Cyg},
  227.     {1.6667, 2.0417, 47.0000, Per},
  228.     {8.4167, 9.1667, 47.0000, UMa},
  229.     {0.1667, 0.8667, 46.0000, Cas},
  230.     {12.0000, 12.0833, 45.0000, UMa},
  231.     {6.8000, 7.3667, 44.5000, Lyn},
  232.     {21.9083, 21.9667, 44.0000, Cyg},
  233.     {21.8750, 21.9083, 43.7500, Cyg},
  234.     {19.1667, 19.4000, 43.5000, Cyg},
  235.     {9.1667, 10.1667, 42.0000, UMa},
  236.     {10.1667, 10.7833, 40.0000, UMa},
  237.     {15.4333, 15.7500, 40.0000, Boo},
  238.     {15.7500, 16.3333, 40.0000, Her},
  239.     {9.2500, 9.5833, 39.7500, Lyn},
  240.     {0.0000, 2.5167, 36.7500, And},
  241.     {2.5167, 2.5667, 36.7500, Per},
  242.     {19.3583, 19.4000, 36.5000, Lyr},
  243.     {4.5000, 4.6917, 36.0000, Per},
  244.     {21.7333, 21.8750, 36.0000, Cyg},
  245.     {21.8750, 22.0000, 36.0000, Lac},
  246.     {6.5333, 7.3667, 35.5000, Aur},
  247.     {7.3667, 7.7500, 35.5000, Lyn},
  248.     {0.0000, 2.0000, 35.0000, And},
  249.     {22.0000, 22.8167, 35.0000, Lac},
  250.     {22.8167, 22.8667, 34.5000, Lac},
  251.     {22.8667, 23.5000, 34.5000, And},
  252.     {2.5667, 2.7167, 34.0000, Per},
  253.     {10.7833, 11.0000, 34.0000, UMa},
  254.     {12.0000, 12.3333, 34.0000, CVn},
  255.     {7.7500, 9.2500, 33.5000, Lyn},
  256.     {9.2500, 9.8833, 33.5000, LMi},
  257.     {0.7167, 1.4083, 33.0000, And},
  258.     {15.1833, 15.4333, 33.0000, Boo},
  259.     {23.5000, 23.7500, 32.0833, And},
  260.     {12.3333, 13.2500, 32.0000, CVn},
  261.     {23.7500, 24.0000, 31.3333, And},
  262.     {13.9583, 14.0333, 30.7500, CVn},
  263.     {2.4167, 2.7167, 30.6667, Tri},
  264.     {2.7167, 4.5000, 30.6667, Per},
  265.     {4.5000, 4.7500, 30.0000, Aur},
  266.     {18.1750, 19.3583, 30.0000, Lyr},
  267.     {11.0000, 12.0000, 29.0000, UMa},
  268.     {19.6667, 20.9167, 29.0000, Cyg},
  269.     {4.7500, 5.8833, 28.5000, Aur},
  270.     {9.8833, 10.5000, 28.5000, LMi},
  271.     {13.2500, 13.9583, 28.5000, CVn},
  272.     {0.0000, 0.0667, 28.0000, And},
  273.     {1.4083, 1.6667, 28.0000, Tri},
  274.     {5.8833, 6.5333, 28.0000, Aur},
  275.     {7.8833, 8.0000, 28.0000, Gem},
  276.     {20.9167, 21.7333, 28.0000, Cyg},
  277.     {19.2583, 19.6667, 27.5000, Cyg},
  278.     {1.9167, 2.4167, 27.2500, Tri},
  279.     {16.1667, 16.3333, 27.0000, CrB},
  280.     {15.0833, 15.1833, 26.0000, Boo},
  281.     {15.1833, 16.1667, 26.0000, CrB},
  282.     {18.3667, 18.8667, 26.0000, Lyr},
  283.     {10.7500, 11.0000, 25.5000, LMi},
  284.     {18.8667, 19.2583, 25.5000, Lyr},
  285.     {1.6667, 1.9167, 25.0000, Tri},
  286.     {0.7167, 0.8500, 23.7500, Psc},
  287.     {10.5000, 10.7500, 23.5000, LMi},
  288.     {21.2500, 21.4167, 23.5000, Vul},
  289.     {5.7000, 5.8833, 22.8333, Tau},
  290.     {0.0667, 0.1417, 22.0000, And},
  291.     {15.9167, 16.0333, 22.0000, Ser},
  292.     {5.8833, 6.2167, 21.5000, Gem},
  293.     {19.8333, 20.2500, 21.2500, Vul},
  294.     {18.8667, 19.2500, 21.0833, Vul},
  295.     {0.1417, 0.8500, 21.0000, And},
  296.     {20.2500, 20.5667, 20.5000, Vul},
  297.     {7.8083, 7.8833, 20.0000, Gem},
  298.     {20.5667, 21.2500, 19.5000, Vul},
  299.     {19.2500, 19.8333, 19.1667, Vul},
  300.     {3.2833, 3.3667, 19.0000, Ari},
  301.     {18.8667, 19.0000, 18.5000, Sge},
  302.     {5.7000, 5.7667, 18.0000, Ori},
  303.     {6.2167, 6.3083, 17.5000, Gem},
  304.     {19.0000, 19.8333, 16.1667, Sge},
  305.     {4.9667, 5.3333, 16.0000, Tau},
  306.     {15.9167, 16.0833, 16.0000, Her},
  307.     {19.8333, 20.2500, 15.7500, Sge},
  308.     {4.6167, 4.9667, 15.5000, Tau},
  309.     {5.3333, 5.6000, 15.5000, Tau},
  310.     {12.8333, 13.5000, 15.0000, Com},
  311.     {17.2500, 18.2500, 14.3333, Her},
  312.     {11.8667, 12.8333, 14.0000, Com},
  313.     {7.5000, 7.8083, 13.5000, Gem},
  314.     {16.7500, 17.2500, 12.8333, Her},
  315.     {0.0000, 0.1417, 12.5000, Peg},
  316.     {5.6000, 5.7667, 12.5000, Tau},
  317.     {7.0000, 7.5000, 12.5000, Gem},
  318.     {21.1167, 21.3333, 12.5000, Peg},
  319.     {6.3083, 6.9333, 12.0000, Gem},
  320.     {18.2500, 18.8667, 12.0000, Her},
  321.     {20.8750, 21.0500, 11.8333, Del},
  322.     {21.0500, 21.1167, 11.8333, Peg},
  323.     {11.5167, 11.8667, 11.0000, Leo},
  324.     {6.2417, 6.3083, 10.0000, Ori},
  325.     {6.9333, 7.0000, 10.0000, Gem},
  326.     {7.8083, 7.9250, 10.0000, Cnc},
  327.     {23.8333, 24.0000, 10.0000, Peg},
  328.     {1.6667, 3.2833,  9.9167, Ari},
  329.     {20.1417, 20.3000,  8.5000, Del},
  330.     {13.5000, 15.0833,  8.0000, Boo},
  331.     {22.7500, 23.8333,  7.5000, Peg},
  332.     {7.9250, 9.2500,  7.0000, Cnc},
  333.     {9.2500, 10.7500,  7.0000, Leo},
  334.     {18.2500, 18.6622,  6.2500, Oph},
  335.     {18.6622, 18.8667,  6.2500, Aql},
  336.     {20.8333, 20.8750,  6.0000, Del},
  337.     {7.0000, 7.0167,  5.5000, CMi},
  338.     {18.2500, 18.4250,  4.5000, Ser},
  339.     {16.0833, 16.7500,  4.0000, Her},
  340.     {18.2500, 18.4250,  3.0000, Oph},
  341.     {21.4667, 21.6667,  2.7500, Peg},
  342.     {0.0000, 2.0000,  2.0000, Psc},
  343.     {18.5833, 18.8667,  2.0000, Ser},
  344.     {20.3000, 20.8333,  2.0000, Del},
  345.     {20.8333, 21.3333,  2.0000, Equ},
  346.     {21.3333, 21.4667,  2.0000, Peg},
  347.     {22.0000, 22.7500,  2.0000, Peg},
  348.     {21.6667, 22.0000,  1.7500, Peg},
  349.     {7.0167, 7.2000,  1.5000, CMi},
  350.     {3.5833, 4.6167,  0.0000, Tau},
  351.     {4.6167, 4.6667,  0.0000, Ori},
  352.     {7.2000, 8.0833,  0.0000, CMi},
  353.     {14.6667, 15.0833,  0.0000, Vir},
  354.     {17.8333, 18.2500,  0.0000, Oph},
  355.     {2.6500, 3.2833, -1.7500, Cet},
  356.     {3.2833, 3.5833, -1.7500, Tau},
  357.     {15.0833, 16.2667, -3.2500, Ser},
  358.     {4.6667, 5.0833, -4.0000, Ori},
  359.     {5.8333, 6.2417, -4.0000, Ori},
  360.     {17.8333, 17.9667, -4.0000, Ser},
  361.     {18.2500, 18.5833, -4.0000, Ser},
  362.     {18.5833, 18.8667, -4.0000, Aql},
  363.     {22.7500, 23.8333, -4.0000, Psc},
  364.     {10.7500, 11.5167, -6.0000, Leo},
  365.     {11.5167, 11.8333, -6.0000, Vir},
  366.     {0.0000, 0.3333, -7.0000, Psc},
  367.     {23.8333, 24.0000, -7.0000, Psc},
  368.     {14.2500, 14.6667, -8.0000, Vir},
  369.     {15.9167, 16.2667, -8.0000, Oph},
  370.     {20.0000, 20.5333, -9.0000, Aql},
  371.     {21.3333, 21.8667, -9.0000, Aqr},
  372.     {17.1667, 17.9667, -10.0000, Oph},
  373.     {5.8333, 8.0833, -11.0000, Mon},
  374.     {4.9167, 5.0833, -11.0000, Eri},
  375.     {5.0833, 5.8333, -11.0000, Ori},
  376.     {8.0833, 8.3667, -11.0000, Hya},
  377.     {9.5833, 10.7500, -11.0000, Sex},
  378.     {11.8333, 12.8333, -11.0000, Vir},
  379.     {17.5833, 17.6667, -11.6667, Oph},
  380.     {18.8667, 20.0000, -12.0333, Aql},
  381.     {4.8333, 4.9167, -14.5000, Eri},
  382.     {20.5333, 21.3333, -15.0000, Aqr},
  383.     {17.1667, 18.2500, -16.0000, Ser},
  384.     {18.2500, 18.8667, -16.0000, Sct},
  385.     {8.3667, 8.5833, -17.0000, Hya},
  386.     {16.2667, 16.3750, -18.2500, Oph},
  387.     {8.5833, 9.0833, -19.0000, Hya},
  388.     {10.7500, 10.8333, -19.0000, Crt},
  389.     {16.2667, 16.3750, -19.2500, Oph},
  390.     {15.6667, 15.9167, -20.0000, Lib},
  391.     {12.5833, 12.8333, -22.0000, Crv},
  392.     {12.8333, 14.2500, -22.0000, Vir},
  393.     {9.0833, 9.7500, -24.0000, Hya},
  394.     {1.6667, 2.6500, -24.3833, Cet},
  395.     {2.6500, 3.7500, -24.3833, Eri},
  396.     {10.8333, 11.8333, -24.5000, Crt},
  397.     {11.8333, 12.5833, -24.5000, Crv},
  398.     {14.2500, 14.9167, -24.5000, Lib},
  399.     {16.2667, 16.7500, -24.5833, Oph},
  400.     {0.0000, 1.6667, -25.5000, Cet},
  401.     {21.3333, 21.8667, -25.5000, Cap},
  402.     {21.8667, 23.8333, -25.5000, Aqr},
  403.     {23.8333, 24.0000, -25.5000, Cet},
  404.     {9.7500, 10.2500, -26.5000, Hya},
  405.     {4.7000, 4.8333, -27.2500, Eri},
  406.     {4.8333, 6.1167, -27.2500, Lep},
  407.     {20.0000, 21.3333, -28.0000, Cap},
  408.     {10.2500, 10.5833, -29.1667, Hya},
  409.     {12.5833, 14.9167, -29.5000, Hya},
  410.     {14.9167, 15.6667, -29.5000, Lib},
  411.     {15.6667, 16.0000, -29.5000, Sco},
  412.     {4.5833, 4.7000, -30.0000, Eri},
  413.     {16.7500, 17.6000, -30.0000, Oph},
  414.     {17.6000, 17.8333, -30.0000, Sgr},
  415.     {10.5833, 10.8333, -31.1667, Hya},
  416.     {6.1167, 7.3667, -33.0000, CMa},
  417.     {12.2500, 12.5833, -33.0000, Hya},
  418.     {10.8333, 12.2500, -35.0000, Hya},
  419.     {3.5000, 3.7500, -36.0000, For},
  420.     {8.3667, 9.3667, -36.7500, Pyx},
  421.     {4.2667, 4.5833, -37.0000, Eri},
  422.     {17.8333, 19.1667, -37.0000, Sgr},
  423.     {21.3333, 23.0000, -37.0000, PsA},
  424.     {23.0000, 23.3333, -37.0000, Scl},
  425.     {3.0000, 3.5000, -39.5833, For},
  426.     {9.3667, 11.0000, -39.7500, Ant},
  427.     {0.0000, 1.6667, -40.0000, Scl},
  428.     {1.6667, 3.0000, -40.0000, For},
  429.     {3.8667, 4.2667, -40.0000, Eri},
  430.     {23.3333, 24.0000, -40.0000, Scl},
  431.     {14.1667, 14.9167, -42.0000, Cen},
  432.     {15.6667, 16.0000, -42.0000, Lup},
  433.     {16.0000, 16.4208, -42.0000, Sco},
  434.     {4.8333, 5.0000, -43.0000, Cae},
  435.     {5.0000, 6.5833, -43.0000, Col},
  436.     {8.0000, 8.3667, -43.0000, Pup},
  437.     {3.4167, 3.8667, -44.0000, Eri},
  438.     {16.4208, 17.8333, -45.5000, Sco},
  439.     {17.8333, 19.1667, -45.5000, CrA},
  440.     {19.1667, 20.3333, -45.5000, Sgr},
  441.     {20.3333, 21.3333, -45.5000, Mic},
  442.     {3.0000, 3.4167, -46.0000, Eri},
  443.     {4.5000, 4.8333, -46.5000, Cae},
  444.     {15.3333, 15.6667, -48.0000, Lup},
  445.     {0.0000, 2.3333, -48.1667, Phe},
  446.     {2.6667, 3.0000, -49.0000, Eri},
  447.     {4.0833, 4.2667, -49.0000, Hor},
  448.     {4.2667, 4.5000, -49.0000, Cae},
  449.     {21.3333, 22.0000, -50.0000, Gru},
  450.     {6.0000, 8.0000, -50.7500, Pup},
  451.     {8.0000, 8.1667, -50.7500, Vel},
  452.     {2.4167, 2.6667, -51.0000, Eri},
  453.     {3.8333, 4.0833, -51.0000, Hor},
  454.     {0.0000, 1.8333, -51.5000, Phe},
  455.     {6.0000, 6.1667, -52.5000, Car},
  456.     {8.1667, 8.4500, -53.0000, Vel},
  457.     {3.5000, 3.8333, -53.1667, Hor},
  458.     {3.8333, 4.0000, -53.1667, Dor},
  459.     {0.0000, 1.5833, -53.5000, Phe},
  460.     {2.1667, 2.4167, -54.0000, Eri},
  461.     {4.5000, 5.0000, -54.0000, Pic},
  462.     {15.0500, 15.3333, -54.0000, Lup},
  463.     {8.4500, 8.8333, -54.5000, Vel},
  464.     {6.1667, 6.5000, -55.0000, Car},
  465.     {11.8333, 12.8333, -55.0000, Cen},
  466.     {14.1667, 15.0500, -55.0000, Lup},
  467.     {15.0500, 15.3333, -55.0000, Nor},
  468.     {4.0000, 4.3333, -56.5000, Dor},
  469.     {8.8333, 11.0000, -56.5000, Vel},
  470.     {11.0000, 11.2500, -56.5000, Cen},
  471.     {17.5000, 18.0000, -57.0000, Ara},
  472.     {18.0000, 20.3333, -57.0000, Tel},
  473.     {22.0000, 23.3333, -57.0000, Gru},
  474.     {3.2000, 3.5000, -57.5000, Hor},
  475.     {5.0000, 5.5000, -57.5000, Pic},
  476.     {6.5000, 6.8333, -58.0000, Car},
  477.     {0.0000, 1.3333, -58.5000, Phe},
  478.     {1.3333, 2.1667, -58.5000, Eri},
  479.     {23.3333, 24.0000, -58.5000, Phe},
  480.     {4.3333, 4.5833, -59.0000, Dor},
  481.     {15.3333, 16.4208, -60.0000, Nor},
  482.     {20.3333, 21.3333, -60.0000, Ind},
  483.     {5.5000, 6.0000, -61.0000, Pic},
  484.     {15.1667, 15.3333, -61.0000, Cir},
  485.     {16.4208, 16.5833, -61.0000, Ara},
  486.     {14.9167, 15.1667, -63.5833, Cir},
  487.     {16.5833, 16.7500, -63.5833, Ara},
  488.     {6.0000, 6.8333, -64.0000, Pic},
  489.     {6.8333, 9.0333, -64.0000, Car},
  490.     {11.2500, 11.8333, -64.0000, Cen},
  491.     {11.8333, 12.8333, -64.0000, Cru},
  492.     {12.8333, 14.5333, -64.0000, Cen},
  493.     {13.5000, 13.6667, -65.0000, Cir},
  494.     {16.7500, 16.8333, -65.0000, Ara},
  495.     {2.1667, 3.2000, -67.5000, Hor},
  496.     {3.2000, 4.5833, -67.5000, Ret},
  497.     {14.7500, 14.9167, -67.5000, Cir},
  498.     {16.8333, 17.5000, -67.5000, Ara},
  499.     {17.5000, 18.0000, -67.5000, Pav},
  500.     {22.0000, 23.3333, -67.5000, Tuc},
  501.     {4.5833, 6.5833, -70.0000, Dor},
  502.     {13.6667, 14.7500, -70.0000, Cir},
  503.     {14.7500, 17.0000, -70.0000, TrA},
  504.     {0.0000, 1.3333, -75.0000, Tuc},
  505.     {3.5000, 4.5833, -75.0000, Hyi},
  506.     {6.5833, 9.0333, -75.0000, Vol},
  507.     {9.0333, 11.2500, -75.0000, Car},
  508.     {11.2500, 13.6667, -75.0000, Mus},
  509.     {18.0000, 21.3333, -75.0000, Pav},
  510.     {21.3333, 23.3333, -75.0000, Ind},
  511.     {23.3333, 24.0000, -75.0000, Tuc},
  512.     {0.7500, 1.3333, -76.0000, Tuc},
  513.     {0.0000, 3.5000, -82.5000, Hyi},
  514.     {7.6667, 13.6667, -82.5000, Cha},
  515.     {13.6667, 18.0000, -82.5000, Aps},
  516.     {3.5000, 7.6667, -85.0000, Men},
  517.     {0.0000, 24.0000, -90.0000, Oct},
  518.     {0.0000, 24.0000, -90.0000, ""}
  519. };
  520.  
  521. /* given ra and dec (in rads) precessed to epoch e (an mjd)
  522.  * point *name to a string naming the constellation at that location.
  523.  */
  524. void
  525. confnd(r, d, e, name)
  526. double r, d, e;
  527. char **name;
  528. {
  529.     double ra1875, de1875, mjd1875;
  530.     int i;
  531.  
  532.     cal_mjd (1, 1.0, 1875, &mjd1875);
  533.     precess (e, mjd1875, &r, &d);
  534.         
  535.     /* find constellation such that the declination entered is higher than
  536.      * the lower boundary of the constellation when the upper and lower
  537.      * right ascensions for the constellation bound the entered right
  538.      * ascension
  539.      */
  540.     i = 0;
  541.     ra1875 = radhr (r);
  542.     de1875 = raddeg (d);
  543.     while ((con_data[i].l_dec > de1875 || con_data[i].u_ra <= ra1875
  544.              || con_data[i].l_ra > ra1875) && con_data[i].cons[0])
  545.          i++;
  546.  
  547.     *name = con_data[i].cons[0] ? con_data[i].cons : "<No constellation?!>";
  548. }
  549.