📄 astronomicalalgorithms.c
字号:
)
&& (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 + -