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 ·Î °è»ê ÁÁ´Ù.