constel.c

来自「c源码」· C语言 代码 · 共 738 行 · 第 1/2 页

C
738
字号
  9060L,   9240L, 132300L,  63L,
 69690L,  69840L, 131400L,  52L,
 16200L,  16890L, 129600L,  63L,
 78240L,  78750L, 129600L,  31L,
 78750L,  79200L, 129600L,  45L,
 23520L,  26520L, 127800L,   7L,
 26520L,  27900L, 127800L,  51L,
     0L,   7200L, 126000L,   0L,
 79200L,  82140L, 126000L,  45L,
 82140L,  82320L, 124200L,  45L,
 82320L,  84600L, 124200L,   0L,
  9240L,   9780L, 122400L,  63L,
 38820L,  39600L, 122400L,  83L,
 43200L,  44400L, 122400L,  30L,
 27900L,  33300L, 120600L,  51L,
 33300L,  35580L, 120600L,  49L,
  2580L,   5070L, 118800L,   0L,
 54660L,  55560L, 118800L,   8L,
 84600L,  85500L, 115500L,   0L,
 44400L,  47700L, 115200L,  30L,
 85500L,  86400L, 112800L,   0L,
 50250L,  50520L, 110700L,  30L,
  8700L,   9780L, 110400L,  81L,
  9780L,  16200L, 110400L,  63L,
 16200L,  17100L, 108000L,   7L,
 65430L,  69690L, 108000L,  52L,
 39600L,  43200L, 104400L,  83L,
 70800L,  75300L, 104400L,  31L,
 17100L,  21180L, 102600L,   7L,
 35580L,  37800L, 102600L,  49L,
 47700L,  50250L, 102600L,  30L,
     0L,    240L, 100800L,   0L,
  5070L,   6000L, 100800L,  81L,
 21180L,  23520L, 100800L,   7L,
 28380L,  28800L, 100800L,  38L,
 75300L,  78240L, 100800L,  31L,
 69330L,  70800L,  99000L,  31L,
  6900L,   8700L,  98100L,  81L,
 58200L,  58800L,  97200L,  26L,
 54300L,  54660L,  93600L,   8L,
 54660L,  58200L,  93600L,  26L,
 66120L,  67920L,  93600L,  52L,
 38700L,  39600L,  91800L,  49L,
 67920L,  69330L,  91800L,  52L,
  6000L,   6900L,  90000L,  81L,
  2580L,   3060L,  85500L,  67L,
 37800L,  38700L,  84600L,  49L,
 76500L,  77100L,  84600L,  88L,
 20520L,  21180L,  82200L,  78L,
   240L,    510L,  79200L,   0L,
 57300L,  57720L,  79200L,  74L,
 21180L,  22380L,  77400L,  38L,
 71400L,  72900L,  76500L,  88L,
 67920L,  69300L,  75900L,  88L,
   510L,   3060L,  75600L,   0L,
 72900L,  74040L,  73800L,  88L,
 28110L,  28380L,  72000L,  38L,
 74040L,  76500L,  70200L,  88L,
 69300L,  71400L,  69000L,  88L,
 11820L,  12120L,  68400L,   5L,
 67920L,  68400L,  66600L,  76L,
 20520L,  20760L,  64800L,  60L,
 22380L,  22710L,  63000L,  38L,
 68400L,  71400L,  58200L,  76L,
 17880L,  19200L,  57600L,  78L,
 57300L,  57900L,  57600L,  40L,
 71400L,  72900L,  56700L,  76L,
 16620L,  17880L,  55800L,  78L,
 19200L,  20160L,  55800L,  78L,
 46200L,  48600L,  54000L,  24L,
 62100L,  65700L,  51600L,  40L,
 42720L,  46200L,  50400L,  24L,
 27000L,  28110L,  48600L,  38L,
 60300L,  62100L,  46200L,  40L,
     0L,    510L,  45000L,  62L,
 20160L,  20760L,  45000L,  78L,
 25200L,  27000L,  45000L,  38L,
 76020L,  76800L,  45000L,  62L,
 22710L,  24960L,  43200L,  38L,
 65700L,  67920L,  43200L,  40L,
 75150L,  75780L,  42600L,  32L,
 75780L,  76020L,  42600L,  62L,
 41460L,  42720L,  39600L,  46L,
 22470L,  22710L,  36000L,  60L,
 24960L,  25200L,  36000L,  38L,
 28110L,  28530L,  36000L,  22L,
 85800L,  86400L,  36000L,  62L,
  6000L,  11820L,  35700L,   5L,
 72510L,  73080L,  30600L,  32L,
 48600L,  54300L,  28800L,   8L,
 81900L,  85800L,  27000L,  62L,
 28530L,  33300L,  25200L,  22L,
 33300L,  38700L,  25200L,  46L,
 65700L,  67184L,  22500L,  59L,
 67184L,  67920L,  22500L,   3L,
 75000L,  75150L,  21600L,  32L,
 25200L,  25260L,  19800L,  21L,
 65700L,  66330L,  16200L,  74L,
 57900L,  60300L,  14400L,  40L,
 65700L,  66330L,  10800L,  59L,
 77280L,  78000L,   9900L,  62L,
     0L,   7200L,   7200L,  67L,
 66900L,  67920L,   7200L,  74L,
 73080L,  75000L,   7200L,  32L,
 75000L,  76800L,   7200L,  35L,
 76800L,  77280L,   7200L,  62L,
 79200L,  81900L,   7200L,  62L,
 78000L,  79200L,   6300L,  62L,
 25260L,  25920L,   5400L,  21L,
 12900L,  16620L,      0L,  78L,
 16620L,  16800L,      0L,  60L,
 25920L,  29100L,      0L,  21L,
 52800L,  54300L,      0L,  86L,
 64200L,  65700L,      0L,  59L,
  9540L,  11820L,  -6300L,  17L,
 11820L,  12900L,  -6300L,  78L,
 54300L,  58560L, -11700L,  74L,
 16800L,  18300L, -14400L,  60L,
 21000L,  22470L, -14400L,  60L,
 64200L,  64680L, -14400L,  74L,
 65700L,  66900L, -14400L,  74L,
 66900L,  67920L, -14400L,   3L,
 81900L,  85800L, -14400L,  67L,
 38700L,  41460L, -21600L,  46L,
 41460L,  42600L, -21600L,  86L,
     0L,   1200L, -25200L,  67L,
 85800L,  86400L, -25200L,  67L,
 51300L,  52800L, -28800L,  86L,
 57300L,  58560L, -28800L,  59L,
 72000L,  73920L, -32400L,   3L,
 76800L,  78720L, -32400L,   4L,
 61800L,  64680L, -36000L,  59L,
 21000L,  29100L, -39600L,  55L,
 17700L,  18300L, -39600L,  36L,
 18300L,  21000L, -39600L,  60L,
 29100L,  30120L, -39600L,  42L,
 34500L,  38700L, -39600L,  75L,
 42600L,  46200L, -39600L,  86L,
 63300L,  63600L, -42000L,  59L,
 67920L,  72000L, -43320L,   3L,
 17400L,  17700L, -52200L,  36L,
 73920L,  76800L, -54000L,   4L,
 61800L,  65700L, -57600L,  74L,
 65700L,  67920L, -57600L,  73L,
 30120L,  30900L, -61200L,  42L,
 58560L,  58950L, -65700L,  59L,
 30900L,  32700L, -68400L,  42L,
 38700L,  39000L, -68400L,  27L,
 58560L,  58950L, -69300L,  59L,
 56400L,  57300L, -72000L,  48L,
 45300L,  46200L, -79200L,  29L,
 46200L,  51300L, -79200L,  86L,
 32700L,  35100L, -86400L,  42L,
  6000L,   9540L, -87780L,  17L,
  9540L,  13500L, -87780L,  36L,
 39000L,  42600L, -88200L,  27L,
 42600L,  45300L, -88200L,  29L,
 51300L,  53700L, -88200L,  48L,
 58560L,  60300L, -88500L,  59L,
     0L,   6000L, -91800L,  17L,
 76800L,  78720L, -91800L,  12L,
 78720L,  85800L, -91800L,   4L,
 85800L,  86400L, -91800L,  17L,
 35100L,  36900L, -95400L,  42L,
 16920L,  17400L, -98100L,  36L,
 17400L,  22020L, -98100L,  47L,
 72000L,  76800L, -100800L,  12L,
 36900L,  38100L, -105000L,  42L,
 45300L,  53700L, -106200L,  42L,
 53700L,  56400L, -106200L,  48L,
 56400L,  57600L, -106200L,  72L,
 16500L,  16920L, -108000L,  36L,
 60300L,  63360L, -108000L,  59L,
 63360L,  64200L, -108000L,  77L,
 38100L,  39000L, -112200L,  42L,
 22020L,  26520L, -118800L,  20L,
 44100L,  45300L, -118800L,  42L,
 39000L,  44100L, -126000L,  42L,
 12600L,  13500L, -129600L,  37L,
 30120L,  33720L, -132300L,  69L,
 15360L,  16500L, -133200L,  36L,
 64200L,  69000L, -133200L,  77L,
 76800L,  82800L, -133200L,  66L,
 82800L,  84000L, -133200L,  71L,
 10800L,  12600L, -142500L,  37L,
 33720L,  39600L, -143100L,   1L,
     0L,   6000L, -144000L,  71L,
  6000L,  10800L, -144000L,  37L,
 13920L,  15360L, -144000L,  36L,
 84000L,  86400L, -144000L,  71L,
 51000L,  53700L, -151200L,  15L,
 56400L,  57600L, -151200L,  50L,
 57600L,  59115L, -151200L,  72L,
 17400L,  18000L, -154800L,   9L,
 18000L,  23700L, -154800L,  23L,
 28800L,  30120L, -154800L,  68L,
 12300L,  13920L, -158400L,  36L,
 59115L,  64200L, -163800L,  72L,
 64200L,  69000L, -163800L,  25L,
 69000L,  73200L, -163800L,  77L,
 73200L,  76800L, -163800L,  54L,
 10800L,  12300L, -165600L,  36L,
 16200L,  17400L, -167400L,   9L,
 55200L,  56400L, -172800L,  50L,
     0L,   8400L, -173400L,  64L,
  9600L,  10800L, -176400L,  36L,
 14700L,  15360L, -176400L,  41L,
 15360L,  16200L, -176400L,   9L,
 76800L,  79200L, -180000L,  39L,
 21600L,  28800L, -182700L,  68L,
 28800L,  29400L, -182700L,  85L,
  8700L,   9600L, -183600L,  36L,
 13800L,  14700L, -183600L,  41L,
     0L,   6600L, -185400L,  64L,
 21600L,  22200L, -189000L,  13L,
 29400L,  30420L, -190800L,  85L,
 12600L,  13800L, -191400L,  41L,
 13800L,  14400L, -191400L,  33L,
     0L,   5700L, -192600L,  64L,
  7800L,   8700L, -194400L,  36L,
 16200L,  18000L, -194400L,  65L,
 54180L,  55200L, -194400L,  50L,
 30420L,  31800L, -196200L,  85L,
 22200L,  23400L, -198000L,  13L,
 42600L,  46200L, -198000L,  15L,
 51000L,  54180L, -198000L,  50L,
 54180L,  55200L, -198000L,  57L,
 14400L,  15600L, -203400L,  33L,
 31800L,  39600L, -203400L,  85L,
 39600L,  40500L, -203400L,  15L,
 63000L,  64800L, -205200L,   6L,
 64800L,  73200L, -205200L,  79L,
 79200L,  84000L, -205200L,  39L,
 11520L,  12600L, -207000L,  41L,
 18000L,  19800L, -207000L,  65L,
 23400L,  24600L, -208800L,  13L,
     0L,   4800L, -210600L,  64L,
  4800L,   7800L, -210600L,  36L,
 84000L,  86400L, -210600L,  64L,
 15600L,  16500L, -212400L,  33L,
 55200L,  59115L, -216000L,  57L,
 73200L,  76800L, -216000L,  44L,
 19800L,  21600L, -219600L,  65L,
 54600L,  55200L, -219600L,  19L,
 59115L,  59700L, -219600L,   6L,
 53700L,  54600L, -228900L,  19L,
 59700L,  60300L, -228900L,   6L,
 21600L,  24600L, -230400L,  65L,
 24600L,  32520L, -230400L,  13L,
 40500L,  42600L, -230400L,  15L,
 42600L,  46200L, -230400L,  28L,
 46200L,  52320L, -230400L,  15L,
 48600L,  49200L, -234000L,  19L,
 60300L,  60600L, -234000L,   6L,
  7800L,  11520L, -243000L,  41L,
 11520L,  16500L, -243000L,  70L,
 53100L,  53700L, -243000L,  19L,
 60600L,  63000L, -243000L,   6L,
 63000L,  64800L, -243000L,  61L,
 79200L,  84000L, -243000L,  82L,
 16500L,  23700L, -252000L,  33L,
 49200L,  53100L, -252000L,  19L,
 53100L,  61200L, -252000L,  80L,
     0L,   4800L, -270000L,  82L,
 12600L,  16500L, -270000L,  43L,
 23700L,  32520L, -270000L,  87L,
 32520L,  40500L, -270000L,  13L,
 40500L,  49200L, -270000L,  56L,
 64800L,  76800L, -270000L,  61L,
 76800L,  84000L, -270000L,  44L,
 84000L,  86400L, -270000L,  82L,
  2700L,   4800L, -273600L,  82L,
     0L,  12600L, -297000L,  43L,
 27600L,  49200L, -297000L,  18L,
 49200L,  64800L, -297000L,   2L,
 12600L,  27600L, -306000L,  53L,
     0L,  86400L, -324000L,  58L,
};


/* Return the constellation name corresponding to a given mean equatorial
   position P.  EPOCH is the precessional equinox and ecliptic date
   of P.  */

char *
whatconstel (pp, epoch)
double pp[];
double epoch;
{
  int i, k;
  double ra, dec, d;
  double p[3];

  for (i = 0; i < 3; i++)
    p[i] = pp[i];

  /* Precess from given epoch to J2000.  */
  precess (p, epoch, 1);
  /* Precess from J2000 to Besselian epoch 1875.0.  */
  precess (p, 2405889.25855, -1);
  d = p[0] * p[0] + p[1] * p[1] + p[2] * p[2];
  d = sqrt (d);
  ra = atan2 (p[1], p[0]) * (RTD * 3600. / 15.);
  if (ra < 0.0)
    ra += 86400.0;
  dec = asin (p[2] / d) * (RTD * 3600.);

    /* FIND CONSTELLATION SUCH THAT THE DECLINATION ENTERED IS HIGHER THAN
       THE LOWER BOUNDARY OF THE CONSTELLATION WHEN THE UPPER AND LOWER
       RIGHT ASCENSIONS FOR THE CONSTELLATION BOUND THE ENTERED RIGHT
       ASCENSION
    */
  for (i = 0; i < NBNDRIES; i++)
    {
      k = i << 2;
      if (ra >= bndries[k] && ra < bndries[k+1] && dec > bndries[k+2])
	{
	  k = (int) bndries[k+3];
	  return (constel[k]);
	}
    }
  return ("?? constellation not found");
}

#if 0
/* Test program  */
double J2000 = 2451545.0;
double STR = 4.8481368110953599359e-6;

test (r,d)
double r, d;
{
  double c, p[3], jd;

  d /= RTD;
  r *= 15.0/RTD;
  c = cos(d);
  p[2] = sin(d);
  p[0] = c * cos(r);
  p[1] = c * sin(r);
  jd = 2433282.423; /* 1950.0 Besselian epoch */
  printf ("%8.4f %9.4f %s\n", r, d, whatconstel (p, jd));
}


int
main()
{
  /*    The following is an example of the output of the program:
      RA =  9.0000 DEC =  65.0000  IS IN CONSTELLATION UMa
      RA = 23.5000 DEC = -20.0000  IS IN CONSTELLATION Aqr
      RA =  5.1200 DEC =   9.1200  IS IN CONSTELLATION Ori
      RA =  9.4555 DEC = -19.9000  IS IN CONSTELLATION Hya
      RA = 12.8888 DEC =  22.0000  IS IN CONSTELLATION Com
      RA = 15.6687 DEC = -12.1234  IS IN CONSTELLATION Lib
      RA = 19.0000 DEC = -40.0000  IS IN CONSTELLATION CrA
      RA =  6.2222 DEC = -81.1234  IS IN CONSTELLATION Men  */
  test (9.0, 65.0);
  test (23.5, -20.0);
  test (5.12, 9.12);
  test (9.4555, -19.9);
  test (12.8888, 22.0);
  test (15.6687, -12.1234);
  test (19.0, -40.0);
  test (6.2222, -81.1234);
  exit(0);
}
#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?