| 1 | /* code to handle constellation boundaries and figures */
 | 
|---|
| 2 | 
 | 
|---|
| 3 | /*
 | 
|---|
| 4 | Constellation boundaries:
 | 
|---|
| 5 | 
 | 
|---|
| 6 |  Primary reference:
 | 
|---|
| 7 | 
 | 
|---|
| 8 |   METHOD TO DETERMINE THE CONSTELLATION IN WHICH A POSITION IS LOCATED
 | 
|---|
| 9 | 
 | 
|---|
| 10 |         Recently, Mr. Barry N. Rappaport of New  Mexico State University
 | 
|---|
| 11 |   transcribed  the constellation  boundaries as  fixed  by the IAU  into
 | 
|---|
| 12 |   machine-readable form.  These have  been  transcribed  by Dr. Nancy G.
 | 
|---|
| 13 |   Roman to make it possible  to determine by  computer the constellation
 | 
|---|
| 14 |   in which a position is located.
 | 
|---|
| 15 | 
 | 
|---|
| 16 |  NSSDC catalog description:
 | 
|---|
| 17 |  6042   AN     Catalog of Constellation Boundary Data (Delporte, E. 1930, 
 | 
|---|
| 18 |                Cambridge Univ. Press)
 | 
|---|
| 19 |                Comment(s): includes constellation identification software 
 | 
|---|
| 20 |                (ADC 1987; see Roman, N.G. 1987, Publ. Astron. Soc. Pacific 
 | 
|---|
| 21 |                99, 695); 23 description, 118 software, 358 data records. 
 | 
|---|
| 22 |                3 files: 23x80, 118x80, 358x29 
 | 
|---|
| 23 | 
 | 
|---|
| 24 |  Further adapted for xephem by:
 | 
|---|
| 25 | 
 | 
|---|
| 26 |     Craig Counterman: conversion from original F77 to C
 | 
|---|
| 27 |     Elwood Downey:    incorporation into xephem
 | 
|---|
| 28 |     Ernie Wright:     additional speed and time improvments
 | 
|---|
| 29 | 
 | 
|---|
| 30 | Constellation figures:
 | 
|---|
| 31 | 
 | 
|---|
| 32 |     Chris Marriott:   original figures
 | 
|---|
| 33 |     Elwood Downey:    incorporated into xephem
 | 
|---|
| 34 | */
 | 
|---|
| 35 | 
 | 
|---|
| 36 | #include <stdio.h>
 | 
|---|
| 37 | #include <stdlib.h>
 | 
|---|
| 38 | #include <string.h>
 | 
|---|
| 39 | #include <ctype.h>
 | 
|---|
| 40 | #include <math.h>
 | 
|---|
| 41 | 
 | 
|---|
| 42 | #include "astro.h"
 | 
|---|
| 43 | 
 | 
|---|
| 44 | /*
 | 
|---|
| 45 | ======================================================================
 | 
|---|
| 46 | Ernie Wright  2 Mar 94
 | 
|---|
| 47 | 
 | 
|---|
| 48 | Find the constellation for a given position.
 | 
|---|
| 49 | 
 | 
|---|
| 50 | First C version by Craig Counterman and Elwood Downey.  Based on a
 | 
|---|
| 51 | FORTRAN program by Nancy G. Roman (Roman, N.G. 1987, Publ. Astron.
 | 
|---|
| 52 | Soc. Pacific 99, 695).  IAU constellation boundaries transcribed into
 | 
|---|
| 53 | machine-readable form by Barry N. Rappaport, New Mexico State Univ.
 | 
|---|
| 54 | ======================================================================
 | 
|---|
| 55 | */
 | 
|---|
| 56 | 
 | 
|---|
| 57 | #define NBOUNDS 357
 | 
|---|
| 58 | 
 | 
|---|
| 59 | /* constellation ids */
 | 
|---|
| 60 | #define And  0
 | 
|---|
| 61 | #define Ant  1
 | 
|---|
| 62 | #define Aps  2
 | 
|---|
| 63 | #define Aql  3
 | 
|---|
| 64 | #define Aqr  4
 | 
|---|
| 65 | #define Ara  5
 | 
|---|
| 66 | #define Ari  6
 | 
|---|
| 67 | #define Aur  7
 | 
|---|
| 68 | #define Boo  8
 | 
|---|
| 69 | #define CMa  9
 | 
|---|
| 70 | #define CMi 10
 | 
|---|
| 71 | #define CVn 11
 | 
|---|
| 72 | #define Cae 12
 | 
|---|
| 73 | #define Cam 13
 | 
|---|
| 74 | #define Cap 14
 | 
|---|
| 75 | #define Car 15
 | 
|---|
| 76 | #define Cas 16
 | 
|---|
| 77 | #define Cen 17
 | 
|---|
| 78 | #define Cep 18
 | 
|---|
| 79 | #define Cet 19
 | 
|---|
| 80 | #define Cha 20
 | 
|---|
| 81 | #define Cir 21
 | 
|---|
| 82 | #define Cnc 22
 | 
|---|
| 83 | #define Col 23
 | 
|---|
| 84 | #define Com 24
 | 
|---|
| 85 | #define CrA 25
 | 
|---|
| 86 | #define CrB 26
 | 
|---|
| 87 | #define Crt 27
 | 
|---|
| 88 | #define Cru 28
 | 
|---|
| 89 | #define Crv 29
 | 
|---|
| 90 | #define Cyg 30
 | 
|---|
| 91 | #define Del 31
 | 
|---|
| 92 | #define Dor 32
 | 
|---|
| 93 | #define Dra 33
 | 
|---|
| 94 | #define Equ 34
 | 
|---|
| 95 | #define Eri 35
 | 
|---|
| 96 | #define For 36
 | 
|---|
| 97 | #define Gem 37
 | 
|---|
| 98 | #define Gru 38
 | 
|---|
| 99 | #define Her 39
 | 
|---|
| 100 | #define Hor 40
 | 
|---|
| 101 | #define Hya 41
 | 
|---|
| 102 | #define Hyi 42
 | 
|---|
| 103 | #define Ind 43
 | 
|---|
| 104 | #define LMi 44
 | 
|---|
| 105 | #define Lac 45
 | 
|---|
| 106 | #define Leo 46
 | 
|---|
| 107 | #define Lep 47
 | 
|---|
| 108 | #define Lib 48
 | 
|---|
| 109 | #define Lup 49
 | 
|---|
| 110 | #define Lyn 50
 | 
|---|
| 111 | #define Lyr 51
 | 
|---|
| 112 | #define Men 52
 | 
|---|
| 113 | #define Mic 53
 | 
|---|
| 114 | #define Mon 54
 | 
|---|
| 115 | #define Mus 55
 | 
|---|
| 116 | #define Nor 56
 | 
|---|
| 117 | #define Oct 57
 | 
|---|
| 118 | #define Oph 58
 | 
|---|
| 119 | #define Ori 59
 | 
|---|
| 120 | #define Pav 60
 | 
|---|
| 121 | #define Peg 61
 | 
|---|
| 122 | #define Per 62
 | 
|---|
| 123 | #define Phe 63
 | 
|---|
| 124 | #define Pic 64
 | 
|---|
| 125 | #define PsA 65
 | 
|---|
| 126 | #define Psc 66
 | 
|---|
| 127 | #define Pup 67
 | 
|---|
| 128 | #define Pyx 68
 | 
|---|
| 129 | #define Ret 69
 | 
|---|
| 130 | #define Scl 70
 | 
|---|
| 131 | #define Sco 71
 | 
|---|
| 132 | #define Sct 72
 | 
|---|
| 133 | #define Se1 73
 | 
|---|
| 134 | #define Sex 74
 | 
|---|
| 135 | #define Sge 75
 | 
|---|
| 136 | #define Sgr 76
 | 
|---|
| 137 | #define Tau 77
 | 
|---|
| 138 | #define Tel 78
 | 
|---|
| 139 | #define TrA 79
 | 
|---|
| 140 | #define Tri 80
 | 
|---|
| 141 | #define Tuc 81
 | 
|---|
| 142 | #define UMa 82
 | 
|---|
| 143 | #define UMi 83
 | 
|---|
| 144 | #define Vel 84
 | 
|---|
| 145 | #define Vir 85
 | 
|---|
| 146 | #define Vol 86
 | 
|---|
| 147 | #define Vul 87
 | 
|---|
| 148 | #define Se2 88
 | 
|---|
| 149 | 
 | 
|---|
| 150 | static char *cns_namemap[ NCNS ] = {
 | 
|---|
| 151 |    /*  0 */   "And: Andromeda",
 | 
|---|
| 152 |    /*  1 */   "Ant: Antlia",
 | 
|---|
| 153 |    /*  2 */   "Aps: Apus",
 | 
|---|
| 154 |    /*  3 */   "Aql: Aquila",
 | 
|---|
| 155 |    /*  4 */   "Aqr: Aquarius",
 | 
|---|
| 156 |    /*  5 */   "Ara: Ara",
 | 
|---|
| 157 |    /*  6 */   "Ari: Aries",
 | 
|---|
| 158 |    /*  7 */   "Aur: Auriga",
 | 
|---|
| 159 |    /*  8 */   "Boo: Bootes",
 | 
|---|
| 160 |    /*  9 */   "CMa: Canis Major",
 | 
|---|
| 161 |    /* 10 */   "CMi: Canis Minor",
 | 
|---|
| 162 |    /* 11 */   "CVn: Canes Venatici",
 | 
|---|
| 163 |    /* 12 */   "Cae: Caelum",
 | 
|---|
| 164 |    /* 13 */   "Cam: Camelopardalis",
 | 
|---|
| 165 |    /* 14 */   "Cap: Capricornus",
 | 
|---|
| 166 |    /* 15 */   "Car: Carina",
 | 
|---|
| 167 |    /* 16 */   "Cas: Cassiopeia",
 | 
|---|
| 168 |    /* 17 */   "Cen: Centaurus",
 | 
|---|
| 169 |    /* 18 */   "Cep: Cepheus",
 | 
|---|
| 170 |    /* 19 */   "Cet: Cetus",
 | 
|---|
| 171 |    /* 20 */   "Cha: Chamaeleon",
 | 
|---|
| 172 |    /* 21 */   "Cir: Circinus",
 | 
|---|
| 173 |    /* 22 */   "Cnc: Cancer",
 | 
|---|
| 174 |    /* 23 */   "Col: Columba",
 | 
|---|
| 175 |    /* 24 */   "Com: Coma Berenices",
 | 
|---|
| 176 |    /* 25 */   "CrA: Corona Australis",
 | 
|---|
| 177 |    /* 26 */   "CrB: Corona Borealis",
 | 
|---|
| 178 |    /* 27 */   "Crt: Crater",
 | 
|---|
| 179 |    /* 28 */   "Cru: Crux",
 | 
|---|
| 180 |    /* 29 */   "Crv: Corvus",
 | 
|---|
| 181 |    /* 30 */   "Cyg: Cygnus",
 | 
|---|
| 182 |    /* 31 */   "Del: Delphinus",
 | 
|---|
| 183 |    /* 32 */   "Dor: Dorado",
 | 
|---|
| 184 |    /* 33 */   "Dra: Draco",
 | 
|---|
| 185 |    /* 34 */   "Equ: Equuleus",
 | 
|---|
| 186 |    /* 35 */   "Eri: Eridanus",
 | 
|---|
| 187 |    /* 36 */   "For: Fornax",
 | 
|---|
| 188 |    /* 37 */   "Gem: Gemini",
 | 
|---|
| 189 |    /* 38 */   "Gru: Grus",
 | 
|---|
| 190 |    /* 39 */   "Her: Hercules",
 | 
|---|
| 191 |    /* 40 */   "Hor: Horologium",
 | 
|---|
| 192 |    /* 41 */   "Hya: Hydra",
 | 
|---|
| 193 |    /* 42 */   "Hyi: Hydrus",
 | 
|---|
| 194 |    /* 43 */   "Ind: Indus",
 | 
|---|
| 195 |    /* 44 */   "LMi: Leo Minor",
 | 
|---|
| 196 |    /* 45 */   "Lac: Lacerta",
 | 
|---|
| 197 |    /* 46 */   "Leo: Leo",
 | 
|---|
| 198 |    /* 47 */   "Lep: Lepus",
 | 
|---|
| 199 |    /* 48 */   "Lib: Libra",
 | 
|---|
| 200 |    /* 49 */   "Lup: Lupus",
 | 
|---|
| 201 |    /* 50 */   "Lyn: Lynx",
 | 
|---|
| 202 |    /* 51 */   "Lyr: Lyra",
 | 
|---|
| 203 |    /* 52 */   "Men: Mensa",
 | 
|---|
| 204 |    /* 53 */   "Mic: Microscopium",
 | 
|---|
| 205 |    /* 54 */   "Mon: Monoceros",
 | 
|---|
| 206 |    /* 55 */   "Mus: Musca",
 | 
|---|
| 207 |    /* 56 */   "Nor: Norma",
 | 
|---|
| 208 |    /* 57 */   "Oct: Octans",
 | 
|---|
| 209 |    /* 58 */   "Oph: Ophiuchus",
 | 
|---|
| 210 |    /* 59 */   "Ori: Orion",
 | 
|---|
| 211 |    /* 60 */   "Pav: Pavo",
 | 
|---|
| 212 |    /* 61 */   "Peg: Pegasus",
 | 
|---|
| 213 |    /* 62 */   "Per: Perseus",
 | 
|---|
| 214 |    /* 63 */   "Phe: Phoenix",
 | 
|---|
| 215 |    /* 64 */   "Pic: Pictor",
 | 
|---|
| 216 |    /* 65 */   "PsA: Piscis Austrinus",
 | 
|---|
| 217 |    /* 66 */   "Psc: Pisces",
 | 
|---|
| 218 |    /* 67 */   "Pup: Puppis",
 | 
|---|
| 219 |    /* 68 */   "Pyx: Pyxis",
 | 
|---|
| 220 |    /* 69 */   "Ret: Reticulum",
 | 
|---|
| 221 |    /* 70 */   "Scl: Sculptor",
 | 
|---|
| 222 |    /* 71 */   "Sco: Scorpius",
 | 
|---|
| 223 |    /* 72 */   "Sct: Scutum",
 | 
|---|
| 224 |    /* 73 */   "Se1: Serpens Caput",
 | 
|---|
| 225 |    /* 74 */   "Sex: Sextans",
 | 
|---|
| 226 |    /* 75 */   "Sge: Sagitta",
 | 
|---|
| 227 |    /* 76 */   "Sgr: Sagittarius",
 | 
|---|
| 228 |    /* 77 */   "Tau: Taurus",
 | 
|---|
| 229 |    /* 78 */   "Tel: Telescopium",
 | 
|---|
| 230 |    /* 79 */   "TrA: Triangulum Australe",
 | 
|---|
| 231 |    /* 80 */   "Tri: Triangulum",
 | 
|---|
| 232 |    /* 81 */   "Tuc: Tucana",
 | 
|---|
| 233 |    /* 82 */   "UMa: Ursa Major",
 | 
|---|
| 234 |    /* 83 */   "UMi: Ursa Minor",
 | 
|---|
| 235 |    /* 84 */   "Vel: Vela",
 | 
|---|
| 236 |    /* 85 */   "Vir: Virgo",
 | 
|---|
| 237 |    /* 86 */   "Vol: Volans",
 | 
|---|
| 238 |    /* 87 */   "Vul: Vulpecula",
 | 
|---|
| 239 |    /* 88 */   "Se2: Serpens Cauda",
 | 
|---|
| 240 | };
 | 
|---|
| 241 | 
 | 
|---|
| 242 | static struct {
 | 
|---|
| 243 |    unsigned short lower_ra;      /* hours * 1800 */
 | 
|---|
| 244 |    unsigned short upper_ra;      /* hours * 1800 */
 | 
|---|
| 245 |    short          lower_dec;     /* degrees * 60 */
 | 
|---|
| 246 |    short          index;
 | 
|---|
| 247 | } cbound[ NBOUNDS ] = {
 | 
|---|
| 248 |    {     0, 43200,  5280, UMi },
 | 
|---|
| 249 |    { 14400, 26100,  5190, UMi },
 | 
|---|
| 250 |    { 37800, 41400,  5170, UMi },
 | 
|---|
| 251 |    { 32400, 37800,  5160, UMi },
 | 
|---|
| 252 |    {     0, 14400,  5100, Cep },
 | 
|---|
| 253 |    { 16500, 19200,  4920, Cam },
 | 
|---|
| 254 |    {     0,  9000,  4800, Cep },
 | 
|---|
| 255 |    { 19200, 26100,  4800, Cam },
 | 
|---|
| 256 |    { 31500, 32400,  4800, UMi },
 | 
|---|
| 257 |    { 36300, 37800,  4800, Dra },
 | 
|---|
| 258 |    {     0,  6315,  4620, Cep },
 | 
|---|
| 259 |    { 20700, 24450,  4620, Cam },
 | 
|---|
| 260 |    { 29760, 31500,  4500, UMi },
 | 
|---|
| 261 |    { 36300, 37200,  4500, Cep },
 | 
|---|
| 262 |    { 14340, 16500,  4410, Cam },
 | 
|---|
| 263 |    { 16500, 20400,  4410, Dra },
 | 
|---|
| 264 |    { 23400, 29760,  4200, UMi },
 | 
|---|
| 265 |    {  5580,  6150,  4080, Cas },
 | 
|---|
| 266 |    { 36750, 37200,  4020, Dra },
 | 
|---|
| 267 |    { 20400, 21600,  3990, Dra },
 | 
|---|
| 268 |    {     0,   600,  3960, Cep },
 | 
|---|
| 269 |    { 25200, 28200,  3960, UMi },
 | 
|---|
| 270 |    { 42450, 43200,  3960, Cep },
 | 
|---|
| 271 |    { 21600, 24300,  3840, Dra },
 | 
|---|
| 272 |    { 24300, 25950,  3780, Dra },
 | 
|---|
| 273 |    { 41700, 42450,  3780, Cep },
 | 
|---|
| 274 |    { 10980, 12600,  3720, Cam },
 | 
|---|
| 275 |    { 36000, 36750,  3690, Dra },
 | 
|---|
| 276 |    { 36966, 37080,  3655, Cep },
 | 
|---|
| 277 |    { 12600, 14340,  3600, Cam },
 | 
|---|
| 278 |    { 14340, 15150,  3600, UMa },
 | 
|---|
| 279 |    { 35580, 36000,  3570, Dra },
 | 
|---|
| 280 |    { 36000, 36966,  3570, Cep },
 | 
|---|
| 281 |    { 41160, 41700,  3545, Cep },
 | 
|---|
| 282 |    {     0,  4380,  3510, Cas },
 | 
|---|
| 283 |    { 34950, 35580,  3480, Dra },
 | 
|---|
| 284 |    {  3060,  3435,  3450, Cas },
 | 
|---|
| 285 |    {  4380,  5580,  3420, Cas },
 | 
|---|
| 286 |    {  5580,  5700,  3420, Cam },
 | 
|---|
| 287 |    { 40170, 41160,  3375, Cep },
 | 
|---|
| 288 |    {  9000, 10980,  3360, Cam },
 | 
|---|
| 289 |    { 25260, 25950,  3330, UMa },
 | 
|---|
| 290 |    { 25950, 34950,  3330, Dra },
 | 
|---|
| 291 |    {  5700,  6000,  3300, Cam },
 | 
|---|
| 292 |    { 39840, 40170,  3300, Cep },
 | 
|---|
| 293 |    { 37080, 39540,  3290, Cep },
 | 
|---|
| 294 |    {     0,  3060,  3240, Cas },
 | 
|---|
| 295 |    { 10980, 11700,  3240, Lyn },
 | 
|---|
| 296 |    { 21750, 24300,  3180, UMa },
 | 
|---|
| 297 |    { 27450, 28350,  3180, Dra },
 | 
|---|
| 298 |    { 39540, 39840,  3165, Cep },
 | 
|---|
| 299 |    {  6000,  9000,  3150, Cam },
 | 
|---|
| 300 |    { 41160, 42000,  3150, Cas },
 | 
|---|
| 301 |    { 28350, 30600,  3090, Dra },
 | 
|---|
| 302 |    {  3675,  4530,  3030, Per },
 | 
|---|
| 303 |    { 30600, 32820,  3030, Dra },
 | 
|---|
| 304 |    {     0,  2460,  3000, Cas },
 | 
|---|
| 305 |    {  2460,  3000,  3000, Per },
 | 
|---|
| 306 |    { 11700, 12240,  3000, Lyn },
 | 
|---|
| 307 |    { 42000, 43200,  3000, Cas },
 | 
|---|
| 308 |    { 24300, 25260,  2910, UMa },
 | 
|---|
| 309 |    {     0,  2010,  2880, Cas },
 | 
|---|
| 310 |    { 42450, 43200,  2880, Cas },
 | 
|---|
| 311 |    { 32715, 32820,  2850, Her },
 | 
|---|
| 312 |    { 32820, 34350,  2850, Dra },
 | 
|---|
| 313 |    { 34350, 34500,  2850, Cyg },
 | 
|---|
| 314 |    {  3000,  3675,  2820, Per },
 | 
|---|
| 315 |    { 15150, 16500,  2820, UMa },
 | 
|---|
| 316 |    {   300,  1560,  2760, Cas },
 | 
|---|
| 317 |    { 21600, 21750,  2700, UMa },
 | 
|---|
| 318 |    { 12240, 13260,  2670, Lyn },
 | 
|---|
| 319 |    { 39435, 39540,  2640, Cyg },
 | 
|---|
| 320 |    { 39375, 39435,  2625, Cyg },
 | 
|---|
| 321 |    { 34500, 34920,  2610, Cyg },
 | 
|---|
| 322 |    { 16500, 18300,  2520, UMa },
 | 
|---|
| 323 |    { 18300, 19410,  2400, UMa },
 | 
|---|
| 324 |    { 27780, 28350,  2400, Boo },
 | 
|---|
| 325 |    { 28350, 29400,  2400, Her },
 | 
|---|
| 326 |    { 16650, 17250,  2385, Lyn },
 | 
|---|
| 327 |    {     0,  4530,  2205, And },
 | 
|---|
| 328 |    {  4530,  4620,  2205, Per },
 | 
|---|
| 329 |    { 34845, 34920,  2190, Lyr },
 | 
|---|
| 330 |    {  8100,  8445,  2160, Per },
 | 
|---|
| 331 |    { 39120, 39375,  2160, Cyg },
 | 
|---|
| 332 |    { 39375, 39600,  2160, Lac },
 | 
|---|
| 333 |    { 11760, 13260,  2130, Aur },
 | 
|---|
| 334 |    { 13260, 13950,  2130, Lyn },
 | 
|---|
| 335 |    {     0,  3600,  2100, And },
 | 
|---|
| 336 |    { 39600, 41070,  2100, Lac },
 | 
|---|
| 337 |    { 41070, 41160,  2070, Lac },
 | 
|---|
| 338 |    { 41160, 42300,  2070, And },
 | 
|---|
| 339 |    {  4620,  4890,  2040, Per },
 | 
|---|
| 340 |    { 19410, 19800,  2040, UMa },
 | 
|---|
| 341 |    { 21600, 22200,  2040, CVn },
 | 
|---|
| 342 |    { 13950, 16650,  2010, Lyn },
 | 
|---|
| 343 |    { 16650, 17790,  2010, LMi },
 | 
|---|
| 344 |    {  1290,  2535,  1980, And },
 | 
|---|
| 345 |    { 27330, 27780,  1980, Boo },
 | 
|---|
| 346 |    { 42300, 42750,  1925, And },
 | 
|---|
| 347 |    { 22200, 23850,  1920, CVn },
 | 
|---|
| 348 |    { 42750, 43200,  1880, And },
 | 
|---|
| 349 |    { 25125, 25260,  1845, CVn },
 | 
|---|
| 350 |    {  4350,  4890,  1840, Tri },
 | 
|---|
| 351 |    {  4890,  8100,  1840, Per },
 | 
|---|
| 352 |    {  8100,  8550,  1800, Aur },
 | 
|---|
| 353 |    { 32715, 34845,  1800, Lyr },
 | 
|---|
| 354 |    { 19800, 21600,  1740, UMa },
 | 
|---|
| 355 |    { 35400, 37650,  1740, Cyg },
 | 
|---|
| 356 |    {  8550, 10590,  1710, Aur },
 | 
|---|
| 357 |    { 17790, 18900,  1710, LMi },
 | 
|---|
| 358 |    { 23850, 25125,  1710, CVn },
 | 
|---|
| 359 |    {     0,   120,  1680, And },
 | 
|---|
| 360 |    {  2535,  3000,  1680, Tri },
 | 
|---|
| 361 |    { 10590, 11760,  1680, Aur },
 | 
|---|
| 362 |    { 14190, 14400,  1680, Gem },
 | 
|---|
| 363 |    { 37650, 39120,  1680, Cyg },
 | 
|---|
| 364 |    { 34665, 35400,  1650, Cyg },
 | 
|---|
| 365 |    {  3450,  4350,  1635, Tri },
 | 
|---|
| 366 |    { 29100, 29400,  1620, CrB },
 | 
|---|
| 367 |    { 27150, 27330,  1560, Boo },
 | 
|---|
| 368 |    { 27330, 29100,  1560, CrB },
 | 
|---|
| 369 |    { 33060, 33960,  1560, Lyr },
 | 
|---|
| 370 |    { 19350, 19800,  1530, LMi },
 | 
|---|
| 371 |    { 33960, 34665,  1530, Lyr },
 | 
|---|
| 372 |    {  3000,  3450,  1500, Tri },
 | 
|---|
| 373 |    {  1290,  1530,  1425, Psc },
 | 
|---|
| 374 |    { 18900, 19350,  1410, LMi },
 | 
|---|
| 375 |    { 38250, 38550,  1410, Vul },
 | 
|---|
| 376 |    { 10260, 10590,  1370, Tau },
 | 
|---|
| 377 |    {   120,   255,  1320, And },
 | 
|---|
| 378 |    { 28650, 28860,  1320, Se1 },
 | 
|---|
| 379 |    { 10590, 11190,  1290, Gem },
 | 
|---|
| 380 |    { 35700, 36450,  1275, Vul },
 | 
|---|
| 381 |    { 33960, 34650,  1265, Vul },
 | 
|---|
| 382 |    {   255,  1530,  1260, And },
 | 
|---|
| 383 |    { 36450, 37020,  1230, Vul },
 | 
|---|
| 384 |    { 14055, 14190,  1200, Gem },
 | 
|---|
| 385 |    { 37020, 38250,  1170, Vul },
 | 
|---|
| 386 |    { 34650, 35700,  1150, Vul },
 | 
|---|
| 387 |    {  5910,  6060,  1140, Ari },
 | 
|---|
| 388 |    { 33960, 34200,  1110, Sge },
 | 
|---|
| 389 |    { 10260, 10380,  1080, Ori },
 | 
|---|
| 390 |    { 11190, 11355,  1050, Gem },
 | 
|---|
| 391 |    { 34200, 35700,   970, Sge },
 | 
|---|
| 392 |    {  8940,  9600,   960, Tau },
 | 
|---|
| 393 |    { 28650, 28950,   960, Her },
 | 
|---|
| 394 |    { 35700, 36450,   945, Sge },
 | 
|---|
| 395 |    {  8310,  8940,   930, Tau },
 | 
|---|
| 396 |    {  9600, 10080,   930, Tau },
 | 
|---|
| 397 |    { 23100, 24300,   900, Com },
 | 
|---|
| 398 |    { 31050, 32850,   860, Her },
 | 
|---|
| 399 |    { 21360, 23100,   840, Com },
 | 
|---|
| 400 |    { 13500, 14055,   810, Gem },
 | 
|---|
| 401 |    { 30150, 31050,   770, Her },
 | 
|---|
| 402 |    {     0,   255,   750, Peg },
 | 
|---|
| 403 |    { 10080, 10380,   750, Tau },
 | 
|---|
| 404 |    { 12600, 13500,   750, Gem },
 | 
|---|
| 405 |    { 38010, 38400,   750, Peg },
 | 
|---|
| 406 |    { 11355, 12480,   720, Gem },
 | 
|---|
| 407 |    { 32850, 33960,   720, Her },
 | 
|---|
| 408 |    { 37575, 37890,   710, Del },
 | 
|---|
| 409 |    { 37890, 38010,   710, Peg },
 | 
|---|
| 410 |    { 20730, 21360,   660, Leo },
 | 
|---|
| 411 |    { 11235, 11355,   600, Ori },
 | 
|---|
| 412 |    { 12480, 12600,   600, Gem },
 | 
|---|
| 413 |    { 14055, 14265,   600, Cnc },
 | 
|---|
| 414 |    { 42900, 43200,   600, Peg },
 | 
|---|
| 415 |    {  3000,  5910,   595, Ari },
 | 
|---|
| 416 |    { 36255, 36540,   510, Del },
 | 
|---|
| 417 |    { 24300, 27150,   480, Boo },
 | 
|---|
| 418 |    { 40950, 42900,   450, Peg },
 | 
|---|
| 419 |    { 14265, 16650,   420, Cnc },
 | 
|---|
| 420 |    { 16650, 19350,   420, Leo },
 | 
|---|
| 421 |    { 32850, 33592,   375, Oph },
 | 
|---|
| 422 |    { 33592, 33960,   375, Aql },
 | 
|---|
| 423 |    { 37500, 37575,   360, Del },
 | 
|---|
| 424 |    { 12600, 12630,   330, CMi },
 | 
|---|
| 425 |    { 32850, 33165,   270, Se2 },
 | 
|---|
| 426 |    { 28950, 30150,   240, Her },
 | 
|---|
| 427 |    { 32850, 33165,   180, Oph },
 | 
|---|
| 428 |    { 38640, 39000,   165, Peg },
 | 
|---|
| 429 |    {     0,  3600,   120, Psc },
 | 
|---|
| 430 |    { 33450, 33960,   120, Se2 },
 | 
|---|
| 431 |    { 36540, 37500,   120, Del },
 | 
|---|
| 432 |    { 37500, 38400,   120, Equ },
 | 
|---|
| 433 |    { 38400, 38640,   120, Peg },
 | 
|---|
| 434 |    { 39600, 40950,   120, Peg },
 | 
|---|
| 435 |    { 39000, 39600,   105, Peg },
 | 
|---|
| 436 |    { 12630, 12960,    90, CMi },
 | 
|---|
| 437 |    {  6450,  8310,     0, Tau },
 | 
|---|
| 438 |    {  8310,  8400,     0, Ori },
 | 
|---|
| 439 |    { 12960, 14550,     0, CMi },
 | 
|---|
| 440 |    { 26400, 27150,     0, Vir },
 | 
|---|
| 441 |    { 32100, 32850,     0, Oph },
 | 
|---|
| 442 |    {  4770,  5910,  -105, Cet },
 | 
|---|
| 443 |    {  5910,  6450,  -105, Tau },
 | 
|---|
| 444 |    { 27150, 29280,  -195, Se1 },
 | 
|---|
| 445 |    {  8400,  9150,  -240, Ori },
 | 
|---|
| 446 |    { 10500, 11235,  -240, Ori },
 | 
|---|
| 447 |    { 32100, 32340,  -240, Se2 },
 | 
|---|
| 448 |    { 32850, 33450,  -240, Se2 },
 | 
|---|
| 449 |    { 33450, 33960,  -240, Aql },
 | 
|---|
| 450 |    { 40950, 42900,  -240, Psc },
 | 
|---|
| 451 |    { 19350, 20730,  -360, Leo },
 | 
|---|
| 452 |    { 20730, 21300,  -360, Vir },
 | 
|---|
| 453 |    {     0,   600,  -420, Psc },
 | 
|---|
| 454 |    { 42900, 43200,  -420, Psc },
 | 
|---|
| 455 |    { 25650, 26400,  -480, Vir },
 | 
|---|
| 456 |    { 28650, 29280,  -480, Oph },
 | 
|---|
| 457 |    { 36000, 36960,  -540, Aql },
 | 
|---|
| 458 |    { 38400, 39360,  -540, Aqr },
 | 
|---|
| 459 |    { 30900, 32340,  -600, Oph },
 | 
|---|
| 460 |    { 10500, 14550,  -660, Mon },
 | 
|---|
| 461 |    {  8850,  9150,  -660, Eri },
 | 
|---|
| 462 |    {  9150, 10500,  -660, Ori },
 | 
|---|
| 463 |    { 14550, 15060,  -660, Hya },
 | 
|---|
| 464 |    { 17250, 19350,  -660, Sex },
 | 
|---|
| 465 |    { 21300, 23100,  -660, Vir },
 | 
|---|
| 466 |    { 31650, 31800,  -700, Oph },
 | 
|---|
| 467 |    { 33960, 36000,  -722, Aql },
 | 
|---|
| 468 |    {  8700,  8850,  -870, Eri },
 | 
|---|
| 469 |    { 36960, 38400,  -900, Aqr },
 | 
|---|
| 470 |    { 30900, 32850,  -960, Se2 },
 | 
|---|
| 471 |    { 32850, 33960,  -960, Sct },
 | 
|---|
| 472 |    { 15060, 15450, -1020, Hya },
 | 
|---|
| 473 |    { 29280, 29475, -1095, Oph },
 | 
|---|
| 474 |    { 15450, 16350, -1140, Hya },
 | 
|---|
| 475 |    { 19350, 19500, -1140, Crt },
 | 
|---|
| 476 |    { 29280, 29475, -1155, Sco },
 | 
|---|
| 477 |    { 28200, 28650, -1200, Lib },
 | 
|---|
| 478 |    { 22650, 23100, -1320, Crv },
 | 
|---|
| 479 |    { 23100, 25650, -1320, Vir },
 | 
|---|
| 480 |    { 16350, 17550, -1440, Hya },
 | 
|---|
| 481 |    {  3000,  4770, -1463, Cet },
 | 
|---|
| 482 |    {  4770,  6750, -1463, Eri },
 | 
|---|
| 483 |    { 19500, 21300, -1470, Crt },
 | 
|---|
| 484 |    { 21300, 22650, -1470, Crv },
 | 
|---|
| 485 |    { 25650, 26850, -1470, Lib },
 | 
|---|
| 486 |    { 29280, 30150, -1475, Oph },
 | 
|---|
| 487 |    {     0,  3000, -1530, Cet },
 | 
|---|
| 488 |    { 38400, 39360, -1530, Cap },
 | 
|---|
| 489 |    { 39360, 42900, -1530, Aqr },
 | 
|---|
| 490 |    { 42900, 43200, -1530, Cet },
 | 
|---|
| 491 |    { 17550, 18450, -1590, Hya },
 | 
|---|
| 492 |    {  8460,  8700, -1635, Eri },
 | 
|---|
| 493 |    {  8700, 11010, -1635, Lep },
 | 
|---|
| 494 |    { 36000, 38400, -1680, Cap },
 | 
|---|
| 495 |    { 18450, 19050, -1750, Hya },
 | 
|---|
| 496 |    { 22650, 26850, -1770, Hya },
 | 
|---|
| 497 |    { 26850, 28200, -1770, Lib },
 | 
|---|
| 498 |    { 28200, 28800, -1770, Sco },
 | 
|---|
| 499 |    {  8250,  8460, -1800, Eri },
 | 
|---|
| 500 |    { 30150, 31680, -1800, Oph },
 | 
|---|
| 501 |    { 31680, 32100, -1800, Sgr },
 | 
|---|
| 502 |    { 19050, 19500, -1870, Hya },
 | 
|---|
| 503 |    { 11010, 13260, -1980, CMa },
 | 
|---|
| 504 |    { 22050, 22650, -1980, Hya },
 | 
|---|
| 505 |    { 19500, 22050, -2100, Hya },
 | 
|---|
| 506 |    {  6300,  6750, -2160, For },
 | 
|---|
| 507 |    { 15060, 16860, -2205, Pyx },
 | 
|---|
| 508 |    {  7680,  8250, -2220, Eri },
 | 
|---|
| 509 |    { 32100, 34500, -2220, Sgr },
 | 
|---|
| 510 |    { 38400, 41400, -2220, PsA },
 | 
|---|
| 511 |    { 41400, 42000, -2220, Scl },
 | 
|---|
| 512 |    {  5400,  6300, -2375, For },
 | 
|---|
| 513 |    { 16860, 19800, -2385, Ant },
 | 
|---|
| 514 |    {     0,  3000, -2400, Scl },
 | 
|---|
| 515 |    {  3000,  5400, -2400, For },
 | 
|---|
| 516 |    {  6960,  7680, -2400, Eri },
 | 
|---|
| 517 |    { 42000, 43200, -2400, Scl },
 | 
|---|
| 518 |    { 25500, 26850, -2520, Cen },
 | 
|---|
| 519 |    { 28200, 28800, -2520, Lup },
 | 
|---|
| 520 |    { 28800, 29557, -2520, Sco },
 | 
|---|
| 521 |    {  8700,  9000, -2580, Cae },
 | 
|---|
| 522 |    {  9000, 11850, -2580, Col },
 | 
|---|
| 523 |    { 14400, 15060, -2580, Pup },
 | 
|---|
| 524 |    {  6150,  6960, -2640, Eri },
 | 
|---|
| 525 |    { 29557, 32100, -2730, Sco },
 | 
|---|
| 526 |    { 32100, 34500, -2730, CrA },
 | 
|---|
| 527 |    { 34500, 36600, -2730, Sgr },
 | 
|---|
| 528 |    { 36600, 38400, -2730, Mic },
 | 
|---|
| 529 |    {  5400,  6150, -2760, Eri },
 | 
|---|
| 530 |    {  8100,  8700, -2790, Cae },
 | 
|---|
| 531 |    { 27600, 28200, -2880, Lup },
 | 
|---|
| 532 |    {     0,  4200, -2890, Phe },
 | 
|---|
| 533 |    {  4800,  5400, -2940, Eri },
 | 
|---|
| 534 |    {  7350,  7680, -2940, Hor },
 | 
|---|
| 535 |    {  7680,  8100, -2940, Cae },
 | 
|---|
| 536 |    { 38400, 39600, -3000, Gru },
 | 
|---|
| 537 |    { 10800, 14400, -3045, Pup },
 | 
|---|
| 538 |    { 14400, 14700, -3045, Vel },
 | 
|---|
| 539 |    {  4350,  4800, -3060, Eri },
 | 
|---|
| 540 |    {  6900,  7350, -3060, Hor },
 | 
|---|
| 541 |    {     0,  3300, -3090, Phe },
 | 
|---|
| 542 |    { 10800, 11100, -3150, Car },
 | 
|---|
| 543 |    { 14700, 15210, -3180, Vel },
 | 
|---|
| 544 |    {  6300,  6900, -3190, Hor },
 | 
|---|
| 545 |    {  6900,  7200, -3190, Dor },
 | 
|---|
| 546 |    {     0,  2850, -3210, Phe },
 | 
|---|
| 547 |    {  3900,  4350, -3240, Eri },
 | 
|---|
| 548 |    {  8100,  9000, -3240, Pic },
 | 
|---|
| 549 |    { 27090, 27600, -3240, Lup },
 | 
|---|
| 550 |    { 15210, 15900, -3270, Vel },
 | 
|---|
| 551 |    { 11100, 11700, -3300, Car },
 | 
|---|
| 552 |    { 21300, 23100, -3300, Cen },
 | 
|---|
| 553 |    { 25500, 27090, -3300, Lup },
 | 
|---|
| 554 |    { 27090, 27600, -3300, Nor },
 | 
|---|
| 555 |    {  7200,  7800, -3390, Dor },
 | 
|---|
| 556 |    { 15900, 19800, -3390, Vel },
 | 
|---|
| 557 |    { 19800, 20250, -3390, Cen },
 | 
|---|
| 558 |    { 31500, 32400, -3420, Ara },
 | 
|---|
| 559 |    { 32400, 36600, -3420, Tel },
 | 
|---|
| 560 |    { 39600, 42000, -3420, Gru },
 | 
|---|
| 561 |    {  5760,  6300, -3450, Hor },
 | 
|---|
| 562 |    {  9000,  9900, -3450, Pic },
 | 
|---|
| 563 |    { 11700, 12300, -3480, Car },
 | 
|---|
| 564 |    {     0,  2400, -3510, Phe },
 | 
|---|
| 565 |    {  2400,  3900, -3510, Eri },
 | 
|---|
| 566 |    { 42000, 43200, -3510, Phe },
 | 
|---|
| 567 |    {  7800,  8250, -3540, Dor },
 | 
|---|
| 568 |    { 27600, 29557, -3600, Nor },
 | 
|---|
| 569 |    { 36600, 38400, -3600, Ind },
 | 
|---|
| 570 |    {  9900, 10800, -3660, Pic },
 | 
|---|
| 571 |    { 27300, 27600, -3660, Cir },
 | 
|---|
| 572 |    { 29557, 29850, -3660, Ara },
 | 
|---|
| 573 |    { 26850, 27300, -3815, Cir },
 | 
|---|
| 574 |    { 29850, 30150, -3815, Ara },
 | 
|---|
| 575 |    { 10800, 12300, -3840, Pic },
 | 
|---|
| 576 |    { 12300, 16260, -3840, Car },
 | 
|---|
| 577 |    { 20250, 21300, -3840, Cen },
 | 
|---|
| 578 |    { 21300, 23100, -3840, Cru },
 | 
|---|
| 579 |    { 23100, 26160, -3840, Cen },
 | 
|---|
| 580 |    { 24300, 24600, -3900, Cir },
 | 
|---|
| 581 |    { 30150, 30300, -3900, Ara },
 | 
|---|
| 582 |    {  3900,  5760, -4050, Hor },
 | 
|---|
| 583 |    {  5760,  8250, -4050, Ret },
 | 
|---|
| 584 |    { 26550, 26850, -4050, Cir },
 | 
|---|
| 585 |    { 30300, 31500, -4050, Ara },
 | 
|---|
| 586 |    { 31500, 32400, -4050, Pav },
 | 
|---|
| 587 |    { 39600, 42000, -4050, Tuc },
 | 
|---|
| 588 |    {  8250, 11850, -4200, Dor },
 | 
|---|
| 589 |    { 24600, 26550, -4200, Cir },
 | 
|---|
| 590 |    { 26550, 30600, -4200, TrA },
 | 
|---|
| 591 |    {     0,  2400, -4500, Tuc },
 | 
|---|
| 592 |    {  6300,  8250, -4500, Hyi },
 | 
|---|
| 593 |    { 11850, 16260, -4500, Vol },
 | 
|---|
| 594 |    { 16260, 20250, -4500, Car },
 | 
|---|
| 595 |    { 20250, 24600, -4500, Mus },
 | 
|---|
| 596 |    { 32400, 38400, -4500, Pav },
 | 
|---|
| 597 |    { 38400, 42000, -4500, Ind },
 | 
|---|
| 598 |    { 42000, 43200, -4500, Tuc },
 | 
|---|
| 599 |    {  1350,  2400, -4560, Tuc },
 | 
|---|
| 600 |    {     0,  6300, -4950, Hyi },
 | 
|---|
| 601 |    { 13800, 24600, -4950, Cha },
 | 
|---|
| 602 |    { 24600, 32400, -4950, Aps },
 | 
|---|
| 603 |    {  6300, 13800, -5100, Men },
 | 
|---|
| 604 |    {     0, 43200, -5400, Oct }
 | 
|---|
| 605 | };
 | 
|---|
| 606 | 
 | 
|---|
| 607 | static short start[] = {
 | 
|---|
| 608 |    355, 352, 343, 340, 332, 320,
 | 
|---|
| 609 |    303, 288, 277, 266, 257, 251,
 | 
|---|
| 610 |    239, 229, 221, 211, 203, 189,
 | 
|---|
| 611 |    177, 163, 149, 136, 124, 104,
 | 
|---|
| 612 |     87,  75,  69,  54,  43,  29,
 | 
|---|
| 613 |     23,  16,  12,   6,   4,   0,   0
 | 
|---|
| 614 | };
 | 
|---|
| 615 | 
 | 
|---|
| 616 | 
 | 
|---|
| 617 | /*
 | 
|---|
| 618 | ======================================================================
 | 
|---|
| 619 | constellation_pick()
 | 
|---|
| 620 | 
 | 
|---|
| 621 | Do a constellation pick from RA and Dec.
 | 
|---|
| 622 | 
 | 
|---|
| 623 | INPUTS
 | 
|---|
| 624 |    r        right ascension, radians
 | 
|---|
| 625 |    d        declination, radians
 | 
|---|
| 626 |    e        epoch to which r and d precessed, as an mjd
 | 
|---|
| 627 | 
 | 
|---|
| 628 | RESULTS
 | 
|---|
| 629 |    Returns an index for the constellation region that the coordinates
 | 
|---|
| 630 |    belong to, or -1 if no constellation pick can be found.
 | 
|---|
| 631 | 
 | 
|---|
| 632 | The constellation is identified by linear search.  We look for a
 | 
|---|
| 633 | member of cbound[] whose lower_dec is less than the declination of the
 | 
|---|
| 634 | pick point and whose lower_ra and upper_ra bracket the pick point's
 | 
|---|
| 635 | right ascension.  The data for that cbound[] member describes a sub-
 | 
|---|
| 636 | region belonging to the picked constellation.
 | 
|---|
| 637 | 
 | 
|---|
| 638 | In geometric terms, the search amounts to starting at the north pole
 | 
|---|
| 639 | and traveling south on a line of constant right ascension through the
 | 
|---|
| 640 | pick point.  At every declination where a cbound[] member lives, we
 | 
|---|
| 641 | wake up, and if (1) the pick point is now behind us, and (2) the
 | 
|---|
| 642 | cbound[] segment is crossing our path, we know we've hit the edge of
 | 
|---|
| 643 | a constellation subregion that the pick point belongs to.
 | 
|---|
| 644 | 
 | 
|---|
| 645 | The cbound[] right ascension and declination values are scaled into
 | 
|---|
| 646 | integers; this conserves storage and makes comparisons faster.  The
 | 
|---|
| 647 | start[] array, which gives starting points in cbound[] for different
 | 
|---|
| 648 | declinations in 5-degree increments, further speeds the search by
 | 
|---|
| 649 | skipping early parts of the list for which we know the search can't
 | 
|---|
| 650 | succeed--geometrically, we start no more than 5 degrees north of the
 | 
|---|
| 651 | pick point, rather than at the north pole.
 | 
|---|
| 652 | 
 | 
|---|
| 653 | The data in cbound[] are for epoch 1875.
 | 
|---|
| 654 | ======================================================================
 | 
|---|
| 655 | */
 | 
|---|
| 656 | 
 | 
|---|
| 657 | int
 | 
|---|
| 658 | cns_pick(double r, double d, double e)
 | 
|---|
| 659 | {
 | 
|---|
| 660 |    double Mjd;
 | 
|---|
| 661 |    unsigned short ra;
 | 
|---|
| 662 |    short de, i;
 | 
|---|
| 663 | 
 | 
|---|
| 664 |    cal_mjd( 1, 1.0, 1875, &Mjd );
 | 
|---|
| 665 |    precess( e, Mjd, &r, &d );
 | 
|---|
| 666 |    ra = ( unsigned short )( radhr( r ) * 1800 );
 | 
|---|
| 667 |    de = ( short )( raddeg( d ) * 60 );
 | 
|---|
| 668 |    if (d < 0.0) --de;
 | 
|---|
| 669 | 
 | 
|---|
| 670 |    i = ( de + 5400 ) / 300;
 | 
|---|
| 671 |    if ( i < 0 || i > 36 ) return -1;
 | 
|---|
| 672 |    i = start[ i ];
 | 
|---|
| 673 | 
 | 
|---|
| 674 |    for ( ; i < NBOUNDS; i++ )
 | 
|---|
| 675 |       if ( cbound[ i ].lower_dec <= de &&
 | 
|---|
| 676 |            cbound[ i ].upper_ra   > ra &&
 | 
|---|
| 677 |            cbound[ i ].lower_ra  <= ra ) break;
 | 
|---|
| 678 | 
 | 
|---|
| 679 |    return ( i == NBOUNDS ) ? -1 : ( int ) cbound[ i ].index;
 | 
|---|
| 680 | }
 | 
|---|
| 681 | 
 | 
|---|
| 682 | /* given a constellation id (as from cns_pick()), return pointer to static
 | 
|---|
| 683 |  * storage containg its name in the form "AAA: Name".
 | 
|---|
| 684 |  * return "???: ???" if id is invalid.
 | 
|---|
| 685 |  */
 | 
|---|
| 686 | char *
 | 
|---|
| 687 | cns_name (int id)
 | 
|---|
| 688 | {
 | 
|---|
| 689 |         if (id < 0 || id >= NCNS)
 | 
|---|
| 690 |             return ("???: ???");
 | 
|---|
| 691 |         return (cns_namemap[id]);
 | 
|---|
| 692 | }
 | 
|---|
| 693 | 
 | 
|---|
| 694 | /* return cns_namemap index matching first three chars in abbrev[], else -1.
 | 
|---|
| 695 |  */
 | 
|---|
| 696 | int
 | 
|---|
| 697 | cns_id (char *abbrev)
 | 
|---|
| 698 | {
 | 
|---|
| 699 |         int i;
 | 
|---|
| 700 | 
 | 
|---|
| 701 |         for (i = 0; i < NCNS; i++)
 | 
|---|
| 702 |             if (strncmp (abbrev, cns_namemap[i], 3) == 0)
 | 
|---|
| 703 |                 return (i);
 | 
|---|
| 704 |         return (-1);
 | 
|---|
| 705 | }
 | 
|---|
| 706 | 
 | 
|---|
| 707 | /* edges of constant ra */
 | 
|---|
| 708 | static struct {
 | 
|---|
| 709 |    unsigned short ra;   /* hours * 1800 */
 | 
|---|
| 710 |    short dec0, dec1;    /* degrees * 60 */
 | 
|---|
| 711 | } ra_edges[] = {
 | 
|---|
| 712 |     {     0, -4950, -4500 },
 | 
|---|
| 713 |     {     0,   600,   750 },
 | 
|---|
| 714 |     {     0,  1680,  1879 },
 | 
|---|
| 715 |     {   120,  1320,  1680 },
 | 
|---|
| 716 |     {   255,   750,  1260 },
 | 
|---|
| 717 |     {   255,  1260,  1320 },
 | 
|---|
| 718 |     {   300,  2760,  2880 },
 | 
|---|
| 719 |     {   599,  -420,     0 },
 | 
|---|
| 720 |     {   599,     0,   120 },
 | 
|---|
| 721 |     {   599,  3960,  4620 },
 | 
|---|
| 722 |     {  1290,  1425,  1980 },
 | 
|---|
| 723 |     {  1350, -4500, -4560 },
 | 
|---|
| 724 |     {  1530,  1260,  1425 },
 | 
|---|
| 725 |     {  1560,  2760,  2880 },
 | 
|---|
| 726 |     {  2010,  2880,  3000 },
 | 
|---|
| 727 |     {  2399, -4560, -3510 },
 | 
|---|
| 728 |     {  2399, -3510, -3210 },
 | 
|---|
| 729 |     {  2460,  3000,  3240 },
 | 
|---|
| 730 |     {  2534,  1680,  1980 },
 | 
|---|
| 731 |     {  2534,  1980,  2100 },
 | 
|---|
| 732 |     {  2849, -3210, -3090 },
 | 
|---|
| 733 |     {  3000, -2400, -1530 },
 | 
|---|
| 734 |     {  3000, -1530, -1462 },
 | 
|---|
| 735 |     {  3000,   595,  1500 },
 | 
|---|
| 736 |     {  3000,  1500,  1680 },
 | 
|---|
| 737 |     {  3000,  2820,  3000 },
 | 
|---|
| 738 |     {  3060,  3240,  3450 },
 | 
|---|
| 739 |     {  3299, -3090, -2890 },
 | 
|---|
| 740 |     {  3434,  3450,  3510 },
 | 
|---|
| 741 |     {  3450,  1500,  1635 },
 | 
|---|
| 742 |     {  3600,   120,   595 },
 | 
|---|
| 743 |     {  3600,  2100,  2205 },
 | 
|---|
| 744 |     {  3675,  2820,  3030 },
 | 
|---|
| 745 |     {  3900, -4050, -3510 },
 | 
|---|
| 746 |     {  3900, -3510, -3240 },
 | 
|---|
| 747 |     {  4199, -2890, -2400 },
 | 
|---|
| 748 |     {  4350, -3240, -3060 },
 | 
|---|
| 749 |     {  4350,  1635,  1840 },
 | 
|---|
| 750 |     {  4379,  3420,  3510 },
 | 
|---|
| 751 |     {  4530,  2205,  3030 },
 | 
|---|
| 752 |     {  4620,  2040,  2205 },
 | 
|---|
| 753 |     {  4770, -1462,  -105 },
 | 
|---|
| 754 |     {  4800, -3060, -2940 },
 | 
|---|
| 755 |     {  4890,  1840,  2040 },
 | 
|---|
| 756 |     {  5400, -2940, -2760 },
 | 
|---|
| 757 |     {  5400, -2400, -2374 },
 | 
|---|
| 758 |     {  5580,  3420,  4080 },
 | 
|---|
| 759 |     {  5700,  3300,  3420 },
 | 
|---|
| 760 |     {  5760, -3450, -4050 },
 | 
|---|
| 761 |     {  5909,  -105,     0 },
 | 
|---|
| 762 |     {  5909,     0,   595 },
 | 
|---|
| 763 |     {  5909,   595,  1140 },
 | 
|---|
| 764 |     {  5999,  3150,  3300 },
 | 
|---|
| 765 |     {  6060,  1140,  1840 },
 | 
|---|
| 766 |     {  6150, -2760, -2640 },
 | 
|---|
| 767 |     {  6150,  4080,  4620 },
 | 
|---|
| 768 |     {  6300, -5100, -4950 },
 | 
|---|
| 769 |     {  6300, -4950, -4500 },
 | 
|---|
| 770 |     {  6300, -3190, -3450 },
 | 
|---|
| 771 |     {  6300, -2374, -2160 },
 | 
|---|
| 772 |     {  6314,  4620,  4800 },
 | 
|---|
| 773 |     {  6449,  -105,     0 },
 | 
|---|
| 774 |     {  6750, -2160, -1462 },
 | 
|---|
| 775 |     {  6899, -3060, -3190 },
 | 
|---|
| 776 |     {  6960, -2640, -2400 },
 | 
|---|
| 777 |     {  7200, -3390, -3190 },
 | 
|---|
| 778 |     {  7349, -2940, -3060 },
 | 
|---|
| 779 |     {  7680, -2400, -2940 },
 | 
|---|
| 780 |     {  7680, -2220, -2400 },
 | 
|---|
| 781 |     {  7799, -3540, -3390 },
 | 
|---|
| 782 |     {  8100, -3240, -2940 },
 | 
|---|
| 783 |     {  8100, -2940, -2790 },
 | 
|---|
| 784 |     {  8100,  1800,  1840 },
 | 
|---|
| 785 |     {  8100,  1840,  2160 },
 | 
|---|
| 786 |     {  8249, -4500, -4200 },
 | 
|---|
| 787 |     {  8249, -4050, -4200 },
 | 
|---|
| 788 |     {  8249, -4050, -3540 },
 | 
|---|
| 789 |     {  8249, -1800, -2220 },
 | 
|---|
| 790 |     {  8310,     0,   930 },
 | 
|---|
| 791 |     {  8400,  -240,     0 },
 | 
|---|
| 792 |     {  8445,  2160,  3150 },
 | 
|---|
| 793 |     {  8460, -1635, -1800 },
 | 
|---|
| 794 |     {  8550,  1710,  1800 },
 | 
|---|
| 795 |     {  8699, -2790, -2580 },
 | 
|---|
| 796 |     {  8699,  -870, -1635 },
 | 
|---|
| 797 |     {  8850,  -660,  -870 },
 | 
|---|
| 798 |     {  8940,   930,   960 },
 | 
|---|
| 799 |     {  9000, -3450, -3240 },
 | 
|---|
| 800 |     {  9000, -2580, -1635 },
 | 
|---|
| 801 |     {  9000,  3150,  3360 },
 | 
|---|
| 802 |     {  9000,  4800,  5100 },
 | 
|---|
| 803 |     {  9149,  -660,  -240 },
 | 
|---|
| 804 |     {  9599,   930,   960 },
 | 
|---|
| 805 |     {  9900, -3660, -3450 },
 | 
|---|
| 806 |     { 10080,   750,   930 },
 | 
|---|
| 807 |     { 10260,  1080,  1369 },
 | 
|---|
| 808 |     { 10380,   750,  1080 },
 | 
|---|
| 809 |     { 10499,  -660,  -240 },
 | 
|---|
| 810 |     { 10589,  1290,  1369 },
 | 
|---|
| 811 |     { 10589,  1369,  1680 },
 | 
|---|
| 812 |     { 10589,  1680,  1710 },
 | 
|---|
| 813 |     { 10800, -3840, -3660 },
 | 
|---|
| 814 |     { 10800, -3150, -3045 },
 | 
|---|
| 815 |     { 10800, -3045, -2580 },
 | 
|---|
| 816 |     { 10980,  3240,  3360 },
 | 
|---|
| 817 |     { 10980,  3360,  3720 },
 | 
|---|
| 818 |     { 11010, -1980, -1635 },
 | 
|---|
| 819 |     { 11010, -1635,  -660 },
 | 
|---|
| 820 |     { 11100, -3300, -3150 },
 | 
|---|
| 821 |     { 11190,  1050,  1290 },
 | 
|---|
| 822 |     { 11235,  -240,     0 },
 | 
|---|
| 823 |     { 11235,     0,   600 },
 | 
|---|
| 824 |     { 11354,   600,   720 },
 | 
|---|
| 825 |     { 11354,   720,  1050 },
 | 
|---|
| 826 |     { 11700, -3480, -3300 },
 | 
|---|
| 827 |     { 11700,  3000,  3240 },
 | 
|---|
| 828 |     { 11759,  1680,  2130 },
 | 
|---|
| 829 |     { 11849, -4200, -4500 },
 | 
|---|
| 830 |     { 11849, -4200, -3840 },
 | 
|---|
| 831 |     { 11849, -1980, -2580 },
 | 
|---|
| 832 |     { 12240,  2670,  3000 },
 | 
|---|
| 833 |     { 12299, -3840, -3480 },
 | 
|---|
| 834 |     { 12479,   600,   720 },
 | 
|---|
| 835 |     { 12600,   330,   600 },
 | 
|---|
| 836 |     { 12600,   600,   750 },
 | 
|---|
| 837 |     { 12600,  3600,  3720 },
 | 
|---|
| 838 |     { 12630,    90,   330 },
 | 
|---|
| 839 |     { 12960,     0,    90 },
 | 
|---|
| 840 |     { 13260,  -660, -1980 },
 | 
|---|
| 841 |     { 13260,  2130,  2670 },
 | 
|---|
| 842 |     { 13500,   750,   810 },
 | 
|---|
| 843 |     { 13800, -5100, -4950 },
 | 
|---|
| 844 |     { 13800, -4500, -4950 },
 | 
|---|
| 845 |     { 13950,  2010,  2130 },
 | 
|---|
| 846 |     { 14054,   600,   810 },
 | 
|---|
| 847 |     { 14054,   810,  1200 },
 | 
|---|
| 848 |     { 14189,  1200,  1680 },
 | 
|---|
| 849 |     { 14265,   420,   600 },
 | 
|---|
| 850 |     { 14340,  3600,  4410 },
 | 
|---|
| 851 |     { 14400, -3045, -2580 },
 | 
|---|
| 852 |     { 14400,  1680,  2010 },
 | 
|---|
| 853 |     { 14400,  5100,  5190 },
 | 
|---|
| 854 |     { 14400,  5280,  5190 },
 | 
|---|
| 855 |     { 14549,  -660,     0 },
 | 
|---|
| 856 |     { 14549,     0,   420 },
 | 
|---|
| 857 |     { 14700, -3180, -3045 },
 | 
|---|
| 858 |     { 15060, -2580, -2205 },
 | 
|---|
| 859 |     { 15060, -2205, -1020 },
 | 
|---|
| 860 |     { 15060, -1020,  -660 },
 | 
|---|
| 861 |     { 15150,  2820,  3600 },
 | 
|---|
| 862 |     { 15209, -3270, -3180 },
 | 
|---|
| 863 |     { 15449, -1140, -1020 },
 | 
|---|
| 864 |     { 15899, -3390, -3270 },
 | 
|---|
| 865 |     { 16259, -4500, -3840 },
 | 
|---|
| 866 |     { 16349, -1440, -1140 },
 | 
|---|
| 867 |     { 16500,  2520,  2820 },
 | 
|---|
| 868 |     { 16500,  4410,  4920 },
 | 
|---|
| 869 |     { 16650,   420,  2010 },
 | 
|---|
| 870 |     { 16650,  2010,  2385 },
 | 
|---|
| 871 |     { 16860, -2385, -2205 },
 | 
|---|
| 872 |     { 16860, -1440, -2205 },
 | 
|---|
| 873 |     { 17249,  -660,     0 },
 | 
|---|
| 874 |     { 17249,     0,   420 },
 | 
|---|
| 875 |     { 17249,  2385,  2520 },
 | 
|---|
| 876 |     { 17550, -1590, -1440 },
 | 
|---|
| 877 |     { 17789,  1710,  2010 },
 | 
|---|
| 878 |     { 18300,  2400,  2520 },
 | 
|---|
| 879 |     { 18450, -1750, -1590 },
 | 
|---|
| 880 |     { 18900,  1410,  1710 },
 | 
|---|
| 881 |     { 19049, -1870, -1750 },
 | 
|---|
| 882 |     { 19200,  4800,  4920 },
 | 
|---|
| 883 |     { 19350,  -660, -1140 },
 | 
|---|
| 884 |     { 19350,  -360,  -660 },
 | 
|---|
| 885 |     { 19350,  -360,     0 },
 | 
|---|
| 886 |     { 19350,     0,   420 },
 | 
|---|
| 887 |     { 19350,  1410,  1530 },
 | 
|---|
| 888 |     { 19409,  2040,  2400 },
 | 
|---|
| 889 |     { 19499, -2100, -1870 },
 | 
|---|
| 890 |     { 19499, -1140, -1470 },
 | 
|---|
| 891 |     { 19800, -3390, -2385 },
 | 
|---|
| 892 |     { 19800, -2385, -2100 },
 | 
|---|
| 893 |     { 19800,  1530,  1740 },
 | 
|---|
| 894 |     { 19800,  1740,  2040 },
 | 
|---|
| 895 |     { 20250, -4500, -3840 },
 | 
|---|
| 896 |     { 20250, -3840, -3390 },
 | 
|---|
| 897 |     { 20399,  3990,  4410 },
 | 
|---|
| 898 |     { 20700,  4620,  4800 },
 | 
|---|
| 899 |     { 20730,  -360,     0 },
 | 
|---|
| 900 |     { 20730,     0,   660 },
 | 
|---|
| 901 |     { 21299, -3840, -3300 },
 | 
|---|
| 902 |     { 21299, -1470,  -660 },
 | 
|---|
| 903 |     { 21299,  -660,  -360 },
 | 
|---|
| 904 |     { 21360,   660,   840 },
 | 
|---|
| 905 |     { 21360,   840,  1740 },
 | 
|---|
| 906 |     { 21600,  1740,  2040 },
 | 
|---|
| 907 |     { 21600,  2040,  2700 },
 | 
|---|
| 908 |     { 21600,  3840,  3990 },
 | 
|---|
| 909 |     { 21749,  2700,  3180 },
 | 
|---|
| 910 |     { 22050, -1980, -2100 },
 | 
|---|
| 911 |     { 22199,  1920,  2040 },
 | 
|---|
| 912 |     { 22649, -1770, -1980 },
 | 
|---|
| 913 |     { 22649, -1470, -1320 },
 | 
|---|
| 914 |     { 23099, -3840, -3300 },
 | 
|---|
| 915 |     { 23099, -1320,  -660 },
 | 
|---|
| 916 |     { 23099,   840,   900 },
 | 
|---|
| 917 |     { 23400,  4620,  4200 },
 | 
|---|
| 918 |     { 23850,  1710,  1920 },
 | 
|---|
| 919 |     { 24300, -3900, -3840 },
 | 
|---|
| 920 |     { 24300,   480,   900 },
 | 
|---|
| 921 |     { 24300,   900,  1710 },
 | 
|---|
| 922 |     { 24300,  2910,  3180 },
 | 
|---|
| 923 |     { 24300,  3780,  3840 },
 | 
|---|
| 924 |     { 24449,  4800,  4620 },
 | 
|---|
| 925 |     { 24600, -4950, -4500 },
 | 
|---|
| 926 |     { 24600, -4500, -4200 },
 | 
|---|
| 927 |     { 24600, -4200, -3900 },
 | 
|---|
| 928 |     { 25124,  1710,  1845 },
 | 
|---|
| 929 |     { 25200,  4200,  3960 },
 | 
|---|
| 930 |     { 25259,  1845,  2910 },
 | 
|---|
| 931 |     { 25259,  2910,  3330 },
 | 
|---|
| 932 |     { 25500, -3300, -2520 },
 | 
|---|
| 933 |     { 25650, -1320, -1470 },
 | 
|---|
| 934 |     { 25650,  -480, -1320 },
 | 
|---|
| 935 |     { 25950,  3330,  3780 },
 | 
|---|
| 936 |     { 26100,  5190,  4800 },
 | 
|---|
| 937 |     { 26159, -3840, -3300 },
 | 
|---|
| 938 |     { 26400,     0,  -480 },
 | 
|---|
| 939 |     { 26550, -4200, -4050 },
 | 
|---|
| 940 |     { 26850, -4050, -3814 },
 | 
|---|
| 941 |     { 26850, -2520, -1770 },
 | 
|---|
| 942 |     { 26850, -1470, -1770 },
 | 
|---|
| 943 |     { 27090, -3300, -3240 },
 | 
|---|
| 944 |     { 27149,  -195,     0 },
 | 
|---|
| 945 |     { 27149,     0,   480 },
 | 
|---|
| 946 |     { 27149,   480,  1560 },
 | 
|---|
| 947 |     { 27300, -3814, -3660 },
 | 
|---|
| 948 |     { 27329,  1560,  1980 },
 | 
|---|
| 949 |     { 27450,  3180,  3330 },
 | 
|---|
| 950 |     { 27599, -3660, -3600 },
 | 
|---|
| 951 |     { 27599, -3600, -3300 },
 | 
|---|
| 952 |     { 27599, -3240, -2880 },
 | 
|---|
| 953 |     { 27779,  1980,  2400 },
 | 
|---|
| 954 |     { 28200, -2880, -2520 },
 | 
|---|
| 955 |     { 28200, -1770, -1200 },
 | 
|---|
| 956 |     { 28200,  3960,  4200 },
 | 
|---|
| 957 |     { 28350,  2400,  3090 },
 | 
|---|
| 958 |     { 28350,  3090,  3180 },
 | 
|---|
| 959 |     { 28650, -1200,  -480 },
 | 
|---|
| 960 |     { 28650,  -480,  -195 },
 | 
|---|
| 961 |     { 28650,   960,  1320 },
 | 
|---|
| 962 |     { 28800, -2520, -1770 },
 | 
|---|
| 963 |     { 28859,  1320,  1560 },
 | 
|---|
| 964 |     { 28949,   240,   960 },
 | 
|---|
| 965 |     { 29100,  1560,  1620 },
 | 
|---|
| 966 |     { 29280, -1474, -1155 },
 | 
|---|
| 967 |     { 29280, -1095,  -480 },
 | 
|---|
| 968 |     { 29280,  -195,     0 },
 | 
|---|
| 969 |     { 29280,     0,   240 },
 | 
|---|
| 970 |     { 29399,  1620,  2400 },
 | 
|---|
| 971 |     { 29475, -1155, -1095 },
 | 
|---|
| 972 |     { 29557, -3660, -3600 },
 | 
|---|
| 973 |     { 29557, -3600, -2730 },
 | 
|---|
| 974 |     { 29557, -2730, -2520 },
 | 
|---|
| 975 |     { 29759,  4200,  4500 },
 | 
|---|
| 976 |     { 29849, -3814, -3660 },
 | 
|---|
| 977 |     { 30150, -3900, -3814 },
 | 
|---|
| 978 |     { 30150, -1800, -1474 },
 | 
|---|
| 979 |     { 30150,   240,   769 },
 | 
|---|
| 980 |     { 30299, -4050, -3900 },
 | 
|---|
| 981 |     { 30600, -4050, -4200 },
 | 
|---|
| 982 |     { 30600,  3030,  3090 },
 | 
|---|
| 983 |     { 30900,  -960,  -600 },
 | 
|---|
| 984 |     { 31050,   769,   859 },
 | 
|---|
| 985 |     { 31500, -3420, -4050 },
 | 
|---|
| 986 |     { 31500,  4500,  4800 },
 | 
|---|
| 987 |     { 31649,  -700,  -600 },
 | 
|---|
| 988 |     { 31680,  -960, -1800 },
 | 
|---|
| 989 |     { 31800,  -700,  -600 },
 | 
|---|
| 990 |     { 32099, -2730, -2220 },
 | 
|---|
| 991 |     { 32099, -1800, -2220 },
 | 
|---|
| 992 |     { 32099,  -240,     0 },
 | 
|---|
| 993 |     { 32340,  -600,  -240 },
 | 
|---|
| 994 |     { 32400, -4950, -4500 },
 | 
|---|
| 995 |     { 32400, -4500, -4050 },
 | 
|---|
| 996 |     { 32400, -2730, -3420 },
 | 
|---|
| 997 |     { 32400,  4800,  5160 },
 | 
|---|
| 998 |     { 32715,  1800,  2850 },
 | 
|---|
| 999 |     { 32819,  2850,  3030 },
 | 
|---|
| 1000 |     { 32850,  -240,  -960 },
 | 
|---|
| 1001 |     { 32850,     0,   180 },
 | 
|---|
| 1002 |     { 32850,   270,   375 },
 | 
|---|
| 1003 |     { 32850,   720,   859 },
 | 
|---|
| 1004 |     { 33060,  1560,  1800 },
 | 
|---|
| 1005 |     { 33165,   180,   270 },
 | 
|---|
| 1006 |     { 33449,  -240,     0 },
 | 
|---|
| 1007 |     { 33449,     0,   120 },
 | 
|---|
| 1008 |     { 33591,   375,   720 },
 | 
|---|
| 1009 |     { 33960,  -960,  -721 },
 | 
|---|
| 1010 |     { 33960,  -721,  -240 },
 | 
|---|
| 1011 |     { 33960,   120,   375 },
 | 
|---|
| 1012 |     { 33960,   720,  1110 },
 | 
|---|
| 1013 |     { 33960,  1110,  1264 },
 | 
|---|
| 1014 |     { 33960,  1264,  1530 },
 | 
|---|
| 1015 |     { 33960,  1530,  1560 },
 | 
|---|
| 1016 |     { 34200,   970,  1110 },
 | 
|---|
| 1017 |     { 34349,  2850,  3330 },
 | 
|---|
| 1018 |     { 34500, -2220, -2730 },
 | 
|---|
| 1019 |     { 34500,  2610,  2850 },
 | 
|---|
| 1020 |     { 34650,  1150,  1264 },
 | 
|---|
| 1021 |     { 34664,  1530,  1650 },
 | 
|---|
| 1022 |     { 34664,  1650,  1800 },
 | 
|---|
| 1023 |     { 34844,  1800,  2190 },
 | 
|---|
| 1024 |     { 34920,  2190,  2610 },
 | 
|---|
| 1025 |     { 34950,  3330,  3480 },
 | 
|---|
| 1026 |     { 35400,  1650,  1740 },
 | 
|---|
| 1027 |     { 35580,  3480,  3570 },
 | 
|---|
| 1028 |     { 35699,   945,   970 },
 | 
|---|
| 1029 |     { 35699,  1150,  1275 },
 | 
|---|
| 1030 |     { 36000, -1680,  -721 },
 | 
|---|
| 1031 |     { 36000,  -540,  -721 },
 | 
|---|
| 1032 |     { 36000,  3570,  3690 },
 | 
|---|
| 1033 |     { 36255,   510,   945 },
 | 
|---|
| 1034 |     { 36300,  4500,  4800 },
 | 
|---|
| 1035 |     { 36450,   945,  1230 },
 | 
|---|
| 1036 |     { 36450,  1230,  1275 },
 | 
|---|
| 1037 |     { 36540,   120,   510 },
 | 
|---|
| 1038 |     { 36599, -3600, -3420 },
 | 
|---|
| 1039 |     { 36599, -3420, -2730 },
 | 
|---|
| 1040 |     { 36599, -2730, -1680 },
 | 
|---|
| 1041 |     { 36750,  3690,  4020 },
 | 
|---|
| 1042 |     { 36959,  -900,  -540 },
 | 
|---|
| 1043 |     { 36959,  -540,     0 },
 | 
|---|
| 1044 |     { 36959,     0,   120 },
 | 
|---|
| 1045 |     { 36966,  3570,  3655 },
 | 
|---|
| 1046 |     { 37020,  1170,  1230 },
 | 
|---|
| 1047 |     { 37080,  3289,  3655 },
 | 
|---|
| 1048 |     { 37200,  4020,  4500 },
 | 
|---|
| 1049 |     { 37499,   120,   360 },
 | 
|---|
| 1050 |     { 37575,   360,   709 },
 | 
|---|
| 1051 |     { 37650,  1680,  1740 },
 | 
|---|
| 1052 |     { 37800,  4800,  5160 },
 | 
|---|
| 1053 |     { 37800,  5160,  5169 },
 | 
|---|
| 1054 |     { 37890,   709,  1170 },
 | 
|---|
| 1055 |     { 38010,   709,   750 },
 | 
|---|
| 1056 |     { 38250,  1170,  1410 },
 | 
|---|
| 1057 |     { 38399, -4500, -3600 },
 | 
|---|
| 1058 |     { 38399, -3000, -2730 },
 | 
|---|
| 1059 |     { 38399, -2220, -2730 },
 | 
|---|
| 1060 |     { 38399, -1680, -2220 },
 | 
|---|
| 1061 |     { 38399, -1680, -1530 },
 | 
|---|
| 1062 |     { 38399,  -540,  -900 },
 | 
|---|
| 1063 |     { 38399,   120,   750 },
 | 
|---|
| 1064 |     { 38550,  1410,  1680 },
 | 
|---|
| 1065 |     { 38640,   120,   165 },
 | 
|---|
| 1066 |     { 39000,   105,   165 },
 | 
|---|
| 1067 |     { 39119,  1680,  2160 },
 | 
|---|
| 1068 |     { 39360, -1530,  -540 },
 | 
|---|
| 1069 |     { 39375,  2160,  2625 },
 | 
|---|
| 1070 |     { 39434,  2625,  2640 },
 | 
|---|
| 1071 |     { 39540,  2640,  3165 },
 | 
|---|
| 1072 |     { 39540,  3165,  3289 },
 | 
|---|
| 1073 |     { 39600, -4050, -3420 },
 | 
|---|
| 1074 |     { 39600, -3420, -3000 },
 | 
|---|
| 1075 |     { 39600,   105,   120 },
 | 
|---|
| 1076 |     { 39600,  2100,  2160 },
 | 
|---|
| 1077 |     { 39839,  3165,  3300 },
 | 
|---|
| 1078 |     { 40170,  3300,  3375 },
 | 
|---|
| 1079 |     { 40950,  -240,     0 },
 | 
|---|
| 1080 |     { 40950,     0,   120 },
 | 
|---|
| 1081 |     { 40950,   120,   450 },
 | 
|---|
| 1082 |     { 41070,  2070,  2100 },
 | 
|---|
| 1083 |     { 41160,  2070,  3150 },
 | 
|---|
| 1084 |     { 41160,  3150,  3375 },
 | 
|---|
| 1085 |     { 41160,  3375,  3544 },
 | 
|---|
| 1086 |     { 41400, -2220, -1530 },
 | 
|---|
| 1087 |     { 41400,  5169,  5280 },
 | 
|---|
| 1088 |     { 41700,  3544,  3780 },
 | 
|---|
| 1089 |     { 41999, -4500, -4050 },
 | 
|---|
| 1090 |     { 41999, -3510, -3420 },
 | 
|---|
| 1091 |     { 41999, -3420, -2400 },
 | 
|---|
| 1092 |     { 41999, -2400, -2220 },
 | 
|---|
| 1093 |     { 41999,  3000,  3150 },
 | 
|---|
| 1094 |     { 42300,  1924,  2070 },
 | 
|---|
| 1095 |     { 42449,  2880,  3000 },
 | 
|---|
| 1096 |     { 42449,  3780,  3960 },
 | 
|---|
| 1097 |     { 42750,  1879,  1924 },
 | 
|---|
| 1098 |     { 42899, -1530,  -420 },
 | 
|---|
| 1099 |     { 42899,  -420,  -240 },
 | 
|---|
| 1100 |     { 42899,   450,   600 },
 | 
|---|
| 1101 | };
 | 
|---|
| 1102 | 
 | 
|---|
| 1103 | #define NRA     ((int)(sizeof(ra_edges)/sizeof(ra_edges[0])))
 | 
|---|
| 1104 | 
 | 
|---|
| 1105 | /* edges of constant dec */
 | 
|---|
| 1106 | static struct {
 | 
|---|
| 1107 |    short dec;                   /* degrees * 60 */
 | 
|---|
| 1108 |    unsigned short ra0, ra1;     /* hours * 1800 */
 | 
|---|
| 1109 | } dec_edges[] = {
 | 
|---|
| 1110 |     { -5100,  6300, 13800 },
 | 
|---|
| 1111 |     { -4950,     0,  6300 },
 | 
|---|
| 1112 |     { -4950, 13800, 24600 },
 | 
|---|
| 1113 |     { -4950, 24600, 32400 },
 | 
|---|
| 1114 |     { -4560,  1350,  2399 },
 | 
|---|
| 1115 |     { -4500,     0,  1350 },
 | 
|---|
| 1116 |     { -4500,  6300,  8249 },
 | 
|---|
| 1117 |     { -4500, 11849, 13800 },
 | 
|---|
| 1118 |     { -4500, 13800, 16259 },
 | 
|---|
| 1119 |     { -4500, 16259, 20250 },
 | 
|---|
| 1120 |     { -4500, 20250, 24600 },
 | 
|---|
| 1121 |     { -4500, 32400, 38399 },
 | 
|---|
| 1122 |     { -4500, 38399, 41999 },
 | 
|---|
| 1123 |     { -4500, 41999,     0 },
 | 
|---|
| 1124 |     { -4200,  8249, 11849 },
 | 
|---|
| 1125 |     { -4200, 24600, 26550 },
 | 
|---|
| 1126 |     { -4200, 30600, 26550 },
 | 
|---|
| 1127 |     { -4050,  3900,  5760 },
 | 
|---|
| 1128 |     { -4050,  5760,  8249 },
 | 
|---|
| 1129 |     { -4050, 26550, 26850 },
 | 
|---|
| 1130 |     { -4050, 30299, 30600 },
 | 
|---|
| 1131 |     { -4050, 31500, 30600 },
 | 
|---|
| 1132 |     { -4050, 31500, 32400 },
 | 
|---|
| 1133 |     { -4050, 39600, 41999 },
 | 
|---|
| 1134 |     { -3900, 24300, 24600 },
 | 
|---|
| 1135 |     { -3900, 30150, 30299 },
 | 
|---|
| 1136 |     { -3840, 10800, 11849 },
 | 
|---|
| 1137 |     { -3840, 11849, 12299 },
 | 
|---|
| 1138 |     { -3840, 12299, 16259 },
 | 
|---|
| 1139 |     { -3840, 20250, 21299 },
 | 
|---|
| 1140 |     { -3840, 21299, 23099 },
 | 
|---|
| 1141 |     { -3840, 23099, 24300 },
 | 
|---|
| 1142 |     { -3840, 24300, 26159 },
 | 
|---|
| 1143 |     { -3814, 26850, 27300 },
 | 
|---|
| 1144 |     { -3814, 29849, 30150 },
 | 
|---|
| 1145 |     { -3660,  9900, 10800 },
 | 
|---|
| 1146 |     { -3660, 27300, 27599 },
 | 
|---|
| 1147 |     { -3660, 29557, 29849 },
 | 
|---|
| 1148 |     { -3600, 27599, 29557 },
 | 
|---|
| 1149 |     { -3600, 36599, 38399 },
 | 
|---|
| 1150 |     { -3540,  7799,  8249 },
 | 
|---|
| 1151 |     { -3510,  2399,  3900 },
 | 
|---|
| 1152 |     { -3510,  2399, 41999 },
 | 
|---|
| 1153 |     { -3510,  3900,  2399 },
 | 
|---|
| 1154 |     { -3510, 41999,  2399 },
 | 
|---|
| 1155 |     { -3480, 11700, 12299 },
 | 
|---|
| 1156 |     { -3450,  6300,  5760 },
 | 
|---|
| 1157 |     { -3450,  9000,  9900 },
 | 
|---|
| 1158 |     { -3420, 32400, 31500 },
 | 
|---|
| 1159 |     { -3420, 32400, 36599 },
 | 
|---|
| 1160 |     { -3420, 39600, 41999 },
 | 
|---|
| 1161 |     { -3390,  7200,  7799 },
 | 
|---|
| 1162 |     { -3390, 15899, 19800 },
 | 
|---|
| 1163 |     { -3390, 19800, 20250 },
 | 
|---|
| 1164 |     { -3300, 11100, 11700 },
 | 
|---|
| 1165 |     { -3300, 21299, 23099 },
 | 
|---|
| 1166 |     { -3300, 25500, 26159 },
 | 
|---|
| 1167 |     { -3300, 26159, 27090 },
 | 
|---|
| 1168 |     { -3300, 27090, 27599 },
 | 
|---|
| 1169 |     { -3270, 15209, 15899 },
 | 
|---|
| 1170 |     { -3240,  3900,  4350 },
 | 
|---|
| 1171 |     { -3240,  8100,  9000 },
 | 
|---|
| 1172 |     { -3240, 27090, 27599 },
 | 
|---|
| 1173 |     { -3210,  2399,  2849 },
 | 
|---|
| 1174 |     { -3190,  6899,  6300 },
 | 
|---|
| 1175 |     { -3190,  6899,  7200 },
 | 
|---|
| 1176 |     { -3180, 14700, 15209 },
 | 
|---|
| 1177 |     { -3150, 10800, 11100 },
 | 
|---|
| 1178 |     { -3090,  2849,  3299 },
 | 
|---|
| 1179 |     { -3060,  4350,  4800 },
 | 
|---|
| 1180 |     { -3060,  7349,  6899 },
 | 
|---|
| 1181 |     { -3045, 10800, 14400 },
 | 
|---|
| 1182 |     { -3045, 14400, 14700 },
 | 
|---|
| 1183 |     { -3000, 38399, 39600 },
 | 
|---|
| 1184 |     { -2940,  4800,  5400 },
 | 
|---|
| 1185 |     { -2940,  7680,  7349 },
 | 
|---|
| 1186 |     { -2940,  7680,  8100 },
 | 
|---|
| 1187 |     { -2890,  3299,  4199 },
 | 
|---|
| 1188 |     { -2880, 27599, 28200 },
 | 
|---|
| 1189 |     { -2790,  8100,  8699 },
 | 
|---|
| 1190 |     { -2760,  5400,  6150 },
 | 
|---|
| 1191 |     { -2730, 29557, 32099 },
 | 
|---|
| 1192 |     { -2730, 32099, 32400 },
 | 
|---|
| 1193 |     { -2730, 34500, 32400 },
 | 
|---|
| 1194 |     { -2730, 34500, 36599 },
 | 
|---|
| 1195 |     { -2730, 38399, 36599 },
 | 
|---|
| 1196 |     { -2640,  6150,  6960 },
 | 
|---|
| 1197 |     { -2580,  8699,  9000 },
 | 
|---|
| 1198 |     { -2580, 10800,  9000 },
 | 
|---|
| 1199 |     { -2580, 11849, 10800 },
 | 
|---|
| 1200 |     { -2580, 14400, 15060 },
 | 
|---|
| 1201 |     { -2520, 25500, 26850 },
 | 
|---|
| 1202 |     { -2520, 28200, 28800 },
 | 
|---|
| 1203 |     { -2520, 29557, 28800 },
 | 
|---|
| 1204 |     { -2400,  3000, 41999 },
 | 
|---|
| 1205 |     { -2400,  4199,  3000 },
 | 
|---|
| 1206 |     { -2400,  4199,  5400 },
 | 
|---|
| 1207 |     { -2400,  6960,  7680 },
 | 
|---|
| 1208 |     { -2385, 16860, 19800 },
 | 
|---|
| 1209 |     { -2374,  5400,  6300 },
 | 
|---|
| 1210 |     { -2220,  8249,  7680 },
 | 
|---|
| 1211 |     { -2220, 32099, 34500 },
 | 
|---|
| 1212 |     { -2220, 38399, 41400 },
 | 
|---|
| 1213 |     { -2220, 41999, 41400 },
 | 
|---|
| 1214 |     { -2205, 16860, 15060 },
 | 
|---|
| 1215 |     { -2160,  6300,  6750 },
 | 
|---|
| 1216 |     { -2100, 19800, 19499 },
 | 
|---|
| 1217 |     { -2100, 22050, 19800 },
 | 
|---|
| 1218 |     { -1980, 11010, 11849 },
 | 
|---|
| 1219 |     { -1980, 13260, 11849 },
 | 
|---|
| 1220 |     { -1980, 22649, 22050 },
 | 
|---|
| 1221 |     { -1870, 19499, 19049 },
 | 
|---|
| 1222 |     { -1800,  8460,  8249 },
 | 
|---|
| 1223 |     { -1800, 30150, 31680 },
 | 
|---|
| 1224 |     { -1800, 31680, 32099 },
 | 
|---|
| 1225 |     { -1770, 26850, 22649 },
 | 
|---|
| 1226 |     { -1770, 26850, 28200 },
 | 
|---|
| 1227 |     { -1770, 28800, 28200 },
 | 
|---|
| 1228 |     { -1750, 19049, 18450 },
 | 
|---|
| 1229 |     { -1680, 36000, 36599 },
 | 
|---|
| 1230 |     { -1680, 36599, 38399 },
 | 
|---|
| 1231 |     { -1635,  8699,  8460 },
 | 
|---|
| 1232 |     { -1635,  8699,  9000 },
 | 
|---|
| 1233 |     { -1635,  9000, 11010 },
 | 
|---|
| 1234 |     { -1590, 18450, 17550 },
 | 
|---|
| 1235 |     { -1530,  3000, 42899 },
 | 
|---|
| 1236 |     { -1530, 38399, 39360 },
 | 
|---|
| 1237 |     { -1530, 41400, 39360 },
 | 
|---|
| 1238 |     { -1530, 41400, 42899 },
 | 
|---|
| 1239 |     { -1530, 42899,  3000 },
 | 
|---|
| 1240 |     { -1530, 42899, 41400 },
 | 
|---|
| 1241 |     { -1474, 29280, 30150 },
 | 
|---|
| 1242 |     { -1470, 19499, 21299 },
 | 
|---|
| 1243 |     { -1470, 21299, 22649 },
 | 
|---|
| 1244 |     { -1470, 25650, 26850 },
 | 
|---|
| 1245 |     { -1462,  3000,  4770 },
 | 
|---|
| 1246 |     { -1462,  4770,  6750 },
 | 
|---|
| 1247 |     { -1440, 16349, 16860 },
 | 
|---|
| 1248 |     { -1440, 17550, 16860 },
 | 
|---|
| 1249 |     { -1320, 22649, 23099 },
 | 
|---|
| 1250 |     { -1320, 23099, 25650 },
 | 
|---|
| 1251 |     { -1200, 28200, 28650 },
 | 
|---|
| 1252 |     { -1155, 29280, 29475 },
 | 
|---|
| 1253 |     { -1140, 15449, 16349 },
 | 
|---|
| 1254 |     { -1140, 19350, 19499 },
 | 
|---|
| 1255 |     { -1095, 29280, 29475 },
 | 
|---|
| 1256 |     { -1020, 15060, 15449 },
 | 
|---|
| 1257 |     {  -960, 30900, 31680 },
 | 
|---|
| 1258 |     {  -960, 32850, 31680 },
 | 
|---|
| 1259 |     {  -960, 32850, 33960 },
 | 
|---|
| 1260 |     {  -900, 38399, 36959 },
 | 
|---|
| 1261 |     {  -870,  8850,  8699 },
 | 
|---|
| 1262 |     {  -721, 36000, 33960 },
 | 
|---|
| 1263 |     {  -700, 31649, 31800 },
 | 
|---|
| 1264 |     {  -660,  9149,  8850 },
 | 
|---|
| 1265 |     {  -660, 10499,  9149 },
 | 
|---|
| 1266 |     {  -660, 11010, 10499 },
 | 
|---|
| 1267 |     {  -660, 11010, 13260 },
 | 
|---|
| 1268 |     {  -660, 14549, 13260 },
 | 
|---|
| 1269 |     {  -660, 15060, 14549 },
 | 
|---|
| 1270 |     {  -660, 17249, 19350 },
 | 
|---|
| 1271 |     {  -660, 23099, 21299 },
 | 
|---|
| 1272 |     {  -600, 30900, 31649 },
 | 
|---|
| 1273 |     {  -600, 31800, 32340 },
 | 
|---|
| 1274 |     {  -540, 36959, 36000 },
 | 
|---|
| 1275 |     {  -540, 39360, 38399 },
 | 
|---|
| 1276 |     {  -480, 26400, 25650 },
 | 
|---|
| 1277 |     {  -480, 28650, 29280 },
 | 
|---|
| 1278 |     {  -420,   599, 42899 },
 | 
|---|
| 1279 |     {  -360, 20730, 19350 },
 | 
|---|
| 1280 |     {  -360, 21299, 20730 },
 | 
|---|
| 1281 |     {  -240,  8400,  9149 },
 | 
|---|
| 1282 |     {  -240, 10499, 11235 },
 | 
|---|
| 1283 |     {  -240, 32099, 32340 },
 | 
|---|
| 1284 |     {  -240, 33449, 32850 },
 | 
|---|
| 1285 |     {  -240, 33960, 33449 },
 | 
|---|
| 1286 |     {  -240, 40950, 42899 },
 | 
|---|
| 1287 |     {  -195, 28650, 27149 },
 | 
|---|
| 1288 |     {  -195, 28650, 29280 },
 | 
|---|
| 1289 |     {  -105,  4770,  5909 },
 | 
|---|
| 1290 |     {  -105,  5909,  6449 },
 | 
|---|
| 1291 |     {     0,  6449,  8310 },
 | 
|---|
| 1292 |     {     0,  8310,  8400 },
 | 
|---|
| 1293 |     {     0, 12960, 14549 },
 | 
|---|
| 1294 |     {     0, 27149, 26400 },
 | 
|---|
| 1295 |     {     0, 32099, 32850 },
 | 
|---|
| 1296 |     {    90, 12630, 12960 },
 | 
|---|
| 1297 |     {   105, 39000, 39600 },
 | 
|---|
| 1298 |     {   120,   599,  3600 },
 | 
|---|
| 1299 |     {   120, 33449, 33960 },
 | 
|---|
| 1300 |     {   120, 36540, 36959 },
 | 
|---|
| 1301 |     {   120, 36959, 37499 },
 | 
|---|
| 1302 |     {   120, 37499, 38399 },
 | 
|---|
| 1303 |     {   120, 38399, 38640 },
 | 
|---|
| 1304 |     {   120, 39600, 40950 },
 | 
|---|
| 1305 |     {   165, 38640, 39000 },
 | 
|---|
| 1306 |     {   180, 32850, 33165 },
 | 
|---|
| 1307 |     {   240, 28949, 29280 },
 | 
|---|
| 1308 |     {   240, 29280, 30150 },
 | 
|---|
| 1309 |     {   270, 33165, 32850 },
 | 
|---|
| 1310 |     {   330, 12600, 12630 },
 | 
|---|
| 1311 |     {   360, 37499, 37575 },
 | 
|---|
| 1312 |     {   375, 32850, 33591 },
 | 
|---|
| 1313 |     {   375, 33591, 33960 },
 | 
|---|
| 1314 |     {   420, 14265, 14549 },
 | 
|---|
| 1315 |     {   420, 14549, 16650 },
 | 
|---|
| 1316 |     {   420, 16650, 17249 },
 | 
|---|
| 1317 |     {   420, 17249, 19350 },
 | 
|---|
| 1318 |     {   450, 40950, 42899 },
 | 
|---|
| 1319 |     {   480, 24300, 27149 },
 | 
|---|
| 1320 |     {   510, 36255, 36540 },
 | 
|---|
| 1321 |     {   595,  3000,  3600 },
 | 
|---|
| 1322 |     {   595,  3600,  5909 },
 | 
|---|
| 1323 |     {   600,     0, 42899 },
 | 
|---|
| 1324 |     {   600, 11235, 11354 },
 | 
|---|
| 1325 |     {   600, 12479, 12600 },
 | 
|---|
| 1326 |     {   600, 14054, 14265 },
 | 
|---|
| 1327 |     {   600, 42899,     0 },
 | 
|---|
| 1328 |     {   660, 20730, 21360 },
 | 
|---|
| 1329 |     {   709, 37575, 37890 },
 | 
|---|
| 1330 |     {   709, 37890, 38010 },
 | 
|---|
| 1331 |     {   720, 11354, 12479 },
 | 
|---|
| 1332 |     {   720, 32850, 33591 },
 | 
|---|
| 1333 |     {   720, 33591, 33960 },
 | 
|---|
| 1334 |     {   750,     0,   255 },
 | 
|---|
| 1335 |     {   750, 10080, 10380 },
 | 
|---|
| 1336 |     {   750, 12600, 13500 },
 | 
|---|
| 1337 |     {   750, 38010, 38399 },
 | 
|---|
| 1338 |     {   769, 30150, 31050 },
 | 
|---|
| 1339 |     {   810, 13500, 14054 },
 | 
|---|
| 1340 |     {   840, 21360, 23099 },
 | 
|---|
| 1341 |     {   859, 31050, 32850 },
 | 
|---|
| 1342 |     {   900, 23099, 24300 },
 | 
|---|
| 1343 |     {   930,  8310,  8940 },
 | 
|---|
| 1344 |     {   930,  9599, 10080 },
 | 
|---|
| 1345 |     {   945, 35699, 36255 },
 | 
|---|
| 1346 |     {   945, 36255, 36450 },
 | 
|---|
| 1347 |     {   960,  8940,  9599 },
 | 
|---|
| 1348 |     {   960, 28650, 28949 },
 | 
|---|
| 1349 |     {   970, 34200, 35699 },
 | 
|---|
| 1350 |     {  1050, 11190, 11354 },
 | 
|---|
| 1351 |     {  1080, 10260, 10380 },
 | 
|---|
| 1352 |     {  1110, 33960, 34200 },
 | 
|---|
| 1353 |     {  1140,  5909,  6060 },
 | 
|---|
| 1354 |     {  1150, 34650, 35699 },
 | 
|---|
| 1355 |     {  1170, 37020, 37890 },
 | 
|---|
| 1356 |     {  1170, 37890, 38250 },
 | 
|---|
| 1357 |     {  1200, 14054, 14189 },
 | 
|---|
| 1358 |     {  1230, 36450, 37020 },
 | 
|---|
| 1359 |     {  1260,   255,  1530 },
 | 
|---|
| 1360 |     {  1264, 33960, 34650 },
 | 
|---|
| 1361 |     {  1275, 35699, 36450 },
 | 
|---|
| 1362 |     {  1290, 10589, 11190 },
 | 
|---|
| 1363 |     {  1320,   120,   255 },
 | 
|---|
| 1364 |     {  1320, 28650, 28859 },
 | 
|---|
| 1365 |     {  1369, 10260, 10589 },
 | 
|---|
| 1366 |     {  1410, 18900, 19350 },
 | 
|---|
| 1367 |     {  1410, 38250, 38550 },
 | 
|---|
| 1368 |     {  1425,  1290,  1530 },
 | 
|---|
| 1369 |     {  1500,  3000,  3450 },
 | 
|---|
| 1370 |     {  1530, 19350, 19800 },
 | 
|---|
| 1371 |     {  1530, 33960, 34664 },
 | 
|---|
| 1372 |     {  1560, 27149, 27329 },
 | 
|---|
| 1373 |     {  1560, 27329, 28859 },
 | 
|---|
| 1374 |     {  1560, 28859, 29100 },
 | 
|---|
| 1375 |     {  1560, 33060, 33960 },
 | 
|---|
| 1376 |     {  1620, 29100, 29399 },
 | 
|---|
| 1377 |     {  1635,  3450,  4350 },
 | 
|---|
| 1378 |     {  1650, 34664, 35400 },
 | 
|---|
| 1379 |     {  1680,     0,   120 },
 | 
|---|
| 1380 |     {  1680,  2534,  3000 },
 | 
|---|
| 1381 |     {  1680, 10589, 11759 },
 | 
|---|
| 1382 |     {  1680, 14189, 14400 },
 | 
|---|
| 1383 |     {  1680, 37650, 38550 },
 | 
|---|
| 1384 |     {  1680, 38550, 39119 },
 | 
|---|
| 1385 |     {  1710,  8550, 10589 },
 | 
|---|
| 1386 |     {  1710, 17789, 18900 },
 | 
|---|
| 1387 |     {  1710, 23850, 24300 },
 | 
|---|
| 1388 |     {  1710, 24300, 25124 },
 | 
|---|
| 1389 |     {  1740, 19800, 21360 },
 | 
|---|
| 1390 |     {  1740, 21360, 21600 },
 | 
|---|
| 1391 |     {  1740, 35400, 37650 },
 | 
|---|
| 1392 |     {  1800,  8100,  8550 },
 | 
|---|
| 1393 |     {  1800, 32715, 33060 },
 | 
|---|
| 1394 |     {  1800, 34664, 34844 },
 | 
|---|
| 1395 |     {  1840,  4350,  4890 },
 | 
|---|
| 1396 |     {  1840,  4890,  6060 },
 | 
|---|
| 1397 |     {  1840,  6060,  8100 },
 | 
|---|
| 1398 |     {  1845, 25124, 25259 },
 | 
|---|
| 1399 |     {  1879,     0, 42750 },
 | 
|---|
| 1400 |     {  1920, 22199, 23850 },
 | 
|---|
| 1401 |     {  1924, 42300, 42750 },
 | 
|---|
| 1402 |     {  1980,  1290,  2534 },
 | 
|---|
| 1403 |     {  1980, 27329, 27779 },
 | 
|---|
| 1404 |     {  2010, 13950, 14400 },
 | 
|---|
| 1405 |     {  2010, 14400, 16650 },
 | 
|---|
| 1406 |     {  2010, 16650, 17789 },
 | 
|---|
| 1407 |     {  2040,  4620,  4890 },
 | 
|---|
| 1408 |     {  2040, 19409, 19800 },
 | 
|---|
| 1409 |     {  2040, 21600, 22199 },
 | 
|---|
| 1410 |     {  2070, 41070, 41160 },
 | 
|---|
| 1411 |     {  2070, 41160, 42300 },
 | 
|---|
| 1412 |     {  2100,  2534,  3600 },
 | 
|---|
| 1413 |     {  2100, 39600, 41070 },
 | 
|---|
| 1414 |     {  2130, 11759, 13260 },
 | 
|---|
| 1415 |     {  2130, 13260, 13950 },
 | 
|---|
| 1416 |     {  2160,  8100,  8445 },
 | 
|---|
| 1417 |     {  2160, 39119, 39375 },
 | 
|---|
| 1418 |     {  2160, 39375, 39600 },
 | 
|---|
| 1419 |     {  2190, 34844, 34920 },
 | 
|---|
| 1420 |     {  2205,  3600,  4530 },
 | 
|---|
| 1421 |     {  2205,  4530,  4620 },
 | 
|---|
| 1422 |     {  2385, 16650, 17249 },
 | 
|---|
| 1423 |     {  2400, 18300, 19409 },
 | 
|---|
| 1424 |     {  2400, 27779, 28350 },
 | 
|---|
| 1425 |     {  2400, 28350, 29399 },
 | 
|---|
| 1426 |     {  2520, 16500, 17249 },
 | 
|---|
| 1427 |     {  2520, 17249, 18300 },
 | 
|---|
| 1428 |     {  2610, 34500, 34920 },
 | 
|---|
| 1429 |     {  2625, 39375, 39434 },
 | 
|---|
| 1430 |     {  2640, 39434, 39540 },
 | 
|---|
| 1431 |     {  2670, 12240, 13260 },
 | 
|---|
| 1432 |     {  2700, 21600, 21749 },
 | 
|---|
| 1433 |     {  2760,   300,  1560 },
 | 
|---|
| 1434 |     {  2820,  3000,  3675 },
 | 
|---|
| 1435 |     {  2820, 15150, 16500 },
 | 
|---|
| 1436 |     {  2850, 32715, 32819 },
 | 
|---|
| 1437 |     {  2850, 32819, 34349 },
 | 
|---|
| 1438 |     {  2850, 34349, 34500 },
 | 
|---|
| 1439 |     {  2880,   300, 42449 },
 | 
|---|
| 1440 |     {  2880,  1560,  2010 },
 | 
|---|
| 1441 |     {  2880, 42449,   300 },
 | 
|---|
| 1442 |     {  2910, 24300, 25259 },
 | 
|---|
| 1443 |     {  3000,  2010,  2460 },
 | 
|---|
| 1444 |     {  3000,  2460,  3000 },
 | 
|---|
| 1445 |     {  3000, 11700, 12240 },
 | 
|---|
| 1446 |     {  3000, 41999, 42449 },
 | 
|---|
| 1447 |     {  3030,  3675,  4530 },
 | 
|---|
| 1448 |     {  3030, 30600, 32819 },
 | 
|---|
| 1449 |     {  3090, 28350, 30600 },
 | 
|---|
| 1450 |     {  3150,  5999,  8445 },
 | 
|---|
| 1451 |     {  3150,  8445,  9000 },
 | 
|---|
| 1452 |     {  3150, 41160, 41999 },
 | 
|---|
| 1453 |     {  3165, 39540, 39839 },
 | 
|---|
| 1454 |     {  3180, 21749, 24300 },
 | 
|---|
| 1455 |     {  3180, 27450, 28350 },
 | 
|---|
| 1456 |     {  3240,  2460,  3060 },
 | 
|---|
| 1457 |     {  3240, 10980, 11700 },
 | 
|---|
| 1458 |     {  3289, 37080, 39540 },
 | 
|---|
| 1459 |     {  3300,  5700,  5999 },
 | 
|---|
| 1460 |     {  3300, 39839, 40170 },
 | 
|---|
| 1461 |     {  3330, 25259, 25950 },
 | 
|---|
| 1462 |     {  3330, 25950, 27450 },
 | 
|---|
| 1463 |     {  3330, 34349, 34950 },
 | 
|---|
| 1464 |     {  3360,  9000, 10980 },
 | 
|---|
| 1465 |     {  3375, 40170, 41160 },
 | 
|---|
| 1466 |     {  3420,  4379,  5580 },
 | 
|---|
| 1467 |     {  3420,  5580,  5700 },
 | 
|---|
| 1468 |     {  3450,  3060,  3434 },
 | 
|---|
| 1469 |     {  3480, 34950, 35580 },
 | 
|---|
| 1470 |     {  3510,  3434,  4379 },
 | 
|---|
| 1471 |     {  3544, 41160, 41700 },
 | 
|---|
| 1472 |     {  3570, 35580, 36000 },
 | 
|---|
| 1473 |     {  3570, 36000, 36966 },
 | 
|---|
| 1474 |     {  3600, 12600, 14340 },
 | 
|---|
| 1475 |     {  3600, 14340, 15150 },
 | 
|---|
| 1476 |     {  3655, 36966, 37080 },
 | 
|---|
| 1477 |     {  3690, 36000, 36750 },
 | 
|---|
| 1478 |     {  3720, 10980, 12600 },
 | 
|---|
| 1479 |     {  3780, 24300, 25950 },
 | 
|---|
| 1480 |     {  3780, 41700, 42449 },
 | 
|---|
| 1481 |     {  3840, 21600, 24300 },
 | 
|---|
| 1482 |     {  3960,   599, 42449 },
 | 
|---|
| 1483 |     {  3960, 25200, 28200 },
 | 
|---|
| 1484 |     {  3960, 42449,   599 },
 | 
|---|
| 1485 |     {  3990, 20399, 21600 },
 | 
|---|
| 1486 |     {  4020, 36750, 37200 },
 | 
|---|
| 1487 |     {  4080,  5580,  6150 },
 | 
|---|
| 1488 |     {  4200, 23400, 25200 },
 | 
|---|
| 1489 |     {  4200, 28200, 29759 },
 | 
|---|
| 1490 |     {  4410, 14340, 16500 },
 | 
|---|
| 1491 |     {  4410, 16500, 20399 },
 | 
|---|
| 1492 |     {  4500, 29759, 31500 },
 | 
|---|
| 1493 |     {  4500, 36300, 37200 },
 | 
|---|
| 1494 |     {  4620,   599,  6150 },
 | 
|---|
| 1495 |     {  4620,  6150,  6314 },
 | 
|---|
| 1496 |     {  4620, 20700, 23400 },
 | 
|---|
| 1497 |     {  4620, 24449, 23400 },
 | 
|---|
| 1498 |     {  4800,  6314,  9000 },
 | 
|---|
| 1499 |     {  4800, 19200, 20700 },
 | 
|---|
| 1500 |     {  4800, 26100, 24449 },
 | 
|---|
| 1501 |     {  4800, 31500, 32400 },
 | 
|---|
| 1502 |     {  4800, 36300, 37800 },
 | 
|---|
| 1503 |     {  4920, 16500, 19200 },
 | 
|---|
| 1504 |     {  5100,  9000, 14400 },
 | 
|---|
| 1505 |     {  5160, 32400, 37800 },
 | 
|---|
| 1506 |     {  5169, 37800, 41400 },
 | 
|---|
| 1507 |     {  5190, 14400, 26100 },
 | 
|---|
| 1508 |     {  5280,  6300, 14400 },
 | 
|---|
| 1509 |     {  5280, 41400,  6300 },
 | 
|---|
| 1510 | };
 | 
|---|
| 1511 | 
 | 
|---|
| 1512 | #define NDEC    ((int)(sizeof(dec_edges)/sizeof(dec_edges[0])))
 | 
|---|
| 1513 | 
 | 
|---|
| 1514 | /* given an epoch, give caller a list of all constellation edges.
 | 
|---|
| 1515 |  * return count if ok, else -1.
 | 
|---|
| 1516 |  * N.B. caller should *not* free what we return because we cache it here.
 | 
|---|
| 1517 |  */
 | 
|---|
| 1518 | int
 | 
|---|
| 1519 | cns_edges (double e, double **ra0p, double **dec0p, double **ra1p,
 | 
|---|
| 1520 | double **dec1p)
 | 
|---|
| 1521 | {
 | 
|---|
| 1522 | #define NEDGES  (NRA+NDEC)
 | 
|---|
| 1523 |         static double *ra0, *dec0, *ra1, *dec1;
 | 
|---|
| 1524 |         static double laste = -12345.6;         /* any bogus value */
 | 
|---|
| 1525 |         double mjd0;
 | 
|---|
| 1526 |         int i, n;
 | 
|---|
| 1527 | 
 | 
|---|
| 1528 |         /* if same epoch just return the same list */
 | 
|---|
| 1529 |         if (e == laste) {
 | 
|---|
| 1530 |             *ra0p = ra0;
 | 
|---|
| 1531 |             *dec0p = dec0;
 | 
|---|
| 1532 |             *ra1p = ra1;
 | 
|---|
| 1533 |             *dec1p = dec1;
 | 
|---|
| 1534 |             return (NEDGES);
 | 
|---|
| 1535 |         }
 | 
|---|
| 1536 | 
 | 
|---|
| 1537 |         /* get space for arrays, first time only */
 | 
|---|
| 1538 |         if (!ra0) {
 | 
|---|
| 1539 |             ra0 = (double *)malloc (NEDGES * sizeof(double));
 | 
|---|
| 1540 |             if (!ra0)
 | 
|---|
| 1541 |                 return (-1);
 | 
|---|
| 1542 |             dec0 = (double *)malloc (NEDGES * sizeof(double));
 | 
|---|
| 1543 |             if (!dec0) {
 | 
|---|
| 1544 |                 free ((void *)ra0);
 | 
|---|
| 1545 |                 return (-1);
 | 
|---|
| 1546 |             }
 | 
|---|
| 1547 |             ra1 = (double *)malloc (NEDGES * sizeof(double));
 | 
|---|
| 1548 |             if (!ra1) {
 | 
|---|
| 1549 |                 free ((void *)ra0);
 | 
|---|
| 1550 |                 free ((void *)dec0);
 | 
|---|
| 1551 |                 return (-1);
 | 
|---|
| 1552 |             }
 | 
|---|
| 1553 |             dec1 = (double *)malloc (NEDGES * sizeof(double));
 | 
|---|
| 1554 |             if (!dec1) {
 | 
|---|
| 1555 |                 free ((void *)ra0);
 | 
|---|
| 1556 |                 free ((void *)dec0);
 | 
|---|
| 1557 |                 free ((void *)ra1);
 | 
|---|
| 1558 |                 return (-1);
 | 
|---|
| 1559 |             }
 | 
|---|
| 1560 |         }
 | 
|---|
| 1561 | 
 | 
|---|
| 1562 |         /* prepare for precession from 1875 */
 | 
|---|
| 1563 |         cal_mjd (1, 1.0, 1875, &mjd0);
 | 
|---|
| 1564 | 
 | 
|---|
| 1565 |         /* build the constant-ra edge lists */
 | 
|---|
| 1566 |         n = 0;
 | 
|---|
| 1567 |         for (i = 0; i < NRA; i++) {
 | 
|---|
| 1568 |             ra0[n] = ra1[n] = hrrad((double)ra_edges[i].ra/1800.0);
 | 
|---|
| 1569 |             dec0[n] = degrad((double)ra_edges[i].dec0/60.0);
 | 
|---|
| 1570 |             dec1[n] = degrad((double)ra_edges[i].dec1/60.0);
 | 
|---|
| 1571 |             precess (mjd0, e, &ra0[n], &dec0[n]);
 | 
|---|
| 1572 |             precess (mjd0, e, &ra1[n], &dec1[n]);
 | 
|---|
| 1573 |             n++;
 | 
|---|
| 1574 |         }
 | 
|---|
| 1575 | 
 | 
|---|
| 1576 |         /* add the constant-dec edge lists */
 | 
|---|
| 1577 |         for (i = 0; i < NDEC; i++) {
 | 
|---|
| 1578 |             ra0[n] = hrrad((double)dec_edges[i].ra0/1800.0);
 | 
|---|
| 1579 |             ra1[n] = hrrad((double)dec_edges[i].ra1/1800.0);
 | 
|---|
| 1580 |             dec0[n] = dec1[n] = degrad((double)dec_edges[i].dec/60.0);
 | 
|---|
| 1581 |             precess (mjd0, e, &ra0[n], &dec0[n]);
 | 
|---|
| 1582 |             precess (mjd0, e, &ra1[n], &dec1[n]);
 | 
|---|
| 1583 |             n++;
 | 
|---|
| 1584 |         }
 | 
|---|
| 1585 | 
 | 
|---|
| 1586 |         /* sanity check the count */
 | 
|---|
| 1587 |         if (n != NEDGES) {
 | 
|---|
| 1588 |             printf ("cns_edges(): n=%d NEDGES=%ld\n", n, (long)NEDGES);
 | 
|---|
| 1589 |             abort();
 | 
|---|
| 1590 |         }
 | 
|---|
| 1591 |         
 | 
|---|
| 1592 |         /* ok */
 | 
|---|
| 1593 |         *ra0p = ra0;
 | 
|---|
| 1594 |         *dec0p = dec0;
 | 
|---|
| 1595 |         *ra1p = ra1;
 | 
|---|
| 1596 |         *dec1p = dec1;
 | 
|---|
| 1597 |         laste = e;
 | 
|---|
| 1598 |         return (NEDGES);
 | 
|---|
| 1599 | }
 | 
|---|
| 1600 | 
 | 
|---|
| 1601 | /* given an ra, dec and epoch return the list of constellation ids which
 | 
|---|
| 1602 |  * *may* fall within the given radius of said location.
 | 
|---|
| 1603 |  * return the number of ids.
 | 
|---|
| 1604 |  * ids[] need be no larger than 89.
 | 
|---|
| 1605 |  */
 | 
|---|
| 1606 | /* ARGSUSED */
 | 
|---|
| 1607 | int
 | 
|---|
| 1608 | cns_list (double ra, double dec, double e, double rad, int ids[])
 | 
|---|
| 1609 | {
 | 
|---|
| 1610 |         int i;
 | 
|---|
| 1611 | 
 | 
|---|
| 1612 |         /* TODO: this! */
 | 
|---|
| 1613 |         for (i = 0; i < NCNS; i++)
 | 
|---|
| 1614 |             ids[i] = i;
 | 
|---|
| 1615 |         return (NCNS);
 | 
|---|
| 1616 | }
 | 
|---|
| 1617 | 
 | 
|---|
| 1618 | /* epoch 2000 RA/Dec of constellation figure end-points.
 | 
|---|
| 1619 |  * drawcodes: 0=move to; 1=draw to; 2=draw to dashed; -1=end
 | 
|---|
| 1620 |  */
 | 
|---|
| 1621 | typedef struct {
 | 
|---|
| 1622 |     int drawcode;       /* draw code */
 | 
|---|
| 1623 |     float ra;           /* rads */
 | 
|---|
| 1624 |     float dec;          /* rads */
 | 
|---|
| 1625 | } ConFig;
 | 
|---|
| 1626 | 
 | 
|---|
| 1627 | /* array of malloced lists of ConFigs, same order as cns_namemap[]
 | 
|---|
| 1628 |  */
 | 
|---|
| 1629 | static ConFig *figmap[NCNS];
 | 
|---|
| 1630 | 
 | 
|---|
| 1631 | /* add one entry to the drawing code lists */
 | 
|---|
| 1632 | static void
 | 
|---|
| 1633 | addFigList (ConFig **new, int *nused, int c, int drawcode, double ra, double dec)
 | 
|---|
| 1634 | {
 | 
|---|
| 1635 |         ConFig *cp;
 | 
|---|
| 1636 | 
 | 
|---|
| 1637 |         new[c]= (ConFig*) realloc (new[c], (nused[c]+1)*sizeof(ConFig));
 | 
|---|
| 1638 |         cp = &new[c][nused[c]++];
 | 
|---|
| 1639 |         cp->drawcode = drawcode;
 | 
|---|
| 1640 |         cp->ra = (float)hrrad(ra);
 | 
|---|
| 1641 |         cp->dec = (float)degrad(dec);
 | 
|---|
| 1642 | }
 | 
|---|
| 1643 | 
 | 
|---|
| 1644 | /* load the given constellation definition file.
 | 
|---|
| 1645 |  * return 0 if ok else reason why not in msg[] and -1.
 | 
|---|
| 1646 |  */
 | 
|---|
| 1647 | int
 | 
|---|
| 1648 | cns_loadfigs (FILE *fp, char *msg)
 | 
|---|
| 1649 | {
 | 
|---|
| 1650 |         char line[1024];                /* one line from the file */
 | 
|---|
| 1651 |         char cname[1024];               /* constellation name */
 | 
|---|
| 1652 |         ConFig **new;                   /* array of ConFig[] for each cnstn */
 | 
|---|
| 1653 |         int *nused;                     /* number of ConFig[] for each cnstn */
 | 
|---|
| 1654 |         int c = -1;                     /* index, same as cns_namemap[] */
 | 
|---|
| 1655 |         int s = 0;                      /* status */
 | 
|---|
| 1656 | 
 | 
|---|
| 1657 |         /* init the temp lists */
 | 
|---|
| 1658 |         new = (ConFig **) calloc (NCNS, sizeof(ConFig*));
 | 
|---|
| 1659 |         nused = (int *) calloc (NCNS, sizeof(int));
 | 
|---|
| 1660 | 
 | 
|---|
| 1661 |         /* read the file */
 | 
|---|
| 1662 |         while (fgets (line, sizeof(line), fp)) {
 | 
|---|
| 1663 |             char rastr[64], decstr[64];
 | 
|---|
| 1664 |             char *lp;
 | 
|---|
| 1665 |             int code;
 | 
|---|
| 1666 | 
 | 
|---|
| 1667 |             /* skip leading/trailing whitespace, blank lines and # lines */
 | 
|---|
| 1668 |             for (lp = line+strlen(line)-1; lp>=line && isspace(*lp); --lp)
 | 
|---|
| 1669 |                 *lp = '\0';
 | 
|---|
| 1670 |             for (lp = line; isspace(*lp); lp++)
 | 
|---|
| 1671 |                 continue;
 | 
|---|
| 1672 |             if (*lp == '#' || *lp == '\0')
 | 
|---|
| 1673 |                 continue;
 | 
|---|
| 1674 | 
 | 
|---|
| 1675 |             /* ok, line looks interesting, look more carefully */
 | 
|---|
| 1676 |             if (sscanf (lp, "%d %s %s", &code, rastr, decstr) == 3) {
 | 
|---|
| 1677 |                 /* looks like a drawing line */
 | 
|---|
| 1678 |                 double ra, dec;
 | 
|---|
| 1679 | 
 | 
|---|
| 1680 |                 /* must be working on a current constellation */
 | 
|---|
| 1681 |                 if (c < 0) {
 | 
|---|
| 1682 |                     sprintf (msg,"Found coord line before first constellation");
 | 
|---|
| 1683 |                     s = -1;
 | 
|---|
| 1684 |                     break;
 | 
|---|
| 1685 |                 }
 | 
|---|
| 1686 | 
 | 
|---|
| 1687 |                 /* check draw code */
 | 
|---|
| 1688 |                 if (code < 0 || code > 2) {
 | 
|---|
| 1689 |                     sprintf (msg, "Bad draw code in %s: %d", cname, code);
 | 
|---|
| 1690 |                     s = -1;
 | 
|---|
| 1691 |                     break;
 | 
|---|
| 1692 |                 }
 | 
|---|
| 1693 | 
 | 
|---|
| 1694 |                 /* crack ra dec */
 | 
|---|
| 1695 |                 if (f_scansexa (rastr, &ra) < 0 || ra < 0 || ra >= 24) {
 | 
|---|
| 1696 |                     sprintf (msg, "Bad RA format in %s: %s", cname, rastr);
 | 
|---|
| 1697 |                     s = -1;
 | 
|---|
| 1698 |                     break;
 | 
|---|
| 1699 |                 }
 | 
|---|
| 1700 |                 if (f_scansexa (decstr, &dec) < 0 || dec < -90 || dec > 90) {
 | 
|---|
| 1701 |                     sprintf (msg, "Bad Dec format in %s: %s", cname, decstr);
 | 
|---|
| 1702 |                     s = -1;
 | 
|---|
| 1703 |                     break;
 | 
|---|
| 1704 |                 }
 | 
|---|
| 1705 | 
 | 
|---|
| 1706 |                 /* add to list */
 | 
|---|
| 1707 |                 addFigList (new, nused, c, code, ra, dec);
 | 
|---|
| 1708 | 
 | 
|---|
| 1709 |             } else {
 | 
|---|
| 1710 |                 /* finish previous list, if any */
 | 
|---|
| 1711 |                 if (c >= 0)
 | 
|---|
| 1712 |                     addFigList (new, nused, c, -1, 0.0, 0.0);
 | 
|---|
| 1713 | 
 | 
|---|
| 1714 |                 /* see if it's a recognized constellation name */
 | 
|---|
| 1715 |                 for (c = 0; c < NCNS; c++)
 | 
|---|
| 1716 |                     if (strcmp (lp, cns_namemap[c]+5) == 0)
 | 
|---|
| 1717 |                         break;
 | 
|---|
| 1718 |                 if (c == NCNS) {
 | 
|---|
| 1719 |                     sprintf (msg, "Unknown constellation: %s", lp);
 | 
|---|
| 1720 |                     s = -1;
 | 
|---|
| 1721 |                     break;
 | 
|---|
| 1722 |                 }
 | 
|---|
| 1723 |                 if (new[c]) {
 | 
|---|
| 1724 |                     sprintf (msg, "Duplicate definition for %s", lp);
 | 
|---|
| 1725 |                     s = -1;
 | 
|---|
| 1726 |                     break;
 | 
|---|
| 1727 |                 }
 | 
|---|
| 1728 | 
 | 
|---|
| 1729 |                 /* init its list */
 | 
|---|
| 1730 |                 strcpy (cname, lp);
 | 
|---|
| 1731 |                 new[c] = (ConFig *) malloc (1);     /* realloc seed */
 | 
|---|
| 1732 |             }
 | 
|---|
| 1733 |         }
 | 
|---|
| 1734 | 
 | 
|---|
| 1735 |         /* even if ok check we found all definitions */
 | 
|---|
| 1736 |         if (s == 0) {
 | 
|---|
| 1737 |             int l = 0;
 | 
|---|
| 1738 | 
 | 
|---|
| 1739 |             /* finish last list */
 | 
|---|
| 1740 |             addFigList (new, nused, c, -1, 0.0, 0.0);
 | 
|---|
| 1741 | 
 | 
|---|
| 1742 |             for (c = 0; c < NCNS; c++)
 | 
|---|
| 1743 |                 if (!new[c])
 | 
|---|
| 1744 |                     l += sprintf (msg+l, "%s ", cns_namemap[c]+5);
 | 
|---|
| 1745 |             if (l > 0) {
 | 
|---|
| 1746 |                 strcat (msg, ": no definition found");
 | 
|---|
| 1747 |                 s = -1;
 | 
|---|
| 1748 |             }
 | 
|---|
| 1749 |         }
 | 
|---|
| 1750 | 
 | 
|---|
| 1751 |         /* handle ok or error */
 | 
|---|
| 1752 |         if (s < 0) {
 | 
|---|
| 1753 |             /* trouble: free temp lists */
 | 
|---|
| 1754 |             for (c = 0; c < NCNS; c++)
 | 
|---|
| 1755 |                 if (new[c])
 | 
|---|
| 1756 |                     free (new[c]);
 | 
|---|
| 1757 |         } else {
 | 
|---|
| 1758 |             /* make temp lists persistent */
 | 
|---|
| 1759 |             for (c = 0; c < NCNS; c++) {
 | 
|---|
| 1760 |                 if (figmap[c])
 | 
|---|
| 1761 |                     free (figmap[c]);
 | 
|---|
| 1762 |                 figmap[c] = new[c];
 | 
|---|
| 1763 |             }
 | 
|---|
| 1764 |         }
 | 
|---|
| 1765 | 
 | 
|---|
| 1766 |         /* done with lists themselves regardless */
 | 
|---|
| 1767 |         free (new);
 | 
|---|
| 1768 |         free (nused);
 | 
|---|
| 1769 | 
 | 
|---|
| 1770 |         /* done */
 | 
|---|
| 1771 |         return (s);
 | 
|---|
| 1772 | }
 | 
|---|
| 1773 | 
 | 
|---|
| 1774 | /* given a constellation id and epoch, return arrays of ra[] and dec[]
 | 
|---|
| 1775 |  *   end-points precessed to the desired epoch that, if connected, will form the
 | 
|---|
| 1776 |  *   given constellation figure.
 | 
|---|
| 1777 |  * dcodes is 0 if the coord is a "move-to", 1 if a "draw-to" or 2 if a "draw-to
 | 
|---|
| 1778 |  *   as dotted-line".
 | 
|---|
| 1779 |  * return the total number of tripples or -1 if id is bogus.
 | 
|---|
| 1780 |  * the arrays need be no larger than 35 entries.
 | 
|---|
| 1781 |  */
 | 
|---|
| 1782 | int
 | 
|---|
| 1783 | cns_figure (int id, double e, double ra[], double dec[], int dcodes[])
 | 
|---|
| 1784 | {
 | 
|---|
| 1785 |         ConFig *cfp;
 | 
|---|
| 1786 | 
 | 
|---|
| 1787 |         if (id < 0 || id >= NCNS)
 | 
|---|
| 1788 |             return (-1);
 | 
|---|
| 1789 | 
 | 
|---|
| 1790 |         for (cfp = figmap[id]; cfp->drawcode >= 0; cfp++) {
 | 
|---|
| 1791 |             *ra = (double)cfp->ra;
 | 
|---|
| 1792 |             *dec = (double)cfp->dec;
 | 
|---|
| 1793 |             precess (J2000, e, ra, dec);
 | 
|---|
| 1794 |             ra++;
 | 
|---|
| 1795 |             dec++;
 | 
|---|
| 1796 |             *dcodes++ = cfp->drawcode;
 | 
|---|
| 1797 |         }
 | 
|---|
| 1798 | 
 | 
|---|
| 1799 |         return (cfp - figmap[id]);
 | 
|---|
| 1800 | }
 | 
|---|
| 1801 | 
 | 
|---|
| 1802 | /* For RCS Only -- Do Not Edit */
 | 
|---|
| 1803 | static char *rcsid[2] = {(char *)rcsid, "@(#) $RCSfile: constel.c,v $ $Date: 2006-11-22 13:53:28 $ $Revision: 1.4 $ $Name: not supported by cvs2svn $"};
 | 
|---|