| [2551] | 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>
 | 
|---|
| [2818] | 39 | #include <ctype.h>
 | 
|---|
| [2551] | 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.
 | 
|---|
| [2818] | 1619 |  * drawcodes: 0=move to; 1=draw to; 2=draw to dashed; -1=end
 | 
|---|
| [2551] | 1620 |  */
 | 
|---|
 | 1621 | typedef struct {
 | 
|---|
| [2818] | 1622 |     int drawcode;       /* draw code */
 | 
|---|
 | 1623 |     float ra;           /* rads */
 | 
|---|
 | 1624 |     float dec;          /* rads */
 | 
|---|
| [2551] | 1625 | } ConFig;
 | 
|---|
 | 1626 | 
 | 
|---|
| [2818] | 1627 | /* array of malloced lists of ConFigs, same order as cns_namemap[]
 | 
|---|
 | 1628 |  */
 | 
|---|
 | 1629 | static ConFig *figmap[NCNS];
 | 
|---|
| [2551] | 1630 | 
 | 
|---|
| [2818] | 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;
 | 
|---|
| [2551] | 1636 | 
 | 
|---|
| [2818] | 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 | }
 | 
|---|
| [2551] | 1643 | 
 | 
|---|
| [2818] | 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 */
 | 
|---|
| [2551] | 1656 | 
 | 
|---|
| [2818] | 1657 |         /* init the temp lists */
 | 
|---|
 | 1658 |         new = (ConFig **) calloc (NCNS, sizeof(ConFig*));
 | 
|---|
 | 1659 |         nused = (int *) calloc (NCNS, sizeof(int));
 | 
|---|
| [2551] | 1660 | 
 | 
|---|
| [2818] | 1661 |         /* read the file */
 | 
|---|
 | 1662 |         while (fgets (line, sizeof(line), fp)) {
 | 
|---|
 | 1663 |             char rastr[64], decstr[64];
 | 
|---|
 | 1664 |             char *lp;
 | 
|---|
 | 1665 |             int code;
 | 
|---|
| [2551] | 1666 | 
 | 
|---|
| [2818] | 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;
 | 
|---|
| [2551] | 1674 | 
 | 
|---|
| [2818] | 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;
 | 
|---|
| [2551] | 1679 | 
 | 
|---|
| [2818] | 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 |                 }
 | 
|---|
| [2551] | 1686 | 
 | 
|---|
| [2818] | 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 |                 }
 | 
|---|
| [2551] | 1693 | 
 | 
|---|
| [2818] | 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 |                 }
 | 
|---|
| [2551] | 1705 | 
 | 
|---|
| [2818] | 1706 |                 /* add to list */
 | 
|---|
 | 1707 |                 addFigList (new, nused, c, code, ra, dec);
 | 
|---|
| [2551] | 1708 | 
 | 
|---|
| [2818] | 1709 |             } else {
 | 
|---|
 | 1710 |                 /* finish previous list, if any */
 | 
|---|
 | 1711 |                 if (c >= 0)
 | 
|---|
 | 1712 |                     addFigList (new, nused, c, -1, 0.0, 0.0);
 | 
|---|
| [2551] | 1713 | 
 | 
|---|
| [2818] | 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 |                 }
 | 
|---|
| [2551] | 1728 | 
 | 
|---|
| [2818] | 1729 |                 /* init its list */
 | 
|---|
 | 1730 |                 strcpy (cname, lp);
 | 
|---|
 | 1731 |                 new[c] = (ConFig *) malloc (1);     /* realloc seed */
 | 
|---|
 | 1732 |             }
 | 
|---|
 | 1733 |         }
 | 
|---|
| [2551] | 1734 | 
 | 
|---|
| [2818] | 1735 |         /* even if ok check we found all definitions */
 | 
|---|
 | 1736 |         if (s == 0) {
 | 
|---|
 | 1737 |             int l = 0;
 | 
|---|
| [2551] | 1738 | 
 | 
|---|
| [2818] | 1739 |             /* finish last list */
 | 
|---|
 | 1740 |             addFigList (new, nused, c, -1, 0.0, 0.0);
 | 
|---|
| [2551] | 1741 | 
 | 
|---|
| [2818] | 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 |         }
 | 
|---|
| [2551] | 1750 | 
 | 
|---|
| [2818] | 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 |         }
 | 
|---|
| [2551] | 1765 | 
 | 
|---|
| [2818] | 1766 |         /* done with lists themselves regardless */
 | 
|---|
 | 1767 |         free (new);
 | 
|---|
 | 1768 |         free (nused);
 | 
|---|
| [2551] | 1769 | 
 | 
|---|
| [2818] | 1770 |         /* done */
 | 
|---|
 | 1771 |         return (s);
 | 
|---|
 | 1772 | }
 | 
|---|
| [2551] | 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++) {
 | 
|---|
| [2818] | 1791 |             *ra = (double)cfp->ra;
 | 
|---|
 | 1792 |             *dec = (double)cfp->dec;
 | 
|---|
| [2551] | 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 */
 | 
|---|
| [3111] | 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 $"};
 | 
|---|