⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 astronomicalalgorithms.c

📁 天文算法
💻 C
📖 第 1 页 / 共 3 页
字号:
               )

             && (ShJulianDay(&doJD2,
                           (double) 1986, (double) 2, (double) 9,
                           (short) GREGORIAN) == 0
                )
            )

            {
            (void) fprintf(stdout,
                           "\npage 064 : ex. 7.d = %.0f",
                           doJD1 - doJD2);
            }


         if (ShJulianDay(&doJD1,
                           (double) 1991, (double) 7, (double) 11,
                           (short) GREGORIAN) == 0)
             {
             double doY  = (double) 0;
             double doM  = (double) 0;
             double doD  = (double) 0;
             double doH  = (double) 0;
             double dom  = (double) 0;
             double doS  = (double) 0;

             if (ShDateFromJulianDay(doJD1 + (double) 10000,
                                     &doY, &doM, &doD,
                                     &doH, &dom, &doS) == 0)
                {
                (void) fprintf(stdout,
                               "\npage 064 : D=%5.2f, M=%2.0f, Y=%2.0f\n",
                               doD, doM, doY);
                }
             }
         }
      #endif

      /**********************************************************************/

      #ifdef PAGE_065_TEST

      if (1)                                            /*lint !e506 !e774 */
         {
         short sh1   = (short) 0;
         short shDOW = (short) 0;

         sh1 = ShDayOfWeek(&shDOW, (double) 1954, (double) 6, (double) 30);

         if (sh1 == 0)
            {
            (void) fprintf(stdout, "\npage 065 : shDOW = %hd", shDOW);
            }
         else
            {
            (void) fprintf(stdout,
                           "\npage 065 : ShDayOfWeek returns %hd",
                           sh1);
            }
         }

      if (1)                                            /*lint !e506 !e774 */
         {
         short sh1   = (short) 0;
         short shDOY = (short) 0;

         sh1 = ShDayOfYear(&shDOY, (double) 1988, (double) 4, (double) 22);

         if (sh1 == 0)
            {
            (void) fprintf(stdout, "\npage 065 : ex. 7.g = %hd", shDOY);
            }
         else
            {
            (void) fprintf(stdout,
                           "\npage 065 : ShDayOfyear returns %hd",
                           sh1);
            }
         (void) fprintf(stdout, "%s", "\n");
         }
      #endif

      /**********************************************************************/
      #ifdef PAGE_066_TEST
      if (1)                                            /*lint !e506 !e774 */
         {
         short  sh1  = (short)  0;
         double doM  = (double) 0;
         double doD  = (double) 0;

         sh1 = ShDateFromYearDay((double) 113, (short) 1988, &doM, &doD);
         if (sh1 == 0)
            {
            (void) fprintf(stdout, "\npage 066 : D = %2.0f, M = %2.0f",
                           doD, doM);
            }
         else
            {
            (void) fprintf(stdout,
                           "\npage 066 : ShDateFromYearDay returns %hd",
                           sh1);
            }
         (void) fprintf(stdout, "%s", "\n");
         }
      #endif
      /**********************************************************************/

      #ifdef PAGE_067_TEST
      if (1)                                            /*lint !e506 !e774 */
         {
         short sh1    = (short)  0;
         short shYear = (short)  0;
         short shM    = (short) 0;
         short shD    = (short) 0;

         (void) fprintf(stdout, "%s", "\npage 067 : \n");
         for (shYear = (short) 1583 ; shYear <= 2303 ; shYear++)
            {
            sh1 = ShEasterSunday(shYear, &shM, &shD, GREGORIAN, CHRISTIAN);
            if (sh1 == 0)
               {
               (void) fprintf(stdout, "%04hd/%02hd/%02hd ", shYear, shM, shD);
               }
            else
               {
               (void) fprintf(stdout,
                              "\npage 067 : ShDateFromYearDay returns %hd",
                              sh1);
               }
            if (shYear % 7 == 0)
               {
               (void) fprintf(stdout, "%s", "\n");
               }
            }
         (void) fprintf(stdout, "%s", "\n");
         }
      #endif
      /**********************************************************************/

      #ifdef PAGE_082_TEST
      if (1)                                            /*lint !e506 !e774 */
         {
         double doTemp01 = DEGMINSEC2DECIMAL(+, 33, 21, 22);

         double b = (double)(  DO_EARTH_EQUATORIAL_RADIUS
                             * ((double) 1 - DO_EARTH_FLATTENING));
         (void) fprintf(stdout, "\npage 082 : b   = %8.3f", b);
         (void) fprintf(stdout, "\npage 082 : b/a = %10.8f",
                                (double)( b / DO_EARTH_EQUATORIAL_RADIUS));
         (void) fprintf(stdout, "\npage 082 : 1-f = %10.8f",
                                (double) (1 - DO_EARTH_FLATTENING));
         (void) fprintf(stdout, "\npage 082 : e   = %10.8f",
                                (double)

                                sqrt(   ((double) 2 * DO_EARTH_FLATTENING)
                                     -  (  DO_EARTH_FLATTENING
                                         * DO_EARTH_FLATTENING)));

         (void) fprintf(stdout, "\npage 082 : ex. 11.a phi          = %8.6f",
                                doTemp01);
         (void) fprintf(stdout, "\npage 082 :          RhoSinPhiTwo = %9.6f",
                                   DoRhoSinPhiTwo(doTemp01, (double) 1706));
         (void) fprintf(stdout, "\npage 082 :          RhoCosPhiTwo = %9.6f",
                                   DoRhoCosPhiTwo(doTemp01, (double) 1706));

         }
      #endif
      /**********************************************************************/
      #ifdef PAGE_165_TEST
      if (1)                                            /*lint !e506 !e774 */
         {
         short sh1 = (short) 0;

         double doJD     = (double) 2448908.5;
         double doalpha  = (double)       0;
         double dodelta  = (double)       0;
         short  shMethod = (short)        1;

         sh1 = ShSolarCoordinates(doJD, &doalpha, &dodelta, shMethod);
         if (sh1 != 0)
            {
            (void) fprintf(stdout,
                       "\npage 165 : ShSolarCoordinates() returns %hd",
                           sh1);
            }
         else
            {
            (void) fprintf(stdout,
                           "\npage 165 : doalpha = %f, dodelta = %f",
                           doalpha, dodelta);
            }
         }
      #endif
      /**********************************************************************/
      #ifdef PAGE_169_TEST
      if (1)                                            /*lint !e506 !e774 */
         {
         }
      #endif
      /**********************************************************************/
      #ifdef PAGE_353_TEST
      if (1)                                            /*lint !e506 !e774 */
         {
         short  sh1   = (short)  0;
         double doJDE = (double) 0;

         sh1 = ShMoonPhaseJDE(&doJDE, (double) 1977.13, (short) 0);
         if (sh1 == 0)
            {
            (void) fprintf(stdout, "\npage 353 : ex. 49.a JDE = %13.5f", doJDE);
            }
         else
            {
            (void) fprintf(stdout,
                   "\npage 353 : ex. 49.a ShMoonPhaseJDE returns %hd", sh1);
            }

         sh1 = ShMoonPhaseJDE(&doJDE, (double) 2044, (short) 3);
         if (sh1 == 0)
            {
            (void) fprintf(stdout, "\npage 353 : ex. 49.b JDE = %13.5f", doJDE);
            }
         else
            {
            (void) fprintf(stdout,
                   "\npage 353 : ex. 49.b ShMoonPhaseJDE returns %hd", sh1);
            }
         }

      if (1)                                            /*lint !e506 !e774 */
         {
         short  sh1                = (short)   0;
         short  sh2                = (short)   0;
         double doJDE              = (double)  0;
         double doY                = (double)  0;
         double doYear             = (double)  0;
         double doMonth            = (double)  0;
         double doDay              = (double)  0;
         double doHour             = (double)  0;
         double doMin              = (double)  0;
         double doSec              = (double)  0;
         double doPreviousNew[2]   = {(double) 0, (double) 0};
         unsigned long uloLunation = (unsigned long) 0;

         (void) fprintf(stdout, "\n\n%s\n",
                  "Lunation              New Moon                            First Quarter                          Full Moon                            Last Quarter              Lunation Duration");
         (void) fprintf(stdout, "%s\n",
                  "-------- ------------------------------------  ------------------------------------  ------------------------------------  ------------------------------------  -----------------");

         doY = (double) 1920;             /* min -2000 */
         while (doY < (double) 2020)      /* max +6000 */
            {
            if (uloLunation > 0)
               {
               (void) fprintf(stdout, "%05ld : " , uloLunation);
               uloLunation++;
               }
            else
               {
               (void) fprintf(stdout, "%8s", "");
               }
            for (sh1 = (short) 0 ; sh1 < 4 ; sh1++)
               {
               sh2 = ShMoonPhaseJDE(&doJDE, doY, sh1);
               if (sh2 != 0)
                  {
                  break;
                  }
               else
                  {
                  if (sh1 == 0)
                     {
                     doPreviousNew[0] = doPreviousNew[1];
                     doPreviousNew[1] = doJDE;
                     if (floor(doJDE) == 2423407)
                        {
                        uloLunation = (unsigned long) 1;
                        }
                     }
                  sh2 = ShDateFromJulianDay(doJDE, &doYear, &doMonth, &doDay,
                                                   &doHour, &doMin,   &doSec);
                  if (sh2 != 0)
                     {
                     break;
                     }
                  else
                     {
                     (void) fprintf(stdout,
                                   "%04.0f/%02.0f/%02.0f"
                                   " %02.0f:%02.0f:%02.0f (%14f)  "
                                   ,
                                   doYear, doMonth, doDay, doHour,
                                   doMin, doSec, doJDE);
                     }
                  }
               }
            (void) fprintf(stdout, "%9f\n",
                           (double) (doPreviousNew[0] > 0 ?
                                     (doPreviousNew[1] - doPreviousNew[0])
                                     : 0));

            doY += ((double) 29.530589 / (double) 365.25);
            }
         (void) fprintf(stdout, "%s", "\n");
         }
      }
   #endif

   return iReturnValue;
   }

/****************************************************************************/


/* eod of file */

⌨️ 快捷键说明

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