solarPos žçÀÇ È²°æ, Áö½É °Å¸®¸¦ °è»êÇÑ´Ù
long solarPos(double *lng, long j, double d);
lng (Ãâ·Â) Ȳ°æ(´ÜÀ§, ¹ø) j (ÀÔ·Â) ¼¼°è Ç¥ÁؽúÎÅÍ È¯»êÇÑ À¯¸®¿ì½ºÀÏÀÇ Á¤¼ö ºÎºÐ d (ÀÔ·Â) ¼¼°è Ç¥ÁؽúÎÅÍ È¯»êÇÑ À¯¸®¿ì½ºÀÏÀÇ ¼Ò¼ö ºÎºÐ
Áö½É °Å¸®(Áö±¸¡¤Å¾ç Á߽ɰ£ÀÇ °Å¸®)(´ÜÀ§, ų·Î¡¤¹ÌÅÍ)
long solarPos(double *lng, long j, double d)
{
typedef struct { double k, a, b; } TBL;
static TBL l[16] = {
{ 1.9147, 35999.05, 267.52 }, { -0. 0048, 35999.05, 267.52 },
{ 0.0200, 71998.1, 265.1 }, { 0.0020, 32964.0, 158.0 },
{ 0.0018, 19.0, 159.0 }, { 0.0018, 445267.0, 208.0 },
{ 0.0015, 45038.0, 254.0 }, { 0.0013, 22519.0, 352.0 },
{ 0.0007, 65929.0, 45.0 }, { 0.0007, 3035.0, 110.0 },
{ 0.0007, 9038.0, 64.0 }, { 0.0006, 33718.0, 316.0 },
{ 0.0005, 155.0, 118.0 }, { 0.0005, 2281.0, 221.0 },
{ 0.0004, 29930.0, 48.0 }, { 0.0004, 31557.0, 161.0 }};
static TBL c[8] = {
{ 0.016706, 35999.05, 177.53 }, { -0. 000042, 35999.05, 177.53 },
{ 0.000139, 71998.0, 175.0 }, { 0.000031, 445267.0, 298.0 },
{ 0.000016, 32964.0, 68.0 }, { 0.000016, 45038.0, 164.0 },
{ 0.000005, 22519.0, 233.0 }, { 0.000005, 33718.0, 226.0 }};
int i;
double s, t, r;
t = (j + d - 2451545.0)/36525. 0;
s = 280.4659 + 36000.7695 * t;
for (i = 0; i < 16; i++) {
r = l[i]. a * t + l[i]. b;
s += l[i]. k * cos(r * 0.017453292519943);
}
while (s < 0) s += 360.0;
while (s >= 360.0) s-= 360.0;
*lng = s;
s = 1.000140;
for (i = 0; i < 8; i++) {
r = c[i]. a * t + c[i]. b;
s += c[i]. k * cos(r * 0.017453292519943);
}
return (long)(s * 149597870.0);
}
Áö±Ý »ç¿ëµÇ°í Àִ žç·ÂÀ¸·Î´Â, ¸Å³â 2¿ù 4 È÷Ÿġº½Àº Ȳ°æ 315µµ, 3¿ù 21ÀÏ ÃáºÐÀº 0 ¹ø, 6¿ù 22ÀÏ ÇÏÁö´Â 90¹ø, 8¿ù 8 È÷Ÿġ°¡À»Àº 180¹ø, 9¿ù 24ÀÏ ÃߺÐÀº 180¹ø, 12¿ù 22ÀÏ µ¿Áö´Â 270¹ø.
º»ÇÁ·Î±×·¥À» »ç¿ëÇϸé(ÀÚ), ¾î´À °¢ÀÇ Å¾çÀÇ È²°æ ¹× Áö±¸±îÁöÀÇ °Å¸®°¡ ¾È´Ù.
µ¡ºÙ¿© ÀϺ» ½Ã°£ JST¸¦ ¼¼°è Ç¥Áؽà UT·Î °íÄ¡·Á¸é , UT = JST - 9 ·Î °è»ê ÁÁ´Ù.