[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 */
|
---|
[4017] | 1803 | static char *rcsid[2] = {(char *)rcsid, "@(#) $RCSfile: constel.c,v $ $Date: 2011-09-21 16:17:48 $ $Revision: 1.7 $ $Name: not supported by cvs2svn $"};
|
---|