'절기'에 해당되는 글 7건

  1. 2008.11.11 대우주와 소우주
  2. 2008.07.07 24절기 근사식
  3. 2008.07.07 절기, 태양의 위치 계산
  4. 2008.07.06 시황경 계산
  5. 2008.05.28 절기-360(通)과 365(變)
  6. 2008.04.08 2.1.2. 일월(日月)
  7. 2008.03.28 당령과 사령


제목: 궁금증 글쓴이: 박모 날짜: 2006.07.27. 19:55:13

갑자기 궁금한게 있네요.

예를 들어서 7월 1일 태어난 아기, 7월 31일 태어날 아기...

그리고 오늘 태어난 아기.

역학에서 말하는 일년의 시작, 그리고 월의 시작이 지금 정확하다고

가정을 할경우에 ...

위에서 제가 말한 세 아기의 한달이 모두 똑 같나요 ?

흠 .. 질문이 애매 한데요

질문의 요지는 ...

각각의 아이들 자체적으로 어떤 흐름이 있을 것 같은데요.

그 흐름은 물론 정해진 주기로 올것 같구요.

이럴 경우 우리가 말하는 한달이 의미가 있는가 하는것 이거든요.

물론 큰 흐름의 영향을 반듯이 받겠지만 ...

간단히 말하면 ...

7월 1일 태어난 아기는 8월 1일이 정확히 한달 이겠지만

다른 아이들의 새로운 한달의 시작도 8월 1일인가

아니면 한달이 30일로 똑 떨어진다고 할때 태어난 날에서 31일째가

새로운 한달이 되는가 ...

이것이 궁금합니다.

질문을 한 제가 봐도 애매하네요.

뭔가 알듯 말듯 의문이 드는데 설명이 잘 안됩니다.

추가)

율려가 하루 동안 36분이라고 하지요

그 36분이 연속적으로 36분을 의미하나요 ?

그렇다면 하루중 어느 시점에 순수한 36분이 존재하게 되나요 ?




제목: 절기 글쓴이: 중도 날짜: 2006.07.28. 08:40:52

게시판만 보는 것도 미안하고, 제가 의견을 드리겠습니다.

360각도 원을 그려서 24등분하면 각각15도씩 나올 것입니다. 이것을 적도와 마주치는 곳을 춘분, 그 반대가 추분, 그리고 해가 가장 북쪽에 있을 때를 동지, 그 반대로 남쪽에 있을 때를 하지라고 합니다. 이렇게 각각15도에 배당된 것을 24절기라고 하고, 그 30각도인 반을 12기라고 합니다. 명리학에서는 30각도인 12기를 한 달로 정합니다. 말씀하신 날짜와는 관계가 없습니다.




제목: re: 절기 글쓴이: 박모 날짜: 2006.07.28. 13:00:10

답변 감사합니다 ^^

한가지만 더 여쭙 겠습니다.

제가 궁금한것은 현재의 절기가 어떻게 나누어 지는가가 아니고...

맞는 질문인지 모르겠지만 예를 들어서

하지에 태어난 아기와 동지에 태어난 아기가 있습니다.

내가 바라보는 아기와 그 들이 바라보는 저나 똑같은 오늘 2006/07/08 에

존재하며 살고 있습니다.

그리고 오늘이 특정 절기 또는 특정한 날(X라고 할 경우)이 될 수 있겠지요.

그것 말구요 ...

우리들 내부에 소우주가 있겠지요.

그 각각의 소우주의 절기도 위에서 언급한 X 인가 하는것 입니다.

그러니까 큰 존재의 절기가 X 일때 태어난 날이 각각 다른 모든 존재들의

소우주도 정확히 X일까 ...

아니면 시작이 다르니 절기도 달라지는지 ...

소우주의 주관적인 흐름 또는 절기는 없는가 ?

이것이 많이 궁금합니다.

수고하세요




제목: 대우주와 소우주 글쓴이: 안초 날짜: 2006.07.28. 14:02:12

질문 내용이 대우주와 소우주의 관계인 것 같습니다.

생명에는 두 종류가 있습니다. 대우주에 따라 똑같이 움직이는 생명과 대우주에 준하지만 나름대로 독자적으로 움직이는 생명 두 종류가 있습니다. 황제내경에서는 전자를 氣立, 후자를 神機라고 구분합니다.

결론부터 맺으면, 소우주의 독자적인 주기는 있습니다.

그렇다고 독자적인 주기라고는 하지만 결코 대우주와 무관한 주기는 아닙니다. 무슨 말인지 이해하시기 힘들겠지만 예를 들면 쉽게 이해하실 수 있습니다. 임신한 아기와 엄마의 관계를 생각하시면 됩니다. 아기는 분명 독자적이지만 그렇다고 엄마의 주기를 떠났다고 할 수 없습니다. 또한 탯줄을 끊고 세상에 나와서도 처음부터 독자적일 수는 없고 점점 멀어질 뿐입니다. 또한 엄마의 주기가 늙어 사라져도 성장한 아기가 엄마와 완전히 독립되었다고 말할 수 없습니다.

인간은 독자적인 우주를 구축하였으므로 신기라고 부르지만, 그렇다고 완전 무관할 수 없습니다. 그래서 대우주의 주기와 소우주의 주기(4주)로 운명을 판단합니다.

그리고 36은 이치이지, 현상은 아닙니다.

360회전하는 그 중심이 36인데 이것이 율려입니다. 따라서 어떠한 주기든 회전하는 것은 결국 360각도로 회전하기 마련인데 그 중심인 36을 율려라고 합니다.

물론 위 36을 해, 달의 하루 주기에서도 찾을 수 있습니다.

해를 중심으로 하루의 중심을 찾아보면 밤과 낮이 갈라지는 일출일몰입니다. 실제로 일출일몰시 각각 18도 내에는 해를 직접 볼 수 있을 뿐 아니라 다른 때와는 다릅니다. 저는 이 시간을 하루의 율려라고 보고 수련을 하고 있으며, 실제로 느낄 수 있습니다.

2006.7.28. 안초




제목: 감사합니다...(내용없슴)

글쓴이: 박모 날짜: 2006.07.28. 14:55:28


Posted by 무중 이승수 지지닷컴


<?php
##
## this file name is 'class.solar.php'
##
## solar object -- get sun position or 24 solar terms
##
## [author]
##  - Chilbong Kim, <san2(at)linuxchannel.net>
##  - http://linuxchannel.net/
##
## [changes]
##  - 2003.09.08 : bug fixed
##  - 2003.09.06 : new build
##
## [근사식에 대한 신뢰]
##  - 표준편차 : 1289.7736 = 21.5 minutes (standard deviation)
##  - 평균오차 : 817.57409541246 = 13.6 minutes
##  - 최대오차 : +4102.7340(68.4 minutes), -4347.2395(72.5 minutes)
##
## [근사식으로 계산한 24절기 실제 오차] 1902 ~ 2037 년
##  - 표준편차 : 1122.1921 = 18.7 분
##  - 평균오차 : +686.08382175161 = +11.4 분
##  - 최대오차 : +4297.252300024(71.6 분), -4278.048699975(71.3 분)
##  - 최소오차 : +0.16999998688698(0초)
##
## [근사식 + 년도 보정으로 계산한 24절기 실제 오차] 1902 ~ 2037 년
##  - 표준편차 : 450.8534 = 7.5 분
##  - 평균오차 : +305.38638890903 = 5.0 분
##  - 최대오차 : +3028.2343000174 = 50.5 분, -1982.9391000271 = 33.1 분
##  - 최소오차 : +0.0085000991821289 = 0 초
##
## [valid date]
##  - 1902.01.01 00:00:00 <= utime <= 2037.12.31 23:59:59
##
## [download & online source view]
##  - http://ftp.linuxchannel.net/devel/php_solar/
##
## [demo]
##  - http://linuxchannel.net/gaggle/solar.php
##
## [references]
##  - http://cgi.chollian.net/~kohyc/
##  - http://user.chollian.net/~kimdbin/
##  - http://user.chollian.net/~kimdbin/re/calendar.html
##  - http://user.chollian.net/~kimdbin/re/suncoord.html
##  - http://user.chollian.net/~kimdbin/qna/al138.html
##  - http://ruby.kisti.re.kr/~manse/contents-3.html
##  - http://ruby.kisti.re.kr/~anastro/sub_index.htm
##  - http://www-ph.postech.ac.kr/~obs/lecture/lec1/elementary/nakedeyb.htm
##  - http://ruby.kisti.re.kr/~anastro/calendar/etime/ETime.html
##  - http://www.sundu.co.kr/5-information/5-3/5f3-3-5-04earth-1.htm
##  - http://www-ph.postech.ac.kr/~obs/lecture/lec1/elementary/nakedeya.htm
##  - http://upgradename.com/calm.php
##  - http://aa.usno.navy.mil/faq/docs/SunApprox.html
##  - http://aa.usno.navy.mil/data/docs/JulianDate.html
##
## [usage]
##
## [example]
##  $sun = array();
##  $terms = solar::terms(date('Y'),1,12,&$sun);
##  print_r($terms);
##  print_r($sun);
##  print_r(solar::sun(time()));
##

class solar
{
  ## check solar terms in today or tomorrow
  ##
  function &solar($utime=0, $GMT=FALSE)
  {
 return solar::today($utime,$GMT);
  }

  function &today($utime=0, $GMT=FALSE)
  {
 if(func_num_args() < 1) $utime = time();
 if($GMT) $utime -= 32400;

 list($year,$moon,$moonday) = explode(' ',date('Y n nd',$utime));

 $terms = solar::terms($year,$moon,0);

 if($term = $terms[$moonday])
 {
  $str = '오늘은 <B>'.$term.'</B>입니다.';
 }
 else if($term = $terms[date('nd',$utime+86400)])
 {
  $str = '내일은 <B>'.$term.'</B>입니다.';
 }

 return $str;
  }

  ## get sun position at unix timestamp
  ##
  ## [limit]
  ##  - mktime(0,0,0,1,1,1902) < $utime < mktime(23,59,59,12,31,2037)
  ##
  ## [study]
  ##  - w = 23.436
  ##  - tan RA = (sin L * cos w - tan e * sin w ) / cos L
  ##  - sin d = (sin e * cos w) + (cos e * sin w * sin L)
  ##
  ## [example]
  ##  - print_r(solar::sun(mktime(  10,0,0,3,21,2003)  ));
  ##  - print_r(solar::sun(mktime(10-9,0,0,3,21,2003),1)); // same as
  ##
  function &sun($utime, $GMT=FALSE)
  {
 static $L=0, $D = 0, $JD = 0;
 static $deg2rad = array();

 if($utime<-2145947400 || $utime>2145884399)
 {
  echo "\n".'error: invalid input '.$utime.
  ', 1902.01.01 00:00:00 <= utime <= 2037.12.31 23:59:59'."\n";
  return -1;
 }

 list($L,$atime) = solar::sunl($utime,$GMT,&$D,&$JD,&$deg2rad);

 ## Sun's ecliptic, in degress
 ##
 $e = sprintf('%.10f',23.439 - (0.00000036*$D)); // degress

 $cosg = cos($deg2rad['g']); // degress
 $cos2g = cos($deg2rad['2g']); // degress

 ## R == AU (sun ~ earth)
 ## The distance of the Sun from the Earth, R, in astronomical units (AU)
 ##
 $R = sprintf('%.10f',1.00014 - (0.01671*$cosg) - (0.00014*$cos2g));

 ## convert
 ##
 $deg2rad['e'] = deg2rad($e); // radian
 $deg2rad['L'] = deg2rad($L); // radian

 $cose = cos($deg2rad['e']); // degress
 $sinL = sin($deg2rad['L']); // degress
 $cosL = cos($deg2rad['L']); // degress
 $sine = sin($deg2rad['e']); // degress

 ## the Sun's right ascension, RA, and declination, d
  ##
 $tanRA = sprintf('%.10f',$cose * $sinL / $cosL); // degress
 $sind = sprintf('%.10f',$sine * $sinL); // degress

 //$RA = sprintf('%.10f',rad2deg(atan($tanRA))+180);
 $RA = sprintf('%.10f',rad2deg(atan($tanRA)));
 $RA = solar::deg2valid($RA);
 $d = sprintf('%.10f',rad2deg(asin($sind))); // Sun's declination, degress

 $solartime = solar::deg2solartime($L);
 $daytime = solar::deg2daytime($RA);

 //if(!($L1=round($L) % 15))
 //{
 // $idx = $L1 / 15;
 // list($hterms) = solar::gterms();
 //}

 ## all base degress or decimal
 ##
  return array
 (
 'JD' => $JD, /*** Julian Date ***/
 'L'  => $L, /*** Sun's geocentric apparent ecliptic longitude ***/
 'e'  => $e, /*** Sun's ecliptic ***/
 'R'  => $R, /*** Sun from the Earth, astronomical units (AU) ***/
 'RA' => $RA, /*** Sun's right ascension ***/
 'd'  => $d, /*** Sun's declination ***/
 'stime'  => $solartime,  /*** solar time ***/
 'dtime'  => $daytime,  /*** day time ***/
 'atime'  => $atime,  /*** append time for integer degress **/
 'utime'  => $utime,  /*** unix timestamp ***/
 'date'   => date('D, d M Y H:i:s T',$utime), /*** KST date ***/
 'gmdate' => gmdate('D, d M Y H:i:s T',$utime), /*** GMT date ***/
 '_L'  => solar::deg2angle($L),
 '_e'  => solar::deg2angle($e,1),
 '_RA' => solar::deg2angle($RA),
 '_d'  => solar::deg2angle($d,1),
 '_stime' => solar::time2htime($solartime),
 '_dtime' => solar::time2htime($daytime),
 '_atime' => solar::time2htime($atime,TRUE),
 );
  }

  function &sunl($utime, $GMT=FALSE, $D=0, $JD=0, $deg2rad=array())
  {
 if($GMT) $utime += 32400; // GMT to KST

 ## D -- get the number of days from base JD
 ## D = JD(Julian Date) - 2451545.0, base JD(J2000.0)
 ##
 ## base position (J2000.0), 2000-01-01 12:00:00, UT
 ## as   mktime(12,0,0-64,1,1,2000) == 946695536 unix timestamp at KST
 ## as gmmktime(12,0,0-64,1,1,2000) == 946727936 unix timestamp at GMT
 ##
 $D = $utime - 946727936; // number of time
 $D = sprintf('%.10f',$D/86400); // float, number of days
 $JD = sprintf('%.10f',$D+2451545.0); // float, Julian Date

 $g = sprintf('%.10f',357.529 + (0.98560028 * $D));
 $q = sprintf('%.10f',280.459 + (0.98564736 * $D));

 ## fixed
 ##
 $g = solar::deg2valid($g); // to valid degress
 $q = solar::deg2valid($q); // to valid degress

 ## convert
 ##
 $deg2rad = array();
 $deg2rad['g'] = deg2rad($g); // radian
 $deg2rad['2g'] = deg2rad($g*2); // radian

 $sing = sin($deg2rad['g']); // degress
 $sin2g = sin($deg2rad['2g']); // degress

 ## L is an approximation to the Sun's geocentric apparent ecliptic longitude
 ##
 $L = sprintf('%.10f',$q + (1.915 * $sing) + (0.020*$sin2g));
 $L = solar::deg2valid($L); // degress
 $atime = solar::deg2solartime(round($L)-$L); // float

 return array($L,$atime); // array, float degress, float seconds
  }

  /***
  function &sinl($f, $v)
  {
 return sin(deg2rad($f+$v));
  }

  ## http://linux-sarang.net/board/?p=read&table=qa&no=198189
  ## -2 < sin x < + 2
  ## sin (77 + L) ==> (77 + L - 1.915 sin (77 + L))
  ##
  function &l2d($L)
  {
 $L = (int)$L; // 0 <= $L <= 345
 //$sinl  = sin(deg2rad(77+$L));
 $sinl = solar::sinl($L,77);
 //$sinl = solar::sinl($L-(1.915)*$sinl,77);

 //$sin2l = sin(deg2rad(154+($L*2)));
 $sin2l = solar::sinl($L*2,154);
 $sin2l = solar::sinl($L-(0.020*$L*2*$sin2l),154);
 $sin2l = solar::sinl($L-(0.020*$L*2*$sin2l),154);

 $D = sprintf('%.10f',
  ($L - 280.459 - (1.915 * $sinl) - (0.020 * $sin2l)) / 0.98564736);

 return $D; // float
  }

  function &l2jd($L)
  {
 $D  = solar::l2d($L);
 $JD = sprintf('%.10f',$D+2451545.0);
 //$JD = $JD + ($i * 360 / 0.98564736)

 return $JD; // float
  }

  function &l2utime($year, $L, $GMT=FLASE)
  {
 $i = (int)$year - 2000 + 1;
 $D = solar::l2d($L);

 $utime = ($D * 86400) + 946727936 + (31556925.216 * $i);
 $utime = round($utime);

 return $utime - ($GMT ? 32400 : 0); // integer
  }
  ***/

  ## 1 hour == 15 degress
  ## 1 degress == 4 minute == 240 seconds
  ##
  function &deg2daytime($deg)
  {
 return sprintf('%.4f',$deg*240); // seconds
  }

  ## 1 solar year == 365.242190 days == 31556925.216 seconds
  ## 1 degress == 31556925.216 seconds / 360 degress == 87658.1256 seconds
  ##
  function &deg2solartime($deg)
  {
 return sprintf('%.4f',$deg*87658.1256); // seconds
  }

  function &deg2angle($deg, $singed=FALSE)
  {
 if($singed) $singed = '+';
 if($deg <0) { $singed = '-'; $deg = abs($deg); }

 $time = sprintf('%.4f',$deg*3600);
 $degr = (int)$deg.chr(161).chr(198); //sprintf('%d',$deg);
 $time = sprintf('%.4f',$time-($degr*3600)); // fmod
 $mins = sprintf('%02d',$time/60).chr(161).chr(199);
 $secs = sprintf('%.4f',$time-($mins*60)).chr(161).chr(200); // fmod

 return $singed.$degr.$mins.$secs;
  }

  function &deg2valid($deg)
  {
 if($deg <= 360 && $deg >=0) return $deg;

 while($deg > 360) $deg = sprintf('%.10f',$deg - 360);
 while($deg <   0) $deg = sprintf('%.10f',$deg + 360);

 return (float)$deg; // float degress
  }

  function &moon2valid($moon)
  {
 //$moon = max($moon,1);
 //$moon = min($moon,12);

 if($moon < 1) $moon = 1;
 else if($moon > 12) $moon = 12;

 return (int)$moon;
  }

  function &time2htime($time, $singed=FALSE)
  {
 if($singed) $singed = '+';
 if($time<0) { $singed = '-'; $time = abs($time); }

 $days = (int)($time/86400); //sprintf('%03d',$time/86400);
 $time = sprintf('%.4f',$time-($days*86400)); // fmod
 $hour = sprintf('%02d',$time/3600);
 $time = sprintf('%.4f',$time-($hour*3600)); // fmod
 $mins = sprintf('%02d',$time/60);
 $secs = sprintf('%.4f',$time-($mins*60)); // fmod

 return $singed.$days.' '.$hour.' '.$mins.' '.$secs;
  }

  function &gterms()
  {
 ## mktime(7+9,36,19-64,3,20,2000), 2000-03-20 16:35:15(KST)
 ##
 if(!defined('__SOLAR_START__'))
 {
  define('__SOLAR_START__',953537715); // start base unix timestamp
  define('__SOLAR_TYEAR__',31556940); // tropicalyear to seconds
  define('__SOLAR_BYEAR__',2000); // start base year
 }

 $hterms = array
 (
  '소한','대한','입춘','우수','경칩','춘분','청명','곡우',
  '입하','소만','망종','하지','소서','대서','입추','처서',
  '백로','추분','한로','상강','입동','소설','대설','동지'
 );

 $tterms = array
 (
  -6418939, -5146737, -3871136, -2589569, -1299777,        0,
   1310827,  2633103,  3966413,  5309605,  6660762,  8017383,
   9376511, 10735018, 12089855, 13438199, 14777792, 16107008,
  17424841, 18731368, 20027093, 21313452, 22592403, 23866369
 );

 return array($hterms,$tterms);
  }

  function &tterms($year)
  {
 $addstime = array
 (
  1902=> 1545, 1903=> 1734, 1904=> 1740, 1906=>  475, 1907=>  432,
  1908=>  480, 1909=>  462, 1915=> -370, 1916=> -332, 1918=> -335,
  1919=> -263, 1925=>  340, 1927=>  344, 1928=> 2133, 1929=> 2112,
  1930=> 2100, 1931=> 1858, 1936=> -400, 1937=> -400, 1938=> -342,
  1939=> -300, 1944=>  365, 1945=>  380, 1946=>  400, 1947=>  200,
  1948=>  244, 1953=> -266, 1954=> 2600, 1955=> 3168, 1956=> 3218,
  1957=> 3366, 1958=> 3300, 1959=> 3483, 1960=> 2386, 1961=> 3015,
  1962=> 2090, 1963=> 2090, 1964=> 2264, 1965=> 2370, 1966=> 2185,
  1967=> 2144, 1968=> 1526, 1971=> -393, 1972=> -430, 1973=> -445,
  1974=> -543, 1975=> -393, 1980=>  300, 1981=>  490, 1982=>  400,
  1983=>  445, 1984=>  393, 1987=>-1530, 1988=>-1600, 1990=> -362,
  1991=> -366, 1992=> -400, 1993=> -449, 1994=> -321, 1995=> -344,
  1999=>  356, 2000=>  480, 2001=>  483, 2002=>  504, 2003=>  294,
  2007=> -206, 2008=> -314, 2009=> -466, 2010=> -416, 2011=> -457,
  2012=> -313, 2018=>  347, 2020=>  257, 2021=>  351, 2022=>  159,
  2023=>  177, 2026=> -134, 2027=> -340, 2028=> -382, 2029=> -320,
  2030=> -470, 2031=> -370, 2032=> -373, 2036=>  349, 2037=>  523,
 );

 $addttime = array
 (
  1919=> array(14=>-160), 1939=> array(10=> -508),
  1953=> array( 0=> 220), 1954=> array( 1=>-2973),
  1982=> array(18=> 241), 1988=> array(13=>-2455),
  2013=> array( 6=> 356), 2031=> array(20=>  411),
  2023=> array( 0=>  399, 11=>-571),
 );

 return array($addstime[$year],$addttime[$year]);
  }

  ## get the 24 solar terms, 1902 ~ 2037
  ##
  ## [usage]
  ##  - array solar::terms(int year [, int smoon [, int length [, array &sun]]] )
  ##
  function &terms($year=0, $smoon=1, $length=12, $sun=array())
  {
 $year  = (int)$year;
 $sun = array();
 $smoon = (int)$smoon;
 $length = (int)$length;
 $times = array();

 if(!$year) $year = date('Y');
 if($year<1902 || $year>2037)
 {
  echo "\n".'error: invalid input '.$year.
  ', 1902 <= year <= 2037'."\n";
  return -1;
 }

 list($hterms,$tterms) = solar::gterms();
 list($addstime,$addttime) = solar::tterms($year);

 ## mktime(7+9,36,19-64,3,20,2000), 2000-03-20 16:35:15(KST)
 ##
 $start = __SOLAR_START__; // start base unix timestamp
 $tyear = __SOLAR_TYEAR__; // tropicalyear to seconds
 $byear = __SOLAR_BYEAR__; // start base year

 $start += ($year - $byear) * $tyear;

 if($length < -12) $length = -12;
 else if($length > 12) $length = 12;

 $smoon = solar::moon2valid($smoon);
 $emoon = solar::moon2valid($smoon+$length);

 $sidx =  (min($smoon,$emoon) - 1) * 2;
 $eidx = ((max($smoon,$emoon) - 1) * 2) + 1;

 for($i=$sidx; $i<=$eidx; $i++)
 {
  $time = $start + $tterms[$i];
  list(,$atime) = solar::sunl($time,FALSE);
  $time += $atime + $addstime + $addttime[$i]; // re-fixed
  $terms[date('nd',$time)] = &$hterms[$i];
  $times[] = $time; // fixed utime
 }

 ## for detail information
 ##
 if(func_num_args() > 3)
 {
  $i = $sidx;
  foreach($times AS $time)
  {
   $sun[$i] = solar::sun($time,FALSE);
   $sun[$i]['_avgdate'] =
    gmdate('D, d M Y H:i:s T',$start+$tterms[$i]);
   $sun[$i]['_name'] = &$hterms[$i];
   $i++;
  }
 }

 unset($times);

 return $terms; // array
  }
} // end of class

/*** example ***
$sun = array();
$terms = solar::terms(date('Y'),1,12,&$sun);
print_r($terms);
print_r($sun);
print_r(solar::sun(time()));
echo solar::today()."\n";
echo solar::solar(mktime(0,0,0,3,20))."\n";
echo solar::solar(mktime(0,0,0,3,21))."\n";
echo solar::solar(mktime(0,0,0,3,22))."\n";
echo "\n\n";
print_r(solar::terms(2023));
***/
?>


<?php
##
## array sort test

##########################################

require_once '_lib/class.solar.ph';

echo "<P><H2>24 절기 - 24 solar terms</H2>\n";

if($_GET['view'])
{
echo "<A HREF='$_SERVER[PHP_SELF]'>소스닫기</A><HR>\n";
highlight_file(basename($_SERVER[PHP_SELF]));
return;
}

echo "<A HREF='$_SERVER[PHP_SELF]?view=1'>소스보기</A><HR>\n";

echo '<PRE>'."\n";
?>

solar object -- get sun position or 24 solar terms

[author]
- Chilbong Kim, < san2(at)linuxchannel.net >
- http://linuxchannel.net/

[근사식에 대한 신뢰] 1902 ~ 2000 년
- 표준편차 : 1289.7736 = 21.5 분
- 평균오차 : +817.57409541246 = +13.6 분
- 최대오차 : +4102.7340(68.4 분), -4347.2395(72.5 분)

[근사식으로 계산한 24절기 실제 오차] 1902 ~ 2037 년
- 표준편차 : 1122.1921 = 18.7 분
- 평균오차 : +686.08382175161 = +11.4 분
- 최대오차 : +4297.252300024(71.6 분), -4278.048699975(71.3 분)
- 최소오차 : +0.16999998688698(0초)

[근사식 + 년도 보정으로 계산한 24절기 실제 오차] 1902 ~ 2037 년
- 표준편차 : 450.8534 = 7.5 분
- 평균오차 : +305.38638890903 = 5.0 분
- 최대오차 : +3028.2343000174 = 50.5 분, -1982.9391000271 = 33.1 분
- 최소오차 : +0.0085000991821289 = 0 초

<?php
list($year,$moon) = preg_split('/\s+/',date('Y n'));
$today  = solar::today();
$tmoon  = solar::terms($year,$moon,0);
$sun    = solar::sun(time());
$suns   = array();
$tterms = solar::terms($year,1,12,&$suns);

echo '<H3>년도 : '.$year.' 년</H3><P>'."\n";
echo '오늘 : '.$today.'<P>'."\n";
echo '이번달 : '.$year.' 년 '.$moon.' 월'."\n";
print_r($tmoon);
echo "\n\n";
echo '현재시각의 태양의 위치: '."\n";
print_r($sun);
echo "\n\n";
print_r($tterms);
echo "\n\n";
print_r($suns);
echo '</PRE>'."\n";

?>

Posted by 무중 이승수 지지닷컴


글쓴이: 산이  [PHP] class of solar, 24 절기 계산과 태양의 위치 조회수:913
 http://linuxchannel.net/
 http://ftp.linuxchannel.net/devel/php_solar/
 http://linuxchannel.net/gaggle/solar.php

안녕하세요?
드디어 완성했습니다.
제가 천문학 전공이 아니라서 상당히 고전했습니다.
(다행히 제가 천문학 쪽에 관심이 많아서...^.9)

이 내용은 L-SN 과 phpschool.com 에 동일하게 포스팅합니다.

...

[PHP] class of solar, 24 절기 계산과 태양의 위치

[author]
 - Chilbong Kim, <san2(at)linuxchannel.net>
 - http://linuxchannel.net/

[changes]
 - 2003.09.08 : bug fixed
 - 2003.09.06 : new build

---------------------------------------------------------

0. 배경 및 개요
1. 24 절기 계산의 어려움(FAQ)
2. 어떻게 계산했나(계산방법)
3. PHP 클래스 사용법
4. 후기

---------------------------------------------------------


0. 배경 및 개요

배경은 생략합니다.

[근사식에 대한 신뢰]
 - 표준편차 : 1289.7736 = 21.5 minutes (standard deviation)
 - 평균오차 : 817.57409541246 = 13.6 minutes
 - 최대오차 : +4102.7340(68.4 minutes), -4347.2395(72.5 minutes)

[근사식으로 계산한 24절기 실제 오차] 1902 ~ 2037 년
 - 표준편차 : 1122.1921 = 18.7 분
 - 평균오차 : +686.08382175161 = +11.4 분
 - 최대오차 : +4297.252300024(71.6 분), -4278.048699975(71.3 분)
 - 최소오차 : +0.16999998688698(0초)

[근사식 + 년도 보정으로 계산한 24절기 실제 오차] 1902 ~ 2037 년
 - 표준편차 : 450.8534 = 7.5 분
 - 평균오차 : +305.38638890903 = 5.0 분
 - 최대오차 : +3028.2343000174 = 50.5 분, -1982.9391000271 = 33.1 분
 - 최소오차 : +0.0085000991821289 = 0 초

[valid date]
 - 1902.01.01 00:00:00 <= utime <= 2037.12.31 23:59:59

[download & online source view]
 - http://ftp.linuxchannel.net/devel/php_solar/

[demo]
 - http://linuxchannel.net/gaggle/solar.php

[references]
 - http://cgi.chollian.net/~kohyc/
 - http://user.chollian.net/~kimdbin/
 - http://user.chollian.net/~kimdbin/re/calendar.html
 - http://user.chollian.net/~kimdbin/re/suncoord.html
 - http://user.chollian.net/~kimdbin/qna/al138.html
 - http://ruby.kisti.re.kr/~manse/contents-3.html
 - http://ruby.kisti.re.kr/~anastro/sub_index.htm
 - http://www-ph.postech.ac.kr/~obs/lecture/lec1/elementary/nakedeyb.htm
 - http://ruby.kisti.re.kr/~anastro/calendar/etime/ETime.html
 - http://www.sundu.co.kr/5-information/5-3/5f3-3-5-04earth-1.htm
 - http://www-ph.postech.ac.kr/~obs/lecture/lec1/elementary/nakedeya.htm
 - http://upgradename.com/calm.php
 - http://aa.usno.navy.mil/faq/docs/SunApprox.html
 - http://aa.usno.navy.mil/data/docs/JulianDate.html


1. 24 절기 계산의 어려움(FAQ)

http://linuxchannel.net/board/read.php?table=qna&no=3984

>산이님 홈페이지에 있는 24절기를 붙이려고 하니(태극기 달기),
>매년 따로 배열로 넘기기가 좀 그래서 ...
>
>음력을 구하게 되니 음력에 따른 설날이나 추석도 구해지고,
>양력 국경일은 해당 일에 태극기가 달리면 되더군요.
>
>그런데 동지를 기준으로 매년 24절기를 구할려고 하는데,
>어떤식으로 해야할지 몰라서 질문해 봅니다.
>
>산이님이 php스쿨에 태극기 달기 팁에 몇분께서 동지를 이용해 매년
>24절기를 구하는 방식을 말씀해 주셨는데, 조금 이해가 안가서요.
>
>동지에 15.218425일 을 더하면 절기입기 시각이 구해진다는데,
>기준을 어떻게 잡아야 할지 몰라서 한번 질문해 봅니다.
>
>mysql 에서 동지에 위의 날짜를 더해가니 실제와 차이가 나더라구요.
>정확한 동지의 시작시간까지 알아야 하는 건가요?
>

-- 이하 답변 내용 -------------

24절기는 그렇게 간단하게 계산되질 않습니다. 아주 복잡합니다. 정확하게 계산하려면 천체역학이나 천체물리학을 따로 공부해야할 정도입니다. 아니면 고등학교 지구과학 이상의 수준을 요구합니다. 며칠동안(?) 24절기에 대해서 자료를 찾아보았습니다.

앞에서 동지에 15.218425 일을 더하면 절기입기일이 시작된다고 하는데 이것은 평기법으로 계산한 방법을 말합니다. 1태양년은 즉 1 회귀주기는 365.242190 일입니다. 이것은 태양이 춘분점을 지나서 다음 춘분점이 오기까지의 시간(거리간격)을 의미합니다.

그런데 또 세차운동(지구와 태양의 인력에 의한)에 의해서 춘분점이 서에서 동쪽으로 0.013972도씩 오차가 생긴다고 하네요. (정말 어렵죠...)

현재 달력(양력, '태양태음역'의 준말)은 그레고리역으로 365.2422 일을 기준으로 합니다. 그래도 오차가 있죠.

24절기이므로 24 등분하면, 즉 365.2422 / 24 == 15.218425 일됩니다. 옛날에는 동짓날이 가장 그림자가 길기 때문에 동짓날부터 더해서 계산했다고 하네요.(오차를 줄이기 위해서) 이렇게 계산한 방법을 평기법이라고 합니다. 현재는 평기법이 아닌 정기법을 사용합니다.

평기법과 정기법의 차이는 바로 표준태양일이냐 아니면 진태양일으로 그 기준을 하냐의 차입니다. (이하 '표준태양시', '진태양시') 먼저 표준태양시를 이해하기 앞서서 진태양시부터 이해해야합니다.

진태양시는 지구의 자전에 의해서 태양이 남중(자오선통과)해서 그 다음날 남중까지의 시간(거리)을 말합니다. 이 시간을 진태양시라고 합니다. ('진태양일')

이 시간은 절대적으로 24시간이 아닙니다. 즉 지구가 타원괘도를 그리면서 공전하기 때문에 각각 모두 다릅니다. 또한 공전속도도 일정한 등속이 아닌 제각기 다릅니다. 태양 근일점에서 가장 빠르고, 태양 원일점에서 가장 느립니다. 이 진태양시는 2월달에서 가장 짧고(대약 24시간-14분 정도), 11월 정도에서는 대략 24시간 +16분 정도 됩니다. 이렇게 들쑥날쑥한 태양일을 24시간으로 평균적으로 통일한 것이 바로 평균태양시입니다. 현재 우리가 사용하고 있는 하루나 달력은 모두 이 평균태양시를 기준으로 합니다. 평균태양시와 진태양시와의 차를 '균시차'라고 합니다.

앙부일귀(해시계)는 실제로 시간을 재는 기기가 아닌 시각, 즉 태양의 위치를 재는 기기이기 때문에 균시차를 적용해야 우리가 사용하는 시간이 나옵니다. 그런데 실제 24절기는 이 평균태양일에 기준하지 않습니다. 즉 진태양시에 맞추어 실제 태양의 위치를 설명하기 위한 하나의 방법입니다.

24절기는 1태양년을 24 등분할 때의 각 지점을 말하는데, 이것은 계절의 변화를 알기 위함입니다. (중국 화북(?)지방에서 농사일에 관련된 계절변화) 즉 태양의 위치는 알기위해서 절기를 사용했다는 점에서 양력을 말합니다. 즉 옛날에도 실제로 양력이 보조로 사용했다는 의미가 되죠. 그런데 또 여기에서 주의할 점은 1태양년을 24등분 할 때 그 기준이 무엇이냐  입니다. 천체역학에서는 춘분점에서 황도를 따라 15도씩 나눈다고 합니다.

이 말은 균등하게 360도 각을 15도씩 나눈다는 의미로 해석하면 안됩니다. 지구는 타원괘도를 그리면서 또한 일정지 않는 공전속도로 움직이기 때문에 각 15도씩 이동할 때마다 실제 걸리는 시간을 모두 다릅니다.

24 등분은 케플러의 '면적속도 일정의 법칙'에서 타원 퀘도 상의 동일한 24 면적 등분에 의한 각 기점을 말합니다. 이것 때문에 실제 24절기 계산이 어렵다는 것이죠. 즉 면적을 24등분했을 때 A 기점(절기)에서 B 기점(중기)으로 이동할 때 시간이 모두 다르다는 것입니다.
이해가 되었는지 모르겠네요.

솔직히 지구과학시간이나 천체역학 또는 천체물리학에서 언급하는 천체, 적도면, 위도, 경도, 적도좌표, 황도, 황도면, 황경, 황도좌표, 지평자표계, 고도, 방위도, 남중, 자오선, 케플러의법칙, 12궁도, 태양년, 표준태양시, 진태양시, 항성년, 항성일, 균시차, ??각, 춘분점, 세차운동, ... 지구시, 세계시, 지방시, 표준자오선(?), 지구시, 윤년, 평년, 윤달, 평달,...
등등 정말 상당히 많은 전문용어가 나옵니다...................................................

여기까지가 이론적인 내용이고,
실제로 PHP 로 코딩하려면, 상당히 복잡한 계산식이 나옵니다. 아직 적용해보질 않아서..
다행히 제가 생각하는 편법을 그대로 적용한 계산법이 있더군요, 즉 A 절기에서 B 절기로 가는 시간이 각각 다르므로 A-B 간의 시간을 모두 평균적으로 구해서 24개를 만들어 놓으면 어느 정도 계산이 된다는 알고리즘입니다.

이 방법은 편법이기 때문에 기준일로부터 멀어질수록 오차가 생긴다는 치명적인 단점이 있습니다. 하지만, 근 100년 전후라면 아주 작은 오차 안에서 비교적 정확하게 계산해 낼 수 있습니다.
http://user.chollian.net/~kimdbin/re/ki24_150.html

위의 URL은 24절기를 150년간 계산해놓은 절기표입니다.
시각(시간이 아님)은 KST, GMT 도 아닌 TT 라고 하는 지구시 단위입니다.
즉 위의 URL에 계산이 나옵니다만, 실제 KST 로 바꿀려면 TT - dT + 9h 으로 계산해 봐야합니다. (UT 는 세계시 = TT - dT를 의미하고, 평균태양(진태양이아님)이 그리니치
자오선을 통과(남중)할 때를 세계시 12시로 봄, 이때의 표준지방시인 GMT는 12시로 UT = GMT 임, 참고로 1925년 이전에는 0시로 계산했다고 함)

2003 67
[01]  1  5  18 28 48
[02]  1 20  11 53 39
[03]  2  4   6 06 25
[04]  2 19   2 01 17
[05]  3  6   0 05 57
[06]  3 21   1 00 50

2003년 춘분점에 대한 KST :

<?php
echo date('Y-m-d H:i:s',mktime(1+9,0,50-67,3,21,2003));
// 2003-03-21 09:59:43 KST
?>

실제 각 절기간의 간격은 굳지 +9h 를 더할 필요 없이 지구시의 간격으로 계산하면 됩니다. 어차피 dT(델타T)는 한 해 동안 모두 동일하므로 이것도 필요 없음) 그런데 각 절기간의 간격 평균은 '고영창'님이 미리 계산한 놓은 값을 이용하면 될 것 같네요.

  ('입춘','우수','경칩','춘분','청명','곡우','입하','소만',
   '망종','하지','소서','대서','입추','처서','백로','추분',
   '한로','상강','입동','소설','대설','동지','소한','대한','입춘');
  =
  (0,21355,42843,64498,86335,108366,130578,152958,
   175471,198077,220728,243370,265955,288432,310767,332928,
   354903,376685,398290,419736,441060,462295,483493,504693,525949);

1996년 입춘 일을 기준으로 각 절기간의 간격 누계를 분단위로 표시한 경우라고 하네요....

* 퀴즈1)
1태양년은 365.242190 일,
1항성년은 365.256360 일,
1평균태양일 = 24평균태양시 = 24시 3분 56.6초(항성시),
1항성일 = 23시 56분 4.1초(평균태양시)
이라고 한다면, 실제 지구는 1 태양년 동안 실제 몆 번을 자전할까요?

*퀴즈2)
2월이 짧고, 7월과 8월이 긴 까닭은?

2. 어떻게 계산했나(계산방법)
곧바로 계산이 어려우니깐 다음과 같은 편법을 사용했습니다.
1) 우선 고영창님이 계산한 알고리즘과 동일한 방법을 사용합니다.
   즉 지난 과거 1902 년부터 2000년까지의 절기에 대해서 1년 단위로
   각 절기간의 간격을 계산합니다. 기준점은 춘분점입니다.
   http://user.chollian.net/~kimdbin/re/equinox19002050.html

위의 URL은 김동빈이 계산한 실제(?) 24 절기 자료입니다. 지구시를 dT 까지 보정해서 실제 세계시로 환산하여 계산했습니다. 계산결과는 다음과 같습니다(춘분점 기준으로 1월부터 12월까지)
   $tterms = array
   (
 -6418939, -5146737, -3871136, -2589569, -1299777,        0,
  1310827,  2633103,  3966413,  5309605,  6660762,  8017383,
  9376511, 10735018, 12089855, 13438199, 14777792, 16107008,
 17424841, 18731368, 20027093, 21313452, 22592403, 23866369
    );

   위의 계산은 표준편차까지 적용한 평균값입니다.

2) 1)에서 구한 각 구간별 누계를 2000년 춘분점부터 계산합니다.
   2000년 춘분점은,
   mktime(7+9,36,19-64,3,20,2000), 2000-03-20 16:35:15(KST)
   = 953537715
   1 평균 태양년(tropicalyear) = 31556940 seconds

3) 1)과 2)에 의해서 각 절기 점의 태양의 시황경을 구합니다.
   시황경을 구하는 식은 근사식으로 다음과 같은 실제 오차가 있습니다.
   - 표준편차 : 1289.7736 = 21.5 minutes (standard deviation)
   - 평균오차 : 817.57409541246 = 13.6 minutes
   - 최대오차 : +4102.7340(68.4 minutes), -4347.2395(72.5 minutes)

근사식에 대한 설명은 http://user.chollian.net/~kimdbin/re/suncoord.html에 있습니다.
   (지구시 2000.0년을 기준으로 율리우스 적일을 통해서 계산)

4) 계산한 시황경 각도 보정 근사식에 대한 오차가 그리 크기 않기 때문에 충분한 신뢰가 갑니다. 따라서 계산한 시황경을 15 도 정수 단위의 끊어서 계산한 시황경에 대한 편차를 초단위로 계산합니다.
   예를들어, 계산한 시황경 L = 300.0039682710 이라면,
   1 solar year == 365.242190 days == 31556925.216 seconds
   1 degress == 31556925.216 seconds / 360 degress == 87658.1256 seconds
   이므로, -0.0039682710 * 87658.1256 = -347.8512 seconds 가 됩니다.
   이 편차를 1)의 평균 시간누계에 적용합니다.

   평균 누계시간을 이렇게 각도 보정을 하는 이유는 모두 동일하게 표준편차
   21.5 분 또는 평균오차 13.6 분 안으로 계산하기 위함입니다.

5) 4)까지 계산한 값을 실제 절기간과 비교하면,
   - 표준편차 : 1122.1921 = 18.7 분
   - 평균오차 : +686.08382175161 = +11.4 분
   - 최대오차 : +4297.252300024(71.6 분), -4278.048699975(71.3 분)
   - 최소오차 : +0.16999998688698(0초)
   가 됩니다.

오차 크기 않기 때문에 그대로 사용이 가능하나, 좀 문제가 있습니다. 즉 표준편차나 평균오차 안에 들더라도 이 시간대에서 날짜가 바뀌면 문제가 생깁니다. 따라서 1902 년부터 2037년까지 실제 24절기와 비교해서 표준편차가 큰 것들을 년도보정과 날짜 변경 보정을 해야 합니다. 계산된 양이 많기 때문에 본 class 의 tterms() 함수를 참고하길 바랍니다.

6) 5)번까지 계산한 결과를 실제 절기간과 비교하면,
   - 표준편차 : 450.8534 = 7.5 분
   - 평균오차 : +305.38638890903 = 5.0 분
   - 최대오차 : +3028.2343000174 = 50.5 분, -1982.9391000271 = 33.1 분
   - 최소오차 : +0.0085000991821289 = 0 초
   가 됩니다.

년도 보정과 날짜 보정까지 계산했기 때문에 틀린 날짜로 절기가 나오질 않습니다.

3. PHP 클래스 사용법
본 PHP class 에서 사용가능한 함수는 몇 개 되질 않습니다.
  (1) 특정 시각에 대한 태양의 위치 계산 :
  array solar::sun( int unix_timestamp [, boolean GMT ] )
  (2) 특정 년도-월에 대한 24절기 계산과 자세한 태양의 위치 계산 :
  array solar::terms(int year [, int smoon [, int length [, array &sun]]] )
  (3) 오늘 절기 체크 :
  string solar::today( [ int unix_timestamp [, boolean GMT]] );
  (4) 특정 시각에 대한 절기 체크 :
  string solar::solar( [ int unix_timestamp [, boolean GMT]] );

1) 특정 시각에 태양의 위치를 알아보려면 ?
  usage : array solar::sun( int unix_timestamp [, boolean GMT ] )

  예) 현재시각에 대한 태양의 위치
  $sun = solar::sun(time());
  print_r($sun);

  // 출력 결과
  Array
  (
    [JD] => 2452890.1381597221    <--- 율리우스 적일
    [L] => 164.5961639692         <--- 태양의 시황경
    [e] => 23.4385157503          <--- 태양의 황도 경사각
    [R] => 1.0077322215           <--- 천문단위
    [RA] => 345.8137140525        <--- 태양의 적경
    [d] => 6.0648783930           <--- 태양의 적위
    [stime] => 14428191.2145      <--- 시황경에 대한 1태양년 시간(초)
    [dtime] => 82995.2914         <--- 적경에 대한 1일 시간(초)
    [atime] => 35399.5095         <--- 정수단위 시황경에 대한 치우침 정도(초)
    [utime] => 1062947873         <--- 유닉스 타임스탬프
    [date] => Mon, 08 Sep 2003 00:17:53 KST
    [gmdate] => Sun, 07 Sep 2003 15:17:53 GMT
    [_L] => 164°35′46.1903″    <--- 시황경을 각도로 표시
    [_e] => +23°26′18.6567″    <--- 황도 경사각을 각도로 표시
    [_RA] => 345°48′49.3706″   <--- 적경을 각도로 표시
    [_d] => +6°03′53.5622″     <--- 적위를 각도를 표시
    [_stime] => 166 23 49 51.2145 <--- 시황경을 '일-시-분-초' 로 환산
    [_dtime] => 0 23 03 15.2914   <--- 적경을 '일-시-분-초' 로 환산
    [_atime] => +0 09 49 59.5095  <--- atime 을 '일-시-분-초' 로 환산
  )

  오차는 표준편차 21.5 분입니다.

보현산 천문대 http://www.kao.re.kr/~yukis/solsys0.html 에서 위의 계산된 값과 서로 비교해 보길 바랍니다. (적경 == _dtime, 적위 == _d, 거리(AU) == R)


2) 특정 년도의 24절기를 알아보려면 ?
  usage : array solar::terms(int year [, int smoon [, int length [, array &sun]]] )
  예) 올해의 24 절기
  $terms = solar::terms(date('Y'));
  print_r($terms);

  // 출력 결과(2003년임)
  Array
  (
    [106] => 소한
    [120] => 대한
    [204] => 입춘
    [219] => 우수
    [306] => 경칩
    [321] => 춘분
    [405] => 청명
    [420] => 곡우
    [506] => 입하
    [521] => 소만
    [606] => 망종
    [622] => 하지
    [707] => 소서
    [723] => 대서
    [808] => 입추
    [823] => 처서
    [908] => 백로
    [923] => 추분
    [1009] => 한로
    [1024] => 상강
    [1108] => 입동
    [1123] => 소설
    [1207] => 대설
    [1222] => 동지
  )

  년도별 24 절기는 http://user.chollian.net/~kimdbin/re/equinox19002050.html
  에 있으니 비교해 보길 바랍니다.

3) 현재 달의 절기를 알아보려면(자세한 태양의 위치까지) ?
  예) 현재 년도-월
  $detail = array();
  list($year,$moon) = explode(' ',date('Y n'));
  $terms = solar::terms($year,$moon,0,&$detail);
  print_r($terms);
  print_r($detail);

  // 출력 결과(2003년 9월임)
  Array
  (
    [908] => 백로
    [923] => 추분
  )

  Array
  (
    [16] => Array
        (
            [JD] => 2452890.5580993714
            [L] => 165.0037309275
            [e] => 23.4385155991
            [R] => 1.0076258056
            [RA] => 346.1917636517
            [d] => 5.9075765238
            [stime] => 14463917.7701
            [dtime] => 83086.0233
            [atime] => -327.0461
            [utime] => 1062984155.7857
            [date] => Mon, 08 Sep 2003 10:22:35 KST
            [gmdate] => Mon, 08 Sep 2003 01:22:35 GMT
            [_L] => 165°00′13.4313″
            [_e] => +23°26′18.6562″
            [_RA] => 346°11′30.3491″
            [_d] => +5°54′27.2755″
            [_stime] => 167 09 45 17.7701
            [_dtime] => 0 23 04 46.0233
            [_atime] => -0 00 05 27.0461
            [_avgdate] => Mon, 08 Sep 2003 01:58:47 GMT
            [_name] => 백로
        )

    [17] => Array
        (
            [JD] => 2452905.9491799828
            [L] => 180.0034831097
            [e] => 23.4385100583
            [R] => 1.0034920967
            [RA] => 0.0031957122
            [d] => -0.0013854578
            [stime] => 15778767.9309
            [dtime] => 0.7670
            [atime] => -305.3229
            [utime] => 1064313945.1505
            [date] => Tue, 23 Sep 2003 19:45:45 KST
            [gmdate] => Tue, 23 Sep 2003 10:45:45 GMT
            [_L] => 180°00′12.5392″
            [_e] => +23°26′18.6362″
            [_RA] => 0°00′11.5046″
            [_d] => -0°00′4.9876″
            [_stime] => 182 14 59 27.9309
            [_dtime] => 0 00 00 0.7670
            [_atime] => -0 00 05 5.3229
            [_avgdate] => Tue, 23 Sep 2003 11:12:23 GMT
            [_name] => 추분
        )
    )

4) 오늘이 절기에 해당되는 체크
  usage : string solar::today( [ int unix_timestamp [, boolean GMT]] );

  예)
  $today = solar::today();
  echo $today;

  // 출력 결과
  오늘은 < B >백로 < B >입니다

  오늘이 마침 백로이군요. 해당 요일이 절기에 포함되지 않으면 아무것도
  출력되질 않습니다.

5) 특정 날이 절기에 해당되는지 체크
  usage : string solar::solar( [ int unix_timestamp [, boolean GMT]] );
  (위의 solarr::today() 와 동일한 함수임) 

  예)
  $solar = solar::solar(mktime(0,0,0,3,21,2003));
  echo $solar;

4. 후기
제가 천문학 전공이 아니라서 계산하는데 상당히 어렵더군요. 특히 학부 때 공업수학을 두 번이나 F 받는 기억이... T.T 고등학교 졸업한지 15년 정도 되었는데, 다시는 그런 계산을 하지 않을 거라고 생각했는데, 고차방정식, 미분적분, 삼각함수, 호도법, 라디안, 통계, 오차론(?) 등등 고교수학이 상당히 비중을 차지하더군요.
어쨌든 제가 원하는 계산은 모두 끝냈습니다.

위의 PHP class 를 이용하여, 오늘 절기 체크, 현재시각에 대한 태양의 위치, 올해 절기와 상세한 태양의 위치 등등 계산하는데 약 0.05 초 정도 걸리더군요. (웹호스팅 웹서버에서)
http://linuxchannel.net/gaggle/solar.php
에 실시간 데모가 있습니다.

EOF

 -_- 주기 계산이 간단하게 되던가요??
그리고 주기랑 지구 시간을 맞춰서 정확하게 24절기를 구분해 낼 수 있나요??
실제 만세력과 비교해서 차이가 없나요??
쿨럭.. 질문만 많아서 죄송.. ㅠㅠ 09/07 10:17:29 
  
 산이 간단하게 계산되지 않습니다.
현재 우리가 사용하고 있는 시간이 평균태양시이기 때문이죠.
24절기는 진태양시를 기준으로 하고 있죠.
...

간단하게 계산방법을 소개하면,
1) 24절기 평균값을 편차보정(표준편차 이내에 든 것들에 대한 보정)
2) 1) 에서 구한 시간에 대한 태양의 시황경 계산
3) 2)에서 구한 시황경에 대한 보정(각도 보정)
4) 3)에서 구한 보정값을 1)에 편차 보정

이렇게 구한 값이 위의 [근사식으로 계산한 실제 오차] 입니다.
현재 오차를 더 줄이기 위해서, 특정 년도 보정과 특정 날짜 보정까지 작업중입니다.
비교기준은 보현산천문대에서 계산한 랜덤한 특정날짜와 비교했고, 김동빈 선생님이 계산한 24 절기가 기준입니다. (dT 까지 계산된)

실제 만세력 자료가 없어서 비교해 보질 않았습니다만 24절기에 기준 한다면 평균오차 10분까지 가능하더군요. 물론 1902년부터 약 2030년 까지..
문서가 작성되면 다시 올리지요. 09/07 18:30:45 
  
 -_- 크아..
정말 재미난 작업하시네요.. 기대하고 있겠습니다.. ^^a 09/07 19:35:15 
  
산이 고등학교 지구과학이나 천체물리 또는 천체 역학 쪽에 조금 지식이 필요합니다.
전 고등학교 지구과학 실력으로 .... ^.^ 방금 년도보정으로 1902 년부터 2037년까지 평균오차 5.5분 까지 계산해 냈습니다. 적용만 남았습니다. 09/07 20:25:26 
  
 산이 24절기 1902 ~ 2037 년까지,
- 표준편차 : 450.8534 = 7.5 분
- 평균오차 : +305.38638890903 = 5.0 분
- 최대오차 : +3028.2343000174 = 50.5 분, -1982.9391000271 = 33.1 분
- 최소오차 : +0.0085000991821289 = 0 초
까지 소스 적용 끝냈습니다. 09/07 22:10:56 
  
 배트 항상 최선을 다하시는 모습 정말 멋집니다. 감사합니다. 09/08 14:23:24 
☆~ - 최대오차 : +3028.2343000174 = 50.5 분, -1982.9391000271 = 33.1 분
저 부분 오타요~ ^^;; -33.1 분이죠? @_@a;; 09/08 19:41:46 
  
 ☆~ 흠 소스보니 아직 완전하게 않 만들어진듯하네요^^a 완성판이 기대되는군요 ^^
저도 지구과학에 관한거라면 관심이 많이 있어서 말이죠^^ 재미있게 잘보았습니다 +_+ 09/08 19:59:06 
  
 안지민 뭐.. 뭐.. -_- 뭐라캐쌌노? 09/09 15:36:46 
  
 산이 관심을 가져주어서 감사합니다.
...
To 절기님
천체역학이 아닌 PHP 에서 단순 절기를 구하는 데에 있어서 표준편차 7.5분이면 상당히 양호한 편입니다. 그러나 아주 정확한 정확도를 요구하는 업무에서는 위의 방법을
그대로 사용하면 안 됩니다. 표준편차 7.5분이면 엄청나게 큰 거죠... 따라서 아주 정확하게 계산된 값을 요구하지 않는 분야에 적용해야 합니다. 즉 날짜 보정까지 했으므로 1902년 부터 2037년까지의 절기일에 대한 오류는 없습니다. 그냥 간단하게 '절기일'을 알아보는데 사용하면 충분할겁니다. 09/17 22:22:20 
  
산이 To 절기님
김동빈 선생님 홈페이지에서 자료를 좀더 찾아보았습니다. 위의 '정확도 1분' 이 초단위 시간이라면 상당히 우수한 프로그램인 것 같습니다. 정확한 황경을 계산하기 위해서 40 페이지가 넘은 프로그램을 해야 한다고 하네요. 솔직히 PHP로 구현하기가 너무 벅차죠. 구현 알고리즘도 구하기 힘들고 그에 따른 기본적인 많은 지식이 더 필요하다고 하네요. 만약 위의 '1분이 시간각'이라면 초로 약 4분의 오차를 말합니다. 직접 알고리즘에 의해서 계산된 값이라면 URL을 알고 싶군요. 초단위 30초 또는 1분 이내의 절기를 원한다면 미리 계산된
값을 DB 에 집어넣고 꺼내오는 방법도 있습니다. (혹시 이런 방법이 아닌가 하는 ...)

[만세력 제작에 관한 글 - 절기계산]
http://211.57.134.129/~moon/cgi-bin/ast/CrazyWWWBoardLE.cgi?mode=read&num=81&db=almanac&backdepth=1

글쓴이: 최경민  글쓴날: 2003년 08월 18일 11:32:00 월(오전) 조회: 76
안녕하세요?
항상 사이트를 유용하게 이용하고 있습니다.
이번에 간단한 달력과 일정관리를 만들어보고 있는데, 여러분들의 소스를 보고 조금씩 붙여서 어느 정도 만들어 졌는데, 산이님 홈페이지에 있는 24절기를 붙이려고 하니(태극기 달기), 매년 따로 배열로 넘기기가 좀 그래서 ...

음력을 구하게 되니 음력에 따른 설날이나 추석도 구해지고, 양력 국경일은 해당 일에 태극기가 달리면 되더군요. 그런데 동지를 기준으로 매년 24절기를 구할려고 하는데, 어떤 식으로 해야할 지 몰라서 질문해 봅니다. 산이님이 php스쿨에 태극기 달기 팁에 몇 분께서 동지를 이용해 매년 24절기를 구하는 방식을 말씀해 주셨는데, 조금 이해가 안가서요. 동지에 15.218425일 을 더하면 절기입기 시각이 구해진다는데, 기준을 어떻게 잡아야 할지 몰라서 한번 질문해 봅니다. mysql 에서 동지에 위의 날짜를 더해가니 실제와 차이가 나더라구요. 정확한 동지의 시작시간까지 알아야 하는 건가요? 혹시 도움을 받을 수 있을까 해서 질문해 봅니다.

24절기는 그렇게 간단하게 계산되질 않습니다. 아주 복잡합니다. 정확하게 계산하려면 천체역학이나 천체물리학을 따로 공부해야할 정도입니다. 아니면 고등학교 지구과학 이상의 수준을 요구합니다. 며칠동안(?) 24절기에 대해서 자료를 찾아보았습니다.

앞에서 동지에 15.218425 일을 더하면 절기입기일이 시작된다고 하는데 이것은 평기법으로 계산한 방법을 말합니다. 1태양년은 즉 1 회귀주기는 365.242190 일입니다. 이것은 태양이 춘분점을 지나서 다음 춘분점이 오기까지의 시간(거리간격)을 의미합니다.

그런데 또 세차운동(지구와 태양의 인력에 의한)에 의해서 춘분점이 서에서 동쪽으로 0.013972도씩 오차가 생긴다고 하네요. (정말 어렵죠...)

현재 달력(양력, '태양태음역'의 준말)은 그레고리역으로 365.2422 일을 기준으로 합니다. 그래도 오차가 있죠.

24절기이므로  24 등분하면, 즉 365.2422 / 24 == 15.218425일 됩니다. 옛날에는 동짓날이 가장 그림자가 길기 때문에 동짓날부터 더해서 계산했다고 하네요.(오차를 줄이기 위해서) 이렇게 계산한 방법을 평기법이라고 합니다. 현재는 평기법이 아닌 정기법을 사용합니다.

평기법과 정기법의 차이는 바로 표준태양일이냐 아니면 진태양일으로 그 기준을 하냐의 차입니다. (이하 '표준태양시', '진태양시') 먼저 표준태양시를 이해하기 앞서서 진태양시부터 이해해야합니다.

진태양시는 지구의 자전에 의해서 태양이 남중(자오선통과)해서 그 다음날 남중까지의 시간(거리)을 말합니다. 이시간을 진태양시라고 합니다. ('진태양일') 이 시간은 절대적으로 24시간이 아닙니다. 즉 지구가 타원괘도를 그리면서 공전하기 때문에 각각 모두 다릅니다. 또한 공전속도도 일정한 등속이 아닌 제각기 다릅니다. 태양 근일점에서 가장 빠르고, 태양 원일점에서 가장 느립니다. 이 진태양시는 2월 달에서 가장 짧고(대약 24시간-14분 정도), 11월 정도에서는 대략 24시간 + 16분 정도 됩니다. 이렇게 들쑥날쑥한 태양일을 24시간으로 평균적으로 통일한 것이 바로 평균태양시입니다.

현재우리가 사용하고 있는 하루나 달력은 모두 이 평균태양시를 기준으로 합니다. 평균태양시와 진태양시와의 차를 '균시차'라고 합니다. 앙부일귀(해시계)는 실제로 시간을 재는 기기가 아닌 시각, 즉 태양의 위치를 재는 기기이기 때문에 균시차를 적용해야 우리가 사용하는
시간이 나옵니다.

그런데 실제 24절기는 이 평균태양일에 기준하지 않습니다. 즉 진태양시에 맞추어 실제 태양의 위치를 설명하기 위한 하나의 방법입니다. 24절기는 1태양년을 24 등분할 때의 각지점을 말하는데, 이것은 계절의 변화를 알기 위함입니다 (중국 화북(?)지방에서 농사일에 관련된 계절변화) 즉 태양의 위치는 알기위해서 절기를 사용했다는 점에서 양력을 말합니다. 즉 옛날에도 실제로 양력이 보조로 사용했다는 의미가 되죠.

그런데 또 여기에서 주의할 점은 1태양년을 24등분할 때 그 기준이 무엇이냐 입니다. 천체역학에서는 춘분점에서 황도를 따라 15도씩 나눈다고 합니다. 이 말은 균등하게 360 도각을 15도씩 나눈다는 의미로 해석하면 안 됩니다. 지구는 타원괘도를 그리면서 또한 일정지 않는 공전속도로 움직이기 때문에 각 15도씩 이동할 때마다 실제 걸리는 시간을 모두 다릅니다.

24 등분은 케플러의 '면적속도 일정의 법칙'에서 타원퀘도상의 동일한 24 면적 등분에 의한 각 기점을 말합니다. 이것 때문에 실제 24절기 계산이 어렵다는 것이죠. 즉 면적을 24등분했을 때 A 기점(절기)에서 B 기점(중기)으로 이동할 때 시간이 모두 다르다는 것입니다.
이해가 되었는지 모르겠네요.

솔직히 지구과학시간이나 천체역학 또는 천체물리학에서 언급하는 천체, 적도면, 위도, 경도, 적도좌표, 황도, 황도면, 황경, 황도좌표, 지평자표계, 고도, 방위도, 남중, 자오선, 케플러의법칙, 12궁도, 태양년, 표준태양시, 진태양시, 항성년, 항성일, 균시차, ??각, 춘분점, 세차운동, ... 지구시, 세계시, 지방시, 표준자오선(?), 지구시, 윤년, 평년, 윤달, 평달, 등등 정말 상당히 많은 전문용어가 나옵니다. .................................................

여기까지가 이론적인 내용이고,
실제로 PHP 로 코딩하려면, 상당히 복잡한 계산식이 나옵니다. 아직 적용해보질 않아서..
다행히 제가 생각하는 편법을 그대로 적용한 계산법이 있더군요,

즉 A 절기에서 B 절기로 가는 시간이 각각 다르므로 A-B 간의 시간을 모두 평균적으로 구해서 24개를 만들어 놓으면 어느 정도 계산이 된다는 알고리즘입니다. 이 방법은 편법이기 때문에 기준일로 부터 멀어질수록 오차가 생긴다는 치명적인 단점이 있습니다. 하지만, 근 100년 전후라면 아주 작은 오차 안에서 비교적 정확하게 계산해 낼 수 있습니다.

http://user.chollian.net/~kimdbin/re/ki24_150.html
위의 URL은 24절기를 150년간 계산해놓은 절기표입니다.

시각(시간이 아님)은 KST, GMT도 아닌 TT 라고 하는 지구시 단위입니다.
즉 위의 URL에 계산이 나옵니다만, 실제 KST로 바꿀려면 TT - dT + 9h 으로 계산해 봐야합니다. (UT는 세계시 = TT - dT를 의미하고, 평균태양(진태양이아님)이 그리니치 자오선을 통과(남중)할 때를 세계시 12시로 봄, 이때의 표준지방시인 GMT는 12시로 UT = GMT 임, 참고로 1925년 이전에는 0시로 계산했다고 함)

2003 67
[01]  1  5  18 28 48
[02]  1 20  11 53 39
[03]  2  4   6 06 25
[04]  2 19   2 01 17
[05]  3  6   0 05 57
[06]  3 21   1 00 50

2003년 춘분점에 대한 KST :

<?php
echo date('Y-m-d H:i:s',mktime(1+9,0,50-67,3,21,2003));
// 2003-03-21 09:59:43 KST
?>

실제 각 절기간의 간격은 굳지 +9h 를 더할 필요 없이 지구시의 간격으로 계산하면 됩니다. 어차피 dT(델타T)는 한 해 동안 모두 동일하므로 이것도 필요 없음)

그런데 각 절기간의 간격 평균은 '고영창'님이 미리 계산한 놓은 값을 이용하면 될 것 같네요.
  ('입춘','우수','경칩','춘분','청명','곡우','입하','소만',
   '망종','하지','소서','대서','입추','처서','백로','추분',
   '한로','상강','입동','소설','대설','동지','소한','대한','입춘');
  =
  (0,21355,42843,64498,86335,108366,130578,152958,
   175471,198077,220728,243370,265955,288432,310767,332928,
   354903,376685,398290,419736,441060,462295,483493,504693,525949);

1996년 입춘일을 기준으로 각 절기간의 간격 누계를 분단위로 표시한 경우라고 하네요.
아직 실제 PHP로 코딩해볼 질 않아서 넘겨줄 코드가 없네요.
시간이 되면 직접 코딩해서 알파문서 게시판에 올리도록 하지요...........
상당히 긴 글이네요....


아... 음력->양력, 양력->음력으로 변환하는 코드(함수)좀 볼수 있을 까요?
...........

* 퀴즈1)
1태양년은 365.242190 일,
1항성년은 365.256360 일,
1평균태양일 = 24평균태양시 = 24시 3분 56.6초(항성시),
1항성일 = 23시 56분 4.1초(평균태양시)
이라고 한다면, 실제 지구는 1 태양년 동안 실제 몇 번을 자전할까요?

*퀴즈2)
2월이 짧고, 7월과 8월이 긴 까닭은?

글쓴이: 최경민  글쓴날: 2003년 08월 20일 18:07:08 수(저녁) 조회: 117
정말 정성스런 답변 감사합니다. 이론적인 내용 솔직히 그냥 읽기만 하는데도 머리가 띵~합니다. 감사하단말 먼저 드리고 싶습니다. 솔직히 전 프로그램 짤 줄도 모르고, 남의 소스 배껴다가 얻어 쓰는 놈입니다. 아마 사람들이 제일 싫어하는 부류일겁니다. 그래도 어쩔 수 없이 그렇게 살아가고 있습니다.

먼저 양력->음력 변환 함수는 phpschool에서 검색했는데, 사용하기 편리해서 그 함수를 그대로 쓰고 있습니다. 아래 원본 글 주소입니다.

http://www.phpschool.com/bbs2/inc_view.html?id=7084&code=tnt2&start=0&mode=s
earch&field=body&search_name=&operator=and&period=all&category_id=&s_que=%C8%A3%C3%E2%B9%FD%
3A+soltolun%282002%2C01%2C11%29

그리고, 솔직히 제가 만든 달력은 남의 소스 얻어다가 누더기처럼 끼워 맞춘거라 보여드리기도 쪽 팔려서...ㅡㅡ;; 그런데, 산이님 본문에 있는 고영창이란분 홈페이지 보니 약간은 엽기적이더군요..ㅡㅡ;; 그리고, 링크된 김동빈씨의 홈페이지도 특이하네요 ^^

전 아주 단순(?)하고 좋던데요..
제가 고등학교때까지만 해도 천문학자가 되는게 꿈이었습니다. 결국 전공은 '도시공학'이지만요.. 그래서 아직도 천문, 천체 얘기만 나오면 관심이 많이 갑니다.

>============================================================
>혹시 제대로 읽어보지도 않았다고 하실지도 모르겠네요.
>워낙 무지해서 잘 모르겠더라구요.
>그래도 젤 아래에 적어주신 절기간
 간격 평균으로도 절기가
 구해지더군요.
>감사합니다. 방법은 적어주신 그대로 1996년 입춘일을 기준으로 반복문을 이용했더니
되었습니다.
>그런데,  '고영창'님이 미리 계산한 놓은 절기간의
 간격 평균은 어디에 있는지, 그분 홈에 갔는데, 잘 못찾겠더라구요.
>솔직히 맞게 된건지도 모르겠습니다.
>

http://cgi.chollian.net/~kohyc/calendar/s1221_6.txt

고영창님 홈페이지에 있습니다.
아니면 '진짜 만세력' 프로그램을 받으면 그 안에 PERL 소스로
있습니다.


>사용된 결과물도 보여드려야 하는데, 도저히 얼굴이 빨개져서 못보여드리겠습니다.
>감사합니다. 나중에 정리되면 제가 만든 일정관리 보여드릴께요...
>
>그리고, 퀴즈는...솔직히 잘 모르겠는데,
>문제를 보니 그안에 답이 있는것 같은데 공부도하고,
>윤달에 관해서 알아보라는 뜻이 계신것 같습니다.
>편리함에 길들여져서 인지....검색찬스를 썼습니다. ㅡㅡ;;
>
>* 퀴즈1)
>1태양년은 365.242190 일,
>1항성년은 365.256360 일,
>1평균태양일 = 24평균태양시 = 24시 3분 56.6초(항성시),
>1항성일 = 23시 56분 4.1초(평균태양시)
>이라고 한다면, 실제 지구는 1 태양년 동안 실제 몆번을 자전할까요?
>http://kin.naver.com/browse/db_detail.php?dir_id=110206&docid=96104
>
>맞는지 모르겠습니다. 솔직히 산수도 잘 몰라요.
>지구 자전주기: 23시간 56분 4초 ==>초로 환산 :86164초
>1태양년을 ==>초로 환산 : (365일*86400=31536000초)
 + (86400*0.242190일)=315569252.216초

>
>315569252.216 / 86164=366.24257481082 번( 약366번 인가?)
>모르겠습니다.
>

예, 위의 계산방법이 맞습니다.
실제 지구는 365.5 바뀌가 아닌 366 바뀌 조금 더 돌지요.
(실제 지구 자전속도가 조금씩 느려진다고 하네요..헙)

그런데 위의 계산은 검증(?)에 필요한 계산이고요,
실제로 이렇게 복잡(?)하게 계산하지 않아도 금방 알 수 있습니다.

즉 진태양일은 태양을 기준으로, 바꾸어 말하면 태양에서 지구를 봤을 때 도는 횟수를 말합니다. 우리가 달의 모습을 보는 것과 같은 원리이죠. 반면 항성일은 태양이 기준이 아닌 제3자의 입장에서 볼 때 실제 지구가 도는 횟수를 말합니다.

따라서 지구와 달의 관계를 생각하면 금방 알 수 있지요. 즉 달은 지구 둘레를 한번 공전할때 1번 자전하지요, 우리가 볼 때는(진태양일 기준) 자전하지 않는 것 처럼 보이지만 실제 제3자의 입장(항성일)에서 보면 시간이 지날수록 항상 다른 면을 보게 되지요, 즉 1번 공전할 때 1번 자전합니다. 따라서 365.5 에 +1 하면 실제 지구 자전회수가 됩니다.

달이 실제로 한번도 자전하지 않는다면 우리가 볼 때는 한번 자전하는 것처럼 보입니다. (자전거 패달이나 멧돌이 돌아가는 것을 생각하면됨)


>
>*퀴즈2)
>2월이 짧고, 7월과 8월이 긴 까닭은?
>답해주신 내용중에 있는 것 같네요.
>
>http://kin.naver.com/browse/db_detail.php?dir_id=6&docid=51385
>--------------------------------
>우리가 사용하고 있는 것은 동양에서 사용하던 음력이 아니라 서양에서 사용하던 양력입니다.

>다 아시는 내용이지만, 하루를 24시간으로 정하고,
>1년을 365일로 정했지만, 지구의 자전 속도와 공전 속도는 이렇든 정확하게 맞아 떨어지는 것이 아닙니다.
>동양에서는 1년을 360일로 치고, 각 달을 30일로 해서 사용을 했고,
>이렇게 했을 때 생기는 차이를 없애기 위해서 윤달이란 것이 생겼습니다.
>음력을 보시면 아시겠지만, 몇 년마다 윤 X월이란 것이 있습니다.
>양력에서는 이러한 현상을 없애기 위해서 생긴 것이 바로 2월 29일 입니다.
>
>즉, 일반적인 해에는 2월에 28일까지만 배치를 했다가 그 차이가 누적이 되면 한꺼번에 맞추기 위해서 하루를 더 만든 것입니다.
>
>그리고, 왜 2월 달만 짧은지를 물으셨는데, 반면 7월과 8월은 둘 다 31일씩 존재를 합니다.

>2월을 제외한 다른 달은 번갈아 가면서 30일과 31일이 있는데 유독 7월과 8월만 계속적으로 31일씩 있습니다.
>이는 양력의 기원이 로마에서 생겼기 때문입니다.
>달에 대한 호칭 중 7월과 8월은 로마의 초대 황제와 그 다음 황제의 이름을 따서 지었는데,

>초대 황제는 잘 아시는 율리우스 시저입니다. 그래서 생긴 것이 7월입니다.
>8월은 아우구스티누스의 이름을 따서 만든 것이구요.
>하지만, 원래대로라면 8월은 30일이 되어야 하는데,
>후세의 사람이 아우구스티누스의 업적에 맞지 않는다 생각해서 2월에서 하루를 빼어서 8월로 옮긴 것입니다.
>그런 후에 나머지를 다시 조정을 한 것이죠.
>------------------------------

맞게 찾으셨네요.

http://www-ph.postech.ac.kr/~obs/lecture/lec1/elementary/eqntime.gif
http://www-ph.postech.ac.kr/~obs/lecture/lec1/elementary/nakedeyb.htm

위의 그림을 보면, 2월 달에서 진태양시가 가장 짧습니다.
즉 하루길이가 가장 짧습니다.

실제 그레고리오역(우리가 사용하는 태양태음력)은 평균태양일이지만
진태양일에 어느 정도 맞추다 보니 2월을 짧게 할 수밖에 없습니다.

8월이 아우구스티누스의 생일이 있는 달이라고 하네요.
그래서 30일을 31로...

이런 퀴즈를 내는 이유는 바로 24절기와 관련이 있기 때문입니다. 위의 그림에서, 가로축의 24시간대를 직선으로 동일한 속도로 이동하는 것이 평균태일이고 우리가 사용하는 시간을 말합니다.

반면 진태양일은 곡선을 따라서 불규칙한 속도로 이동하는 것을 말합니다.(술취한 사람이 집을 찾아가는 것과 같은 원리?)

이 곡선에 24개의 점(절기)를 찍어야 하는데, 각지점의 속도가 다르므로 이 곡선에 직접 찍기는 어렵고, 황도곡선(?)을 그려야 합니다.(가능하는지 모르겠지만) 좀 어렵죠?.... 그것도 15도 간격으로 24개를 찍어야 하므로,,,
이것 말고 실제 황도좌표와 위의 그림을 기준으로 설명해야 하는데
제가 좀 실력이 못되어서...

Posted by 무중 이승수 지지닷컴


작성자 : 김동빈 작성일 : 2000-07-10 조회 : 73

####

24(절)기는 태양의 지구 중심 겉보기 황경이 특정한 값에 이르는 순간을 가리킵니다. 예를 들면, 소한, 대한, 입춘, 우수는 각각 태양 황경이 285도, 300도, 315도, 330도에 이르는 순간입니다. 그러므로 입기 시각을 계산하려면 태양의 황경을 계산해야만 합니다. 입기 시각 계산에 쓰일 수 있는 간단한 수식이나 규칙은 없습니다.

한국천문연구원의 역서 편찬실에서는 미국 해군 천문대(U.S. Naval Observatory)에서 편찬한 천체력(The Astronomical Almanac)을 사용하여 입기 시각을 추산하는 것으로 알고 있습니다. 그러나 만세력 제작자들은 이 방법을 쓸 수 없습니다. 만 과거나 미래의 태양 황경이 수록된 천체력 자체가 없기 때문입니다. 설사 그런 천체력이 있다 하더라도 일일이 보간법으로 입기 시각을 구하는 데에는 한계가 있습니다. 이 경우 한국천문연구원에서 미리 계산해 놓은 입기 시각을 활용하거나(물론 자료에 대한 사용권을 정식으로 얻어야 하겠지요) 태양 황경을 계산하는 프로그램을 별도로 만들어야 하는데, 이 또한 쉽지 않은 일입니다. 천문 계산 관련 서적에 수록된 계산식은 한두 개가 아니고 너무 복잡하기 때문에 (아울러 저작권 침해 소지도 있으므로) 입기 시각을 계산하는 방법(제가 고안한 방법)만 개략적으로 설명하겠습니다.

다음의 방법을 따른다면 24기의 입기(절입) 시각을 비교적 정확하게 계산할 수 있습니다. 이 글에서 사용된 황경은 모두 "지구 중심 겉보기 황경"입니다.

1. 한국천문연구원이 펴낸 역서(2000년)에 수록된 입기 일을 1차 근사치로 놓고 태양의 황경을 구합니다. 예를 들어, 1500년의 경우, 춘분은 1500년 3월 20일, 추분은 1500년 9월 23일.

2. 24기 입기 순간의 태양의 황경(285도, 300도, 315도, 330도, ...)과 첫 번째 단계에서 구한 황경의 차를 계산합니다.

3. 매초당 태양의 황경 변화량을 이용하여 1차 근사치(2000년 역서의 입기일)를 보정하여 좀더 정확한 입기 시각(2차 근사치)을 구합니다.

4. 2차 근사치를 초기치로 놓고 태양의 황경을 다시 계산합니다.

5. 24기 입기 순간의 태양 황경(285도, 300도, 315도, 330도, ...)과 세 번째 단계에서 계산된 황경을 비교하여 원하는 정밀도를 얻을 때까지 2번, 3번, 4번 과정을 반복합니다.

위의 방법으로 계산한 입기 시각은, 외국의 전문가(J.Meeus)가 계산한 것(Astronomical Tables of the Sun, Moon, and Planets, Willmann-Bell,Inc.)과 비교해 보면, A.D. 1년까지의 춘분, 하지, 추분, 동지의 경우 15분 이내의 범위 내에서 잘 일치합니다. 저에게 계산 프로그램 소스가 있으나 공개할 수 없습니다. 24기 추산 프로그램의 핵심은 태양의 황경 계산 부분인데, 그 부분에 포함된 계산 항을 배포할 권리가 저에게 없기 때문입니다.

입기 시각의 정확성은 태양의 황경을 얼마나 정확하게 계산하는가에 달려 있습니다. 그런데 만세력을 만들고자 한다면 상당히 긴 기간의 합삭 시각과 24기의 입기 시각을 정확하게 계산하지 않으면 안 되는데, 천문 계산의 원리에 익숙하지 않는 사람에게는 결코 쉽지 않은 일입니다. 이 부분은 길게 설명해도 이해하기 어렵기 때문에 참고할 만한 책만 소개하고 넘어가겠습니다.

Planetary Programs and Tables from -4000 to +2800 (Willmann-Bell Inc.)
Astronomical Algorithms (Willmann-Bell Inc.)

천문 계산에 관하여 진지하게 공부하고자 한다면 위의 두 번째 책을 꼭 읽어 볼 것을 권합니다. 이 책은 http://www.willbell.com 에서 쉽게 구입할 수 있습니다. 쓸 만한 음양력 프로그램을 만들고자 한다면 이 책에서 설명하는 태양과 달의 위치 계산법 정도는 훤히 꿰뚫고 있어야 합니다. 이 분야의 국내 서적은 거의 없는 것으로 알고 있습니다. 국내의 책으로는 유일하게 "역법의 원리 분석"(이은성 저, 정음사)에 근래의 24기 입기 시각을 추산하는 방법이 설명되어 있습니다.

책을 읽는 수고를 덜고 싶으면, 한국천문연구원에서 계산한 자료에 대한 사용권을 정식으로 얻는 방법 외에는 도리가 없습니다. 도서출판 계백이라는 데에서 출판한 "표준 만세력"은 한국천문연구원으로부터 제공받은 입기 시각과 합삭 시각 관련 자료를 바탕으로 편찬된 만세력입니다(아마 사용권을 얻는 데에 비용이 좀 들었을 겁니다).

이 게시판에 음양력 변환에 관련된 답변 글이 많이 올라와 있는데, 모두 읽어보시는 것이 좋을 듯합니다. 24절기, 24기, 음양력, 음력, 합삭, 계산 따위의 검색어를 사용하시면 금방 찾을 수 있습니다. 김동빈 http://211.57.134.129/~moon/


24기 입기 시각을 계산하는 것과 같은 방법으로 72후의 입후 시각을 계산할 수 있습니다. 15도나 5도 간격이 아닌 임의의 간격(1도, 2도 등)으로도 계산할 수 있습니다. 태양의 시황경이 72후 각각에 해당하는 값과 일치하는 시각을 찾는 문제이므로, 간단한 수치해석에 의한 방법으로 해결할 수 있습니다.

한 가지 문제가 되는 것은, 태양의 시황경을 얼마나 정확하게 계산할 수 있느냐 하는 것입니다. 72후의 평균적인 날짜만 구한다면 모르겠지만, 실제의 72후 날짜와 시각을 계산하려면 태양의 시황경을 정확하게 계산할 필요가 있습니다. 이것은 천문 계산에 경험이 없는 일반인의 입장에서는 쉽지 않은 문제입니다. 태양의 시황경을 계산하는 구체적인 절차와 수식을 알려드리는 대신에 누구나 이용할 수 있는 간편한 방법을 알려드리겠습니다.

(1) 가장 쉬운 방법은 역서에 발표되는 24기 시각을 이용하는 것입니다. 각 기 사이의 시간 간격을 3등분하면 72후 시각을 근사적으로 구할 수 있습니다.

(2) 위의 방법보다 좀더 정확한 값을 구하려면 보간법을 이용해야 합니다. 역서에 1일 간격으로 태양의 시황경이 수록되어 있습니다. 이것을 이용하여 시황경이 일정한 값(0도, 5도, 10도 등)에 이르는 순간의 시각을 꽤 정확하게 계산할 수 있습니다.

위 두 가지의 근사적인 방법보다 더 정확한 값을 구하려면 태양의 시황경을 정밀하게 계산해야만 합니다. 태양 시황경의 계산 절차와 수식은 다음 책에 잘 설명되어 있습니다.

책 제목: Astronomical Algorithms
저자: Jean Meeus
출판사: Willmann-Bell Inc.

김동빈

글쎄요?
지나간 것은 시중에 나와 있는 만세력에 다 나와 있는데-- 물론 앞으로의 것도. 시중 달력도 거의 다 우리자료 가져다가 쓰니까 같을거에요. 만세력 중 천문연구원 자료를 이용한 것을 찾아보세요. 서점이나 큰 도서관에서 구하실 수 잇겠죠. 제 기억으로는 우리에게서 자료를 가져간 곳이 녹진 출판사의 만세력중 1판 2쇄이상의 책, 역이원의 만세력, 동양출판사의 만세력(아마 이건 절판되었을 것이고)이 있고, 남산당의 만세력도 우리 자료를 쓴 것으로 알고 있어요.

 

작성자 : 안영숙 작성일 : 2002-05-14 조회 : 27
답변: 입절시간에서 동경시와 우리나라와의 차이

현재 입절시간은 동경 135도를 기준으로 한 것입니다.

 

작성자 : 안영숙 작성일 : 2002-04-29 조회 : 43
답변: 24절기에 대하여

24절기는 태양이 태양의 운행궤도인 황도상의 어느 지점에 있느냐에 따라 결정됩니다.

즉 황도가 360도이고, 절기는 24이므로, 360/24=15도가 나오죠. 그래서 태양이 0도에 있을 때를 춘분점으로 하여, 15도, 30도, 45도--으로 15도의 배수가 될 때마다 절기 이름을 붙여줍니다. 절기명칭은 과거 춘추전국시대에 중국에서 처음 나온 것으로, 그것을 우리나라에 그대로 도입한 것으로 알고 있습니다. 따라서 그 당시의 중국의 위치가(황하강 근처 인듯 한데--확실히는 모름))와 우리나라의 위치가 다르므로 우리나라 계절감각과는 차이가 있습니다. 그 당시에는 1년을 24로 나누어서 절기를 결정했습니다. 그러나 현재는 앞에서 설명한 것처럼 태양의 궤도의 위치로 결정하므로 절기의 날짜는 1일 범위 내에서 왔다갔다 기 하지만 늘 같은 시기에 옵니다. 더 이상의 질문이 필요하시면 위의 메일 주소로 연락주시면 됩니다.

작성자 : 성언창 작성일 : 2000-03-13 조회 : 122
Re: 절기의 시간은 왜 해마다 조금씩 틀린가요?

장승진 wrote:

> 조금 1년의 정확한 시간에 대하여 정확하게 알려주셔서 많은 도움이 되었습니다. 그런데 또 의문이 생기는 것이 있어 질문을 드립니다. 대단히 죄송합니다.
> 예로서 입춘에서 경칩까지 2000년은 29일 18시간 2분인데 2001년은 29일 18시간 4분으로 2분이 많은 차이가 나고 입동에서 대설까지 2000년은 29일 16시간49분인데 2001년은 29일 16시간 52분으로 3분이 많은 차이가 나며 입추에서 백로까지 2000년은 31일 2시간 57분이고 2001년은 31일 2시간 54분으로 오히려 3분이 적습니다.

> 이러한 현상이 발생하는 이유를 알고 싶습니다. 가능한 상세히 알려주시면 많은 도움이 되겠습니다. 수고하십시요. 고맙습니다.

답:
절기는 태양의 경도 (황경이라고함, 춘분점에서 황도면을다라 잰 각도)를 24등분하여 15도 간격으로 배치한 것입니다. 그런데 지구는 태양 주위를 타원을 따라 공전하므로 절기간의 시간이 서로 다르게 됩니다. 지구는 1월 4일경 근일점을 통과하고, 7월 4일경 원일점을 통과하게 되므로 겨울에 상대적으로 빠르게 운행합니다. 즉 겨울이 절기간의 시간이 더 짧게 됩니다. 한편 지구의 운행은 여러 가지 요인으로 불규칙합니다. 따라서 매년 절기간의 시간이 약간씩 다르게 됩니다.

작성자 : 김동빈 작성일 : 2000-07-27 조회 : 99
작성자 : 김동빈 작성일 : 2001-02-16 조회 : 174

답변: 양음력변환39999년까지 계산 가능하게 한 프로그램소스

안녕하십니까? 저는 천문연구원의 연구원은 아니지만, 음양력 계산에 관심이 많은 사람으로서 박규선력(편의상 붙인 명칭임)의 문제점을 몇 가지 지적하고자 합니다.

일단 박규선 씨의 글에서 문제의 소지를 안고 있는 부분부터 인용합니다:

> '음력달력이 현재 쓰이는 observation-based calednar 이지만 지구의 특정나라에서의

> '관측에 의한 역은 그 한나라에서만 쓰일 뿐 세계적 의미는 옅다.

> ......

> '제가 바라는 것은 지금 음력달력을 가지고간 미국에 사는 우리 교포가 보았을때도

> '관측자의 위치가 우리나라의 지표면이 아닌 그리고 중국의 지표에서 별개로 존재하는

> '달력이 아닌 지구의 중심에서의

> '음력을 세계적으로 표준화하기 위한 노력이 필요하지 않나 하는 생각입니다.

 

먼저, 현재의 태음태양력이 지구상의 특정 지역에서만 통용되는 역이 아니라는 점을 아셔야 합니다. 현행 태음태양력이 천문 현상을 역면에 충실히 반영하려는 노력의 소산인 것은 분명합니다만, 합삭 시각이나 24절기 시각은 지구 중심에 위치한 가상의 관측자에 의해 측정되는 시각입니다. 음력과 관련된 천문 현상을 추산하는 데 쓰이는 좌표계는 전세계적으로 통일되어 있습니다. 국제천문연맹(IAU)에서 권고한 기초 천문 상수와 좌표계를 무시할 경우 계산 결과를 공인받기 어려운 현실을 인정해야 합니다.

역서에 실린 합삭 시각이나 24기 입기 시각은 특정 국가에서 관측한 값이 아닙니다. (이상하게 들리겠지만) 역서에 음양력 대조표는 관측자 중심(topocentric) 좌표계를 기반으로 계산된 것이 아닙니다. 다시 말하면, 지표상에서의 어느 지점을 기준점으로 하여 계산되지 않는다는 것입니다. 음양력 대조 자료는 모두 지구 중심(geocentric) 좌표를 바탕으로 계산됩니다. 합삭 시각과 24기 입기 시각 추산에 필요한 좌표는 해와 달의 지구중심 황경입니다. 따라서, 나라에 따라 (역서에 기재할) 합삭 시각과 입기 시각이 달라지지 않습니다.

다만, 세계 협정시(UTC)로 표시된 시각을 자국의 표준시로 표시하는 과정에서 날짜가 하루씩 달라질 수는 있으나 이는 어디까지나 표준시와 UTC 사이의 변환의 문제입니다. 그리니치에서의 표준시로 0시는 한국표준시로 9시에 해당하는데, 동일한 시점을 각기 다른 숫자로 표시한 것에 불과합니다. 한 마디로 표기법의 문제라는 얘기입니다. (제가 쓴 다른 글을 꼼꼼히 읽어 보기 바랍니다.)

결국, 박규선 씨의 주장(위의 인용문)은 사실에 근거한 것이 아님이 밝혀졌습니다. (박규선 씨의 표현을 사용한다면) 현행 태음태양력은 이미 지구 중심에서의 음력입니다. 나라마다 시각이 다르게 표시되는 것은 표준시 체계와 관련된 문제이지 음양력 계산의 문제가 아니라는 점을 분명히 이해하시기 바랍니다.

두 번째로, 현재까지 축적된 천체역학적 자료만 가지고는 10000년 전후의 달의 위치를 정확히 계산할 수 없다는 점을 지적하고 싶습니다. 해와 달과 행성 사이의 상호작용이 너무나도 복잡하기 때문에 수퍼컴퓨터를 사용하더라도 만년 전의 달의 위치를 알 수 없습니다. 먼 과거로 갈수록 계산에 필요한 많은 요소들이 불확실해지기 때문입니다. 현재 알고 있는 각종 천문상수가 장기간에 걸쳐서 조금씩 변하는데 이러한 사실이 박규선력에 전혀 반영되어 있지 않습니다.

또한 현재로서는 예측조차 하기 어려운 요소도 있습니다. 가장 대표적인 현상이 지구 자전의 지연 현상입니다. 달에 의한 조석 작용으로 지구의 자전 주기는 점점 길어지고 있는데 그 지연 정도를 정확히 예측할 수 없습니다. 장기적인 관점에서 볼 때, 지구의 자전은 지구 내부의 유동성 물질의 운동에도 큰 영향을 받습니다. 외핵과 맨틀 사이의 전자기적 결합(electromagnetic coupling) 효과에 의한 영향도 무시할 수 없다고 합니다. 수천 년 전에 지구의 어느 지점이 정확히 어느 방향을 향했는지는 아무도 모릅니다. 영국의 스테펜슨(F.R.Stephenson)이라는 학자가 이 분야의 전문가인데, 이 사람의 책을 읽어 보니 기원전 4000년의 경우 지구 자전의 불규칙성에 기인한 불확실성이 무려 두 시간(자전각 30도에 해당)에 달한다고 합니다. 지구 자전과 관련된 불확실성의 정도는 경과된 시간의 제곱에 비례한다고 알려져 있습니다.

실망스럽겠지만, 박규선력은 제가 지적한 두 가지 측면에서 결함을 안고 있습니다. 수천 년 동안의 음양력을 하루나 이틀 이내의 오차로 변환하는 프로그램을 짜 보는 것은 취미로서는 그럴듯한 일이기는 하지만 적용 가능 범위를 지나치게 넓게 잡는 것은 천문학적으로 무의미합니다. 혹시 현대의 천문 계산법을 공부할 의향이 있다면 필요한 책이나 논문의 제목 정도는 제공해 드릴 수 있습니다.

저의 글이 음양력 변환 프로그램을 짜려는 분들께 조금이라도 도움이 될 수 있기를 바랍니다. 끝까지 읽어 주셔서 감사합니다.

제천 화산초등학교 김동빈 http://211.57.134.129/~moon/

 

####

박규선 질문:

> 프로그램의 아웃풋 결과물은 파일첨부했습니다.

> 어쩌면 이번 결과물은 검토를 못하실런지도 모르겠군요~

> 이하는 소스입니다.

> 'VB로 작성한 clsSolarLunar 클레스입니다.

> '지금당장 부터 음력달력은 이것으로 하자고해서 내놓은것이 결코 아닙니다.

> '아직 공식인정된 근거는 없습니다.

> '경험치와 막코딩으로 이루어진 결과물은 결코 아닙니다.

> '그렇다고 아주 대단하다~도 아니며...

> '제가 가독성,이식성을 고려하고 또 어느정도 최적화시켜

> '훑어보시기만 해도 이해가 가리가 생각됩니다.

> '프로그램명칭:양력 음력 rule-based calendar

> '기능: 79999년까지 계산가능

> '용도:양력을 음력으로 환산하는데 있어서 천문상수를 적용하여 몇만년 후도 계산

> '작성일:2001년2월15일

> '참고자료 및 문헌:

> ' http://www.issa.re.kr

> ' 웅진출판사)민족문화대백과사전(태음력,태양력)

> '

> '도움을 주신분:

> ' 김동빈 선생님(제천 화산초등학교 http://211.57.134.129/~moon/)

> ' 안영숙 연구원(한국천문연구원 http://www.issa.re.kr)

> '만든이 박규선(E-mail:iqup@kebi.com)

> '

> '달의 일식을 관찰하거나 보름을 관찰하기 위한 용도의 음력 달이이 결코 아님

> '천문상수를 이용하여 상당히 오랜기간동안 대체로 정확하게 아웃풋이 나오도록

> '프로그래밍 한것에 의미가 있을 뿐임을 밝힘

> '음력달력이 현재 쓰이는 observation-based calednar 이지만 지구의 특정나라에서의

> '관측에 의한 역은 그 한나라에서만 쓰일 뿐 세계적 의미는 옅다.

> '

> '미흡한 점, 보완해야 할점

> '천문상수를 더욱 정밀하게 구하는 미래에는 적용하기 어렵다. 그래서 그 한계를 79999년으로 하였음

> '80000년을 양력에서 윤달일 가능성이 있는이유도 있고 그 이후면 천문상수도 더욱 정밀하게 구해지거나 윤초 등 고려해야할 사항들이 많아질것이기 때문이다.

> '음력달력의 표준화 내지는 세계화에 기여할 수 있지 않을까요

> '

> '에필로그

> '미흡한 점이 많습니다. 제가 아는게 많아서 이런 걸 내놓은 것은 결코 아닙니다.

> '부족한 점에 여러모로 지도해주시고 질책해주시고 조언해주신

> '김동빈님과 안영숙님께 감사드립니다. '한국 나아가 세계 천문학의 발전을 파이팅하며!!

>

> Option Explicit

>

> Public SYear As Long '양력년

> Public SMonth As Integer '양력월

> Public SDay As Integer '양력날

>

> Public MYear As Long '음력년

> Public MMonth As Integer '음력월(음수면 윤달)

> Public MDay As Integer '음력일

>

> Public cLead As Double '양력과 음력의 앞선 정도[day]

> Const cLunar = 29.53059 '1태양력

> Const cSolar = 365.24219 '달의 삭망주기

> Dim dLeapInterval As Double '평균적으로 음력윤달이 생기는 날[day]

> Public Sub calMoon()

> Dim nSolarLeap As Integer

> Dim MyYear As Long

> Dim lGross As Double

> Dim nLeapCount As Single

> Dim dGrossDay As Double, dLeapStartDay As Double, u As Integer

> Dim dLeapNearDay As Double

> Dim mo As Integer

> Dim f As Single

> Dim ye As Long

> Dim m As Integer

>

> nSolarLeap = 0

> If 0 = SYear Mod 4 Then

> nSolarLeap = 1

> If 0 = SYear Mod 100 Then

> nSolarLeap = 0

> If 0 = SYear Mod 400 Then

> nSolarLeap = 1

> If 0 = SYear Mod 3200 Then '박규선력 이라고 주장하는 부분은 단지 이부분 뿐입니다. 김동빈님~

> ' 3200년은 2월달이 28일까지 있어야 한다.(그레고리오력의 확장보완력이 될 수 있습니다.)

> '계산근거는 2558번게시물에 있습니다.

> nSolarLeap = 0

> If 0 = SYear Mod 400000 Then '이것은 보류사항이지만 400000년 이상의 달력을 구할수 있다는것이며

> nSolarLeap = 1

> End If

> End If

> End If

> End If

> End If

>

> MyYear = SYear - 1

>

> Select Case SMonth

> Case 1

> Case 2

> dGrossDay = 31

> Case 3

> dGrossDay = 59 + nSolarLeap

> Case 4

> dGrossDay = 90 + nSolarLeap

> Case 5

> dGrossDay = 120 + nSolarLeap

> Case 6

> dGrossDay = 151 + nSolarLeap

> Case 7

> dGrossDay = 181 + nSolarLeap

> Case 8

> dGrossDay = 212 + nSolarLeap

> Case 9

> dGrossDay = 243 + nSolarLeap

> Case 10

> dGrossDay = 273 + nSolarLeap

> Case 11

> dGrossDay = 304 + nSolarLeap

> Case 12

> dGrossDay = 334 + nSolarLeap

> End Select

> dGrossDay = dGrossDay + 365# * MyYear + Fix(MyYear / 4) - Fix(MyYear / 100) + Fix(MyYear / 400) - Fix(MyYear / 3200) + Fix(MyYear / 400000) + SDay + cLead

>

> nLeapCount = Fix(dGrossDay / dLeapInterval)

>

> dLeapStartDay = dLeapInterval * nLeapCount '오늘로 부터 과거 최근에 음력윤달이 있었던 날수

>

> u = 1

> If -0.0000000001 < fPart(dLeapStartDay / cLunar) And fPart(dLeapStartDay / cLunar) < 0.0000000001 Then

> u = 0 '만약의 경우 딱맞아 떨어지는 경우는 음력윤달의 기준을 이번달로 정하기 위해서

> End If

>

> 'dLeapStartDay 로 부터 쉬프트시켜 보정한 최근의 음력윤달이 있는 날수

> dLeapNearDay = (Fix(dLeapStartDay / cLunar) + u) * cLunar + 18 * cLunar '19를 넣으면 그 다음달이 윤달이 되는식(이식성높음)

> '음력윤달을 정하는 나름대로의 규칙이므로 일종의 치윤법이라고 할 수 있을것 같아 제시합니다.

> '이 한줄 계산식이 나오는데 있어서 저도 한달 이상이 소요되었습니다.

> '선현들의 지혜를 무시한 한줄짜리 코딩이 결코 아님을 밝힙니다.

> '여러 선현들의 지혜와 오랜기간의 전통이어서 더욱 중요한 현명한 치윤법이라고 본다면 천문학의 발전은 없을 것입니다.

> '

> '저 또한 지금까지 공표된 음력달력을 쓰지 말자하는 것은 결코 아닙니다.

> '제가 바라는 것은 지금 음력달력을 가지고간 미국에 사는 우리 교포가 보았을 때도

> '관측자의 위치가 우리나라의 지표면이 아닌 그리고 중국의 지표에서 별개로 존재하는

> '달력이 아닌 지구의 중심에서의

> '음력을 세계적으로 표준화 하기 위한 노력이 필요하지 않나 하는 생각입니다.

> '

> mo = Fix(12# * fPart((Fix(dGrossDay / cLunar) - nLeapCount) / 12#) + 1.001) '이번달은 몇월[달]에 속하는지를 계산

> MYear = Fix((Fix(dGrossDay / cLunar) - nLeapCount) / 12# + 1.001) '대략적인 년도

> If dLeapNearDay <= dGrossDay Then '구하고자하는 날이 음력윤달이 있은 후의 달에 속하면

> mo = mo - 1 '정량적으로 구한 달 수치에서 1을 뺌

> If mo = 0 Then '뺀것이 0이 되면 0월은 없으므로

> mo = 12 '12로 바꿈

> End If

> 'mo=1~12 까지의 값

>

> If dLeapNearDay + cLunar >= dGrossDay Then '음력윤달이 되는 조건이면

> mo = -1 * mo '부호를 바꿔 음력윤달임을 표기함

> End If

> End If

>

> MMonth = mo

>

> f = (fPart(CDbl(dGrossDay / cLunar)) * cLunar) + 1 '구한값에서 소수점이하는 버림 한 값을 음력의 날자로 처리했음 문제의 소지가 많음

> MDay = Fix(f)

>

> If Abs(SYear - MYear) >= 2 Then '대략적인 년도와 양력연도의 차이가 2 이상이면 에러처리함

> MYear = 0 '에러

> Else

> Select Case Abs(MMonth) '음력윤달인경우는 음수이므로 절대값

> Case 1 To 3 '1월~3월 이면 6개월 후의 대략적인 연도

> MYear = calYear(CDbl(dGrossDay + 182#)) '365/2 가 가장 안전

> Case 10 To 12 '10~12면 6개월전의 대략적인 연도로 결정함

> MYear = calYear(CDbl(dGrossDay - 182#))

> End Select

> End If

> End Sub

> Public Sub calSun()

> '업그레이드시 작성해야 할 부분..

> End Sub

>

> Private Sub Class_Initialize()

> 'Dim ymax As Currency

> 'ymax = 1

>

> dLeapInterval = 991.789265910147 '991.789265910147115753311920523103 윈도우공학용 계산기의 계산결과

> '계산근거식:dLeapInterval = ymax / ((cSolar * ymax - cLunar * 12 * ymax) / (cLunar)) * cSolar

> 'clead = -40.1533 '1881년~2043년까지의 2016번의 합삭일중 오차가 가장 적게하기 위한 계수

> '

> Me.cLead = -40.1533 ' 현행 달력과의 오차정도 743/2016*100[%]=약36%

> '-40.1533 의 수치의 의미:양력이 항상 음력보다 앞서는데 그 차이의 평균날(day) 참고:1881년~2043년까지의 양.음데이터로 부터 계산

> '만약 오늘이 양력 2월24일이라면 음력달력없이 대략 40.1533을 뺀 1월 14일경(음력)으로 예상할 수 있다.

> '계산 근거:

> '합삭이 되는 양력일을 추린 후 계수를 변화시켰을때의 에러발생이 최소화되는 계수를 정했음

>

> End Sub

> Private Function fPart(ByVal m_num As Double) As Double '정수부분 삭제함수

> fPart = m_num - Fix(m_num)

> End Function

> Private Function calYear(m_num As Double) As Long

> Dim nLeapCount As Single

> Dim dGrossDay As Double

> dGrossDay = m_num

> nLeapCount = Fix(dGrossDay / dLeapInterval)

> calYear = Fix((Fix(dGrossDay / cLunar) - nLeapCount) / 12 + 1.1) '대략적인 년도 (1.1을 더한이유는 절삭오차 감안)

> End Function

 

Re: 고대절기일

이성원 wrote:

> 안녕하세요.

> 중국고대사를 전공하고 있는 연구자입니다.

> 문의를 하고 싶은데요.

> 일반적으로 24절기는 약간의 오차를 두면서

> 규칙적으로 반복되는데요.

> 예를 들면 입춘의 경우는 대개 양력으로는 2월4일경이라고

> 하죠. 올해의 경우는 2월4일이 정확히 입춘(음력 섣달그믐)이었죠.

> 그러나, 이 절기일은 해마다 양력과 음력간의 오차로 수시로 변하는

> 것 같은데, 이를 좀더 정확히 계산할 수는 없나요.

>

> 개인적으로 B.C.224년에서 B.C.222년까지의 [입춘-춘분-입하-하지-입추-추분-입동-동지] 의 (음력이든 양력이든)일자를 확인하고 싶은데요.

>

> 혹 방법이 있다면 알려주세요

 

####

이러한 질문에 한국천문연구원의 연구원도 아닌 사람이 답변을 해도 되는지 모르겠습니다. 어쨌든 저의 관심사와 관련된 문제를 만났으니 아는 만큼 설명해 보겠습니다.

24기 입기 시각은 태양의 황경이 특정한 값에 이르는 순간입니다. 예를 들면, 태양의 황경이 0도, 90도, 180도, 270도가 되는 순간을 각각 춘분, 하지, 추분, 동지라고 합니다. 24기의 입기 시각은 매우 정확하게 계산할 수 있습니다.

입기 시각이 매년 조금씩 변하는 것은 음양력 변환의 오차 때문이 아닙니다. 그것은 우리가 사용하는 달력에 결함이 있기 때문입니다. (지구상의 관측자가 보기에) 태양은 1년(회귀년) 동안 하늘을 한 바퀴 돕니다. 1년은 약 365.2422일인데, 달력상의 1년은 365일이거나 366일입니다. 이 때문에 지구의 공전이 일정하더라도 24기 입기 시각은 매년 조금씩 달라집니다. 그리고 지구의 궤도 이심률과 근일점의 경도가 장기간에 걸쳐서 변하기 때문에 입기 시각과 절기 사이의 간격도 조금씩 달라집니다.

태양의 황경을 2초(각) 이하의 오차 범위 내에서 계산한다면, (지구의 자전이 장기간에 걸쳐 매우 일정하다는 가정하에) 24기의 입기 시각을 1분미만의 오차로 추정할 수 있습니다. 메우스(J.Meeus)의 책("Astronomical Algorithms", Willmann-Bell)의 부록에 수록된 계산 항을 이용하면, 태양의 황경을 1초미만의 오차로 계산할 수 있습니다.

 여기에서, 한 가지 분명히 알아두어야 할 것이 있습니다. 천문학에서 천체의 위치를 계산할 때에는 지구역학시(TDT)라는 균일한 시간계를 사용합니다. 이 시간계는 지구의 자전과 무관합니다. 반면, 일상 생활에 쓰이는 시간(상용시)은 균일하게 흐르지 않습니다. 지구의 자전이 균일하지 않기 때문입니다. 그러므로 지구 역학시로 표시된 시각을 상용시로 변환해야 하는 문제가 생깁니다. 지구 역학시와 상용시와의 차이를 델타T라고 합니다. 델타T를 계산할 때 쓸 수 있는 공식이 몇 가지 있으나, 그 어느 것도 정확하다고 볼 수는 없습니다. 기원전 4000년의 경우, 역학시를 상용시로 변환할 때 발생하는 불확실성은 두 시간에 달합니다.

아래의 입기 시각은 태양의 황경을 계산하여 얻은 결과입니다. 계산 방법이 궁금하시면 제 홈페이지 http://211.57.134.129/~moon/ 의 "천문 계산과 역법" 페이지를 참조하십시오.

현행 그레고리력은 1582년 이후에나 사용되었으므로, 아래의 입기 시각은 율리우스력의 날짜로 표시하였습니다. 아래의 입기 시각의 오차는 2시간 미만입니다. (그러나 제 설명을 절대적으로 믿지는 마십시오. 역 계산에 관한 믿을만한 정보는 한국천문연구원의 역서팀에 직접 문의하여 구하시기 바랍니다.)

 

작성자 : 김동빈 작성일 : 2000-06-08 조회 : 73

Re: 고대절기일 - 평기법에 따른 입기 시각

이성원 님의 질문에 대하여 제가 올린 답변 내용에 몇 가지 문제가 있어서 약간의 설명을 보충합니다. 제 글(#280)의 문제점은 김봉규 님의 글(#282)에 잘 설명되어 있습니다.

김봉규 님의 지적대로, 저는 당시의 역법 체계를 고려하지 않고 현대적인 방법에 따라 입기 시각을 계산하였습니다. 제가 계산한 입기 시각은 한국천문연구원의 역서에 수록된 값과 대부분 일치합니다. 그러나 시헌력 도입 이전에는 동지 시각을 먼저 결정하고 그 다음 동지까지의 시간 길이를 24등분하여 입기 시각을 추산했습니다. 이런 방식(평기법)에 의하여 추산된 입기 시각은 실제의 태양의 운행을 반영하지 못하는 단점을 안고 있습니다.

어쨌든 기원전 220년 무렵의 역법 체계를 고려하여 입기 시각을 다시 계산해 보았습니다. 동지 시각을 계산하는 방법은 280번 글에 설명된 것과 동일합니다. 모든 시각은 율리우스력의 날짜와 한국표준시로 표시하였습니다.

 

B.C. 224년

입춘 2월 8일 8시 51분

춘분 3월 26일 0시 33분

입하 5월 10일 16시 16분

하지 6월 25일 7시 59분

입추 8월 9일 23시 42분

추분 9월 24일 15시 24분

입동 11월 9일 7시 7분

동지 12월 24일 22시 50분

 

B.C. 223년

입춘 2월 8일 14시 35분

춘분 3월 26일 6시 20분

입하 5월 10일 22시 5분

하지 6월 25일 13시 50분

입추 8월 10일 5시 35분

추분 9월 24일 21시 20분

입동 11월 9일 13시 5분

동지 12월 25일 4시 50분

 

B.C. 222년

입춘 2월 8일 20시 35분

춘분 3월 26일 12시 20분

입하 5월 11일 4시 4분

하지 6월 25일 19시 49분

입추 8월 10일 11시 34분

추분 9월 25일 3시 19분

입동 11월 9일 19시 3분

동지 12월 25일 10시 48분

동지 시각이 제가 먼저 올린 계산값(#280 참조)과 약간 다른데, 위의 시각이 더 정확합니다. 그러나 그 차이는 무시할 수 있을 정도로 작은 값입니다. 지구역학시(TDT)를 상용시로 변환할 때 발생하는 불확실성에 비하면 그다지 큰 차이가 아닙니다.

제가 제시한 수치는 동지 시각을 현대적인 방법에 따라 계산한 것이지 당시의 역 계산법에 따른 결과가 아닙니다. 그러므로 위의 입기 시각은 당시에 실제로 쓰였던 값과 일치하지 않을 가능성이 높습니다. 그리고 제가 이 분야의 전문가가 아니므로, 제가 짠 프로그램 자체에 문제가 있을 가능성도 있습니다. 김동빈 http://211.57.134.129/~moon/

 

작성자 : 이성원 작성일 : 2000-05-02 조회 : 67

Re: 고대중국의 절기와 역법

안녕하세요.

저는 서울대 동양사학과에서 중국고대사를 전공(박사과정)하고 있는 이성원입니다.
여러분께서 보내주신 답변 잘 받았습니다. 정말 고맙습니다.

고대 中國人들에게 있어서 節氣는 농경생활에서 만이 아니라 일상적인 생활 면면에 많은 영향을 미치며 규제를 가하는 원리였습니다. 이미 선사시대부터 고대인들은 자연운행의 규칙에 따라 자신들의 생활리듬을 규제하였는데, 전설상의 王朝인 夏의 曆法이었다는 [夏小正]이나, 갑골문에 보이는 殷代의 십일단위의 간지법, 周의 月令이었을 <<詩經>>[七月詩]가 전하고 있으나 이들은 農家月令的인 성격을 벗어나지 못하고 있고, 적어도 (春秋)戰國時代에 기록으로 추정되는 <<禮記>> [月令]이나 <<淮南子>> [時則訓] 등에서 비로소 정확히 24절기는 아니라도 12개월마다의 절기가 소개되고 있습니다.

가장 완비된 형태로 기록된 것이 전국시대말기의 <<呂氏春秋>> [12紀]입니다. 陰陽 순환의 자연원리에 따른 절기가운데 冬至와 夏至는 가장 중요하였으며, 국가도 이 절기에는 성대한 의식을 거행했습니다, 冬至 夏至와 관련된 고대인들의 의식은 이미 신석기시대의 유적에서부터 추적해 볼 수 있습니다. 전 중국대륙에 걸쳐 위도와 경도, 기후와 환경의 차이에 따른 농경방법과 생활상의 절기가 다양함에도 불구하고, 특히 B.C.221년 秦始皇에 의해 중국이 통일된 이후 중국의 역대왕조는 국가가 반포한 曆法과 節氣를 전지역에 통일적으로 관철시키려고 하였는데, 이는 天下人民은 물론 天文과 時間, 그리고 자연만물의 원리도 皇帝一人이 지배하고 운용한다는 專制支配의 반영이었죠.

그러나 이러한 節氣儀式과 관려된 司馬遷 <<史記>>의 [律書], [曆書], [天官書]나 班固 <<漢書>>의 [律曆志], [祭祀志] 등의 기록을 보아도 대개 月만을(물론 음력) 기록한 경우가 대부분입니다. 그러나 근래에 고고학적인 발굴에 의해(가령 睡虎地秦簡이나 尹灣漢簡 등의 簡牘資料) 고대 秦漢시대(B.C.2C-A.D.2C)의 士人이나 官僚들은 일종의 달력이자 易書인 책자(이를 <<日書>>라고 함)를 항상 휴대하고 다녔는데, 그 내용에는 이들이 吉日과 凶日을 정하여 이에 따라 外出, 出張, 結婚 및 기타 가정과 一身의 대소사를 선택하고 운영했음이 밝혀졌습니다.

물론 일견 미신적인 것 같지만 그 근거는 태양과 달의 운행을 음양오행적으로 분석하고, 특히 규칙적으로 반복되는 태양의 이동에 기초한 節氣日의 儀式을 철저히 지켰음도 밝혀졌습니다. 이러한 日書에는 대개 干支法에 따라 甲子(日), 乙丑(日) … 등등으로 각각의 날자를 기록하는데, 가능하면 天文學을 이용해 정확한 날자(음력이든 양력이든)를 확인하고 싶었던 겁니다. 협조에 진심으로 감사드리며 혹 또 다른 의문이 있으면 문의 드리겠습니다.

책 제목: Astronomical Algorithms

저자: Jean Meeus

출판사: Willmann-Bell Inc.

김동빈

 

 

####

흔히 말하는 <역서>는 한국천문연구원에서 매년 편찬하여 발간하는 것으로, 일력 자료, 천문 관측에 필요한 기본 자료, 역 관련 자료 등이 수록되어 있습니다. 역서는 역법을 공부하는 사람에게는 필수적인 자료입니다. 2003년의 역서는 <역서 2003>이라는 제목으로 남산당에서 발행되었습니다. 엄밀하게 말하자면, 한국천문연구원에서 편찬한 것만이 역서이고, 나머지 것들은 유사품(?)입니다. 한 나라의 역서가 여러 가지이면 곤란합니다.

역서에 1일 간격으로 태양의 시황경이 수록되어 있기는 하지만, 사용상 주의할 점이 있습니다. 역서의 시황경은 표준시가 아닌, 지구시 0시 기준의 값입니다. 최종적으로 지구시로 표시된 입기 시각을 표준시로 환산해 주어야 합니다. 또 한 가지 알아두실 점: 태양의 시황경 계산에서 1초(각)의 오차가 있으면 입기 시각에서 24초(시간)의 오차가 발생합니다. 만일 시황경의 오차가 1분이라면 입기 시각은 무려 24분이나 어긋나게 됩니다.

제 이메일 주소(kimdbin@chollian.net)는 예전 그대로이지만, 받기만 하고 답장은 거의 안 하고 있습니다(일일이 답장할 시간이 없어서). 홈페이지(http://user.chollian.net/~kimdbin)도 있지만 그대로 방치해 두고 있는 형편입니다. 요즘엔 예전만큼 천문 계산에 몰입하지 못하고 있습니다.

김동빈

Posted by 무중 이승수 지지닷컴


절기-360(通)과 365(變)

먼저 절기가 15.25일 이라고 어디에 그렇게 써 있습니까?
정말 무식한 소리입니다. 이 학문은 이렇게 멋대로 만들어 내니, 발전할 수 없는 것입니다.  절기는 15일도 되고 14일도 되고 16일도 됩니다.  쉽게 얘기해서 날짜 기준으로  볼 때 제 멋대로 變하는 존재이기에 규정할 수 없다는 것입니다.

다시 설명 드리겠습니다.
지구를 중심으로 태양이 공전하는데, 가장 북쪽에 이를(至) 때를 하지라고 하며, 가장 남쪽에 이를(至) 때를 동지라고 하며, 그 것을 반씩 나누어, 가장 동쪽에 나누어(分) 있을 때를 춘분, 가장 서쪽에 나누어(分) 있을 때가 추분입니다. 이것을 2分2至라고 하는데, 바로 5행의  기본 원리가 됩니다.(내경 참조) 위 4등분을  기준으로 다시 8등분, 16등분,  24등분으로 세분(節)하여 놓은 것을 節氣라고 합니다.

그러니까 날짜입장에서 볼 때는 제 멋대로 變하는 존재일지 모르지만, 천문입장에서 보면 1년이 365일이던  375일던 관계없이 절대적으로  變하지 않고 通하는 진리라는 것입니다. 이것이  通(진리)과 變(현상)의 세계입니다. 구분하시겠지요.^^ 따라서 사주학이  절기의 학문이라면 1년이  몇 일 이든지 관계없이 通할 수  있다는 것입니다. 단 그것을  적용하는 문제가 있겠지만, 그것은 차후 문제이고...

위 적용의 역사가 있으니 한마디 올리겠습니다.
분명히 절기라는 것은  위와같이 등분하여 적용하는  것임에도 불구하고, 실제로 이것이 적용된 것은 청나라 시헌혁명 이후입니다. 그러니까 지금처럼 절기가 왔다 갔다 적용된 것이 얼마  안됩니다. 그 이전에는 몇월 몇일로 고정되어 사용하여 왔습니다. 그런데 위와같이 왔다갔다 적용되어야 한다는 학설은 이미 수나라 수탁에 의해 존재하던 주장인데 이것이 수 천년지나 비로서 청나라때 적용된 것입니다. 따라서 그 이전에 적용된 절기는 지금의 절기적용과 다릅니다.

이 부분은 아주 중요한 부분을 시사하고 있습니다.
누가 그러더라구요. 옛날에는 1년이 365.2525줄 모르기 때문에  360일이라고 했답니다. 천만에요. 5,000년전의 내경에는 분명 366일,  365일1/4 그리고 360일 모두 나옵니다. 즉 1년의 주기가  변해간다는 것을 알고 있었다는 것입니다. 그럼에도 불구하고 2,000이후 주역에서 공자 역시 1년은 360일이라고 했습니다. 왜 그랬을까요. 무식해서요.^^

1년은 360일입니다. 이것이 通하는 진리입니다.
지금 만세력은 365.2425입니다. 이것은 진리가 아니라 變하는 현상입니다.
자세한 이유는 생략하겠습니다. 아직은 때가 아니라서.... 욕먹기도 싫고...

2002-10-05
머무름을 알라!! 지지닷컴

Posted by 무중 이승수 지지닷컴


2.1.2. 일월(日月)

月閏(월윤)

소강절은 ‘황극경세서 관물외편·상’에서,"日以遲爲進 月以疾爲退 日月一會而加半日減半日 是以爲閏餘也 日一大運而進六日 月一大運而退六日 是以爲閏差也"(해는 천천히 나아가고 달은 빨리 물러간다. 일월이 한 번 만나면 반나절이 보태지거나 반나절이 덜어진다. 그래서 윤달의 나머지가 된다. 해가 한 번 大運하여 6일 나아가고 달이 한 번 大運하여 6일이 물러난다. 그래서 윤달의 차이가 된다)라고 설명한다.

- 일(日) -

2分2至(2분2지)

기백은 '황제내경 운기 지진요대론'에서,"氣至之謂至 氣分之謂分 至則氣同 分則氣異"(氣가 이르는 것을 至라하고 氣가 나누어지는 것을 分이라 한다. 至는 기가 같고 分은 기가 다르다)라고 氣가 같고 다름으로 2분2지를 설명한다.

日交(일교)

소강절은 ‘황극경세서 관물외편·상’에서,"日朝在東 夕在西 隨天之行也 夏在北 冬在南 隨天之交也 天一周而超一星 應日之行也 春酉正 夏午正 秋卯正 冬子正 應日之交也"(해는 아침에 동쪽에 있고 저녁에 서쪽에 있는데 하늘의 行을 따르기 때문이다. 여름에는 북쪽에 있고 겨울에는 남쪽에 있는 것은 하늘의 交를 좇기 때문이다. 하늘은 한 바퀴를 주천하는데 1星을 넘는데 해의 운행에 응하기 때문이다. 봄에는 酉로 正하고 여름에는 午로 正하고 가을에는 卯로 正하고 겨울에는 子로 정하는데 해의 交에 응하기 때문이다)라고 설명한다.

절기28수

‘天象列次分野之圖’에서,"冬至 昏室曉軫中 小寒 昏壁曉亢中 大寒 昏奎曉中 立春昏胃曉中 雨水 昏畢曉心中 驚蟄 昏參曉尾中 春分 昏井曉尾中 淸明 昏井曉箕中 穀雨 昏星曉斗中 立夏 昏張曉斗中 小滿 昏翼曉牛中 亡種 昏軫曉女中 夏至 昏亢曉危中 小暑 昏曉室中 大暑 昏房曉壁中 立秋 昏尾曉奎中 處暑 昏尾曉胃中 白露 昏箕曉昴中 秋分 昏斗曉參中 寒露 昏斗曉井中 霜降 昏斗曉井中 立冬 昏女曉星中 小雪昏處曉張中 大雪 昏危曉翼中"(동지에는 저녁에 실수에서, 새벽에는 진수에서 하늘에 나타난다. 소한에는 저녁에 벽수에서, 새벽에는 항수에서 하늘에 나타난다. 대한에는 저녁에 규수에서, 새벽에는 저수에서 하늘에 나타난다. 입춘에는 저녁에 위수에서, 새벽에는 저수에서 하늘에 나타난다. 우수에는 저녁에 필수에서, 새벽에는 심수에서 하늘에 나타난다. 경칩에는 저녁에 삼수에서, 새벽에는 심수에서 하늘에 나타난다. 춘분에는 저녁에 정수에서, 새벽에는 미수에서 하늘에 나타난다. 청명에는 저녁에 정수에서, 새벽에는 기수에서 하늘에 나타난다. 곡우에는 저녁에 성수에서, 새벽에는 두수에서 하늘에 나타난다. 입하에는 저녁에 장수에서, 새벽에는 두수에서 하늘에 나타난다. 소만에는 저녁에 익수에서, 새벽에는 우수에서 하늘에 나타난다. 망종에는 저녁에 진수에서 새벽에는 여수에서 하늘에 나타난다. 하지에는 저녁에 항수에서, 새벽에는 위수에서 하늘에 나타난다. 소서에는 저녁에 저수에서, 새벽에는 실수에서 하늘에 나타난다. 대서에는 저녁에 방수에서, 새벽에는 벽수에서 하늘에 나타난다. 입추에는 저녁에 미수에서, 새벽에는 규수에서 하늘에 나타난다. 처서에는 저녁에 미수에서, 새벽에는 위수에서 하늘에 나타난다. 백로에는 저녁에 기성에서, 새벽에는 묘수에서 하늘에 나타난다. 추분에는 저녁에 두수에서, 새벽에는 삼수에서 하늘에 나타난다. 한로에는 저녁에 두수에서, 새벽에는 정수에서 하늘에 나타난다. 상강에는 저녁에 두수에서, 새벽에는 정수에서 하늘에 나타난다. 입동에는 저녁에 여수에서, 새벽에는 성수에서 하늘에 나타난다. 소설에는 저녁에 허수에서, 새벽에는 장수에서 하늘에 나타난다. 대설에는 저녁에 위수에서, 새벽에는 익수에서 하늘에 나타난다)라고 설명한다.

日宿(일숙)

‘天象列次分野之圖’에서,"日爲大陽之精 衆陽之長去赤道表裏 各二十四度遠寒近暑而中和 陽用事則進北晝長夜短 陽勝故爲溫暑 陰用事則退南晝短夜長 陰勝故 爲凉寒"(태양은 큰 양의 精이고 양의 무리에 우두머리로 적도의 안과 밖으로 간다. 각각 24도 멀어지면 춥고 가까우면 더워져서 중화된다. 양의 쓰임은 북쪽으로 나가면 낮이 길어지고 저녁이 짧아진다. 양이 이기기 때문에 온화한 것을 베풀게 되는 것이다. 음의 쓰임은 남쪽으로 물러나서 낮은 짧고 저녁은 길게 된다. 음이 이기기 때문에 서늘하고 차가운 것이 된다) 라고 설명한다.

黃·赤道(황·적도)

‘天象列次分野之圖’에서,"黃赤道 日之所由謂之黃道 南北極之中度最均處謂之赤道 黃道者半在赤道外半在赤道內 東交於角五小弱 西交於奎十四小强"(황도와 적도: 태양이 지나가는 길을 황도하고 하고, 남극과 북극의 중간에 가장 평균되는 곳을 적도라고 한다. 황도의 절반은 적도 밖에 있고, 절반은 적도 안에 있다. 적도와 황도는 동쪽에서 角宿의 5도가 안 되는 곳에서 만나고, 서쪽에서는 奎宿의 14도가 조금 넘는 곳에서 만난다)라고 설명한다.

24절기

김수길 윤상철은 ‘천문류초 해설’에서, "24절기는 황도를 24등분한 것을 말한다. 춘분과 추분이란 낮과 밤의 길이가 똑 같은 것이고, 음과 양이 교접하는 것이다. 동지는 1년 중 밤이 가장 긴 때이고, 하지는 낮이 가장 긴 때를 말한다. 따라서 동지로부터 12절기가 있게 되는데, 동지·소한·대한·입춘·우수·경칩·춘분·청명·곡우·입하·소만·망종이 그것으로, 하지가 될 때 까지 점차 낮의 길이가 길어지고 밤의 길이는 짧아진다. 또 하지로부터 12절기가 있게 되는데, 하지·소서·대서·입추·처서·백로· 추분·한로·상강·입동·소설·대설이 그것으로, 동지가 될 때까지 점차 밤의 길이는 길어지고 낮의 길이는 짧아진다. 이 24절기는 만물이 봄에 태어나고 여름에 성장하며, 가을에 결실이 되고 겨울에 저장하는 마디가 된다. 즉 24계절을 나눌 때 동양에서는 4립(四立)이라 하여 입춘·입하·입추·입동을 계절의 시작으로 보고, 서양에서는 2분(分)2지(至)를 기준점으로 보아 춘분을 봄, 하지를 여름, 추분을 가을, 동지를 겨울의 시작으로 삼는다"라고 설명합니다.

황도12궁

이은성은 ‘역법의 원리분석’에서 "바빌론에서는 옛적부터 황도를 찾아내기 위해 황도의 남쪽과 북쪽에 각각 9˚씩, 폭 18˚의 긴 띠를 생각하여 이것을 수대(獸帶)(zodiac)라고 불러왔다. 그리고 대체로 이 수대 안의 12궁의 별자리를 물고기, 양, 황소, 쌍둥이, 게, 사자, 처녀, 천칭, 전갈, 궁수, 염소, 물병의 순서로 한 달에 평균 한 궁씩 동으로 옮겨가서 12개월에 1주한다"라고 황도12궁을 설명합니다.

동지궁수

이은성은 ‘역법의 원리분석’에서 "황도12궁중에 앞의 6궁은 북천에, 뒤의 6궁은 남천에 있다. 현재 대체로 춘분점은 물고기자리의, 추분점은 처녀자리의, 하지점은 쌍둥이자리의, 동지점은 궁수자리의 황도 상에 있다. 천구의 적도 위치는 오랜 세월이 지나면 세차운동에 의해 변할 수 있지만, 황도는 변하지 않으므로 황도12궁은 항상 수대 안에 있게 된다"라고 설명합니다.

12지궁

이은성은 ‘역법의 원리분석’에서 "황도12궁에 붙인 이름과 아울러 12지를 한 궁에 한 지씩 붙여서 쓰고 있다. 예컨대 백양궁과 술궁과 합쳐서 백양술궁이라고 부른다. 이 12지궁은 목성과는 반대로 동에서 서쪽으로 향하여 12년에 천구를 1주하는 가상적인 천체를 생각한다"라고 12지궁을 설명합니다.

2分2至와 28宿

김수길 윤상철은 ‘천문류초 해설’에서, "각 방위의 7수중에 첫 별(首星)인 각·정·규·두수는 모이는 것에 항상한 도수가 있으므로, 반드시 해질 무렵에 동쪽에 나타난다. 즉 적도선에는 경성(經星:恒星)28개가 있는데, 각·항·저·방·심·미·기의 7개의 별자리는 동방의 창룡 또는 청룡(靑龍)성이다. 그중 각성의 1도(주천도수는 천문도 마다 조금씩 차이가 있다. 이는 그 측정하는 장소에 따라서도 다르지만, 측정한 때에 따라서도 차이가 발생한다)에서 1년에 한 번씩 태양과 만나는 날이 추분이며, 두·우·여·허·위·실·벽의 7개의 별자리는 북방의 현무성인데, 그 중 두성의 13도에서 태양과 만나는 날이 동지이며, 규·루·위·묘·필·자·삼의 7개의 별자리는 서방의 백호성인데, 그 중 규성의 8도에서 태양과 만나는 날이 춘분이며, 정·귀·류·성·장·익·진의 7개의 별자리는 남방의 주작성인데 그중 정성의 15도가 태양과 만나는 날이 하지이다"라고 28수와 2분2지를 설명합니다.

황도(黃道)와 적도(赤道)

김수길 윤상철은 ‘천문류초 해설’에서, "황도는 해의 운행하는 길이고, 황도의 남극과 북극의 가운데로 도수가 제일 균일한 곳을 적도라고 한다.(즉 천문도에서는 어느 곳에서나 바깥 원과 동일한 거리를 두고 그린 안쪽의 원이 적도가 된다)따라서 황도의 반은 적도의 밖에 있고, 반은 적도의 안에 있다"라고 황도와 적도를 설명합니다.

- 월(月) -

晦朔弦望(회삭현망)

일부는 '정역 15일언 金火5頌'에서,"五度 而月魂生申 初三日 月弦上亥 初八日 月魄成午 十五日 望先天月分于戌 十六日 月弦下巳 二十三日 月窟于辰 二十八日 月復于子 三十日 晦后天 月合 中宮之中位 一日朔"(5도에서 월혼이 申에서 생하니 초3일이요. 달이 亥에서 上弦하니 초8일이요. 월백이 午에서 이루어져 15일이 되니 보름으로 선천이다. 달이 戌에서 나뉘니 16일이고 달이 巳에서 下弦이 되어 23일이고, 달이 辰에서 굴하니 28일이고 달이 子에서 복하니 30일이 되어 그름으로 후천이다. 달이 중궁에 중위하니 1일이 朔이다)라고 회삭현망을 설명한다.

月宿(월숙)

‘天象列次分野之圖’에서,"月爲大陰之精 衆陰之長以之配 日女主之象 以之比德刑罰之義列之朝廷 諸侯大臣之類 行黃道之東謂之靑道 行黃道之南謂之赤道 行黃道之西謂之白道 行黃道之北謂之黑道 黃道內外各四幷 黃道爲九道也"(달은 큰 음의 정수이고 음의 무리 중에 우두머리이며 해의 아내이다. 달은 여인의 상이고 덕과 형벌로써 조정의 제후와 대신들을 올바르게 다스린다. 달은 황도에서 운행한다. 동쪽인 청도에 이르러 운행하고 적도인 남쪽에 이르러 운행하고 서쪽인 백도에 이르러 운행하며 북쪽인 흑도에 이르러 운행하게 된다. 황도의 안과 밖에서 4개(청도, 적도, 흑도, 백도)와 어울리어 9도가 된다)라고 설명한다.

月(월)

이순지는 '천문류초'에서,"月爲太陰之精 以之配日 女主之象"(달은 태음의 精으로 해와 짝하니 황후의 象이다)라고 月을 설명한다.

위상

이은성은 ‘역법의 원리분석’에서 "달의 위상을 간단히 월상(月相)이라고 한다. 합삭(合朔)이란 달과 태양의 황경이 같은 때를 말하는 것인데, 이때 태양은 달의 뒤쪽을 비쳐주고 지구에서는 달의 그늘진 부분만 쳐다보게 되므로 달의 모습은 전연 보이지 않게 된다. 이 경우를 신월(新月)이라고도 부른다. 달이 합삭으로부터 동쪽으로 90˚ 옮겨가면 月面의 서쪽 절반이 태양의 빛을 받게 되는데, 이때가 상현(上弦)이다. 합삭에서 상현에 이르는 처음 동안, 눈썹 같은 달이 음력 초이틀이나 초사흘 초저녁에 西天에 보이는데, 이것이 초승달이다. 상현을 지나서 달이 태양과 반대쪽에 있을 때, 月面이 둥글고 가장 밝게 보이는데, 이런 달을 만월(滿月) 또는 망(望)이라 하여 이것을 보통 보름달이라고 부른다. 그 후 약 1주일이 지나면 일출 6시간 전에 중천에 동쪽이 밝은 반달이 보이는데 이때가 하현(下弦)이다. 하현 후 달은 동쪽으로 태양을 좇아가서 합삭이 된다. 합삭이 되어 달빛이 보이지 않는 시기를 보통 그믐이라고 말한다. 이와 같이 달은 1삭망월 동안에 합삭→상현→망→하현→합삭의 순서로 월상이 변해간다"라고 달의 위상을 설명합니다.

위상변화

이은성은 ‘역법의 원리분석’에서 "달의 위상변화가 생기는 이유는 달이 태양보다 빠르게 동쪽으로 이동하기 때문이다. 태양은 천구상에서 황도에 따라 동으로 1주하여 1년 걸려 제자리에 돌아온다. 그러므로 태양은 하루에 평균 0˚9856씩 동쪽으로 운행한다. 달은 촌구상을 거의 한 달 걸려 동으로 1회전한다. 그 이동속도는 매일 평균 13˚.1764나 되므로, 달은 태양보다 매일 12˚.20씩 빠르게 옮겨간다. 이리하여 1태음월 걸려 천구를 1주한 후 태양에 대한 상대 위치가 같도록 돌아온다"라고 위상이유를 설명합니다.

위상과 월령

이은성은 ‘역법의 원리분석’에서, "달의 위상을 반사면의 넓이의 변화로 나타냈다. 달의 위상을 시간의 경과에 따른 변화로도 나타낼 수 있는데, 이런 표현을 월령이라고 말한다"라고 위상과 월령을 구분합니다.

28수와 달

이은성은 ‘역법의 원리분석’에서, "달은 27.3일을 주기로 하여 황도 부근, 즉 백도를 1주한다. 그러므로 지구의 자전운동이 없다고 하면 달은 하루에 한 수씩 東쪽으로 옮겨가는 것이라고 보고 28개의 성수를 정해 놓은 것 같기도 하다. 천구 상에서의 달의 운행은 부근의 별자리를 꾀어 나가며 東으로 매일 약 13˚ 남짓의 각속도로 나간다"라고 달과 28수를 설명합니다.

Posted by 무중 이승수 지지닷컴


당령과 사령


서언

시공의 우주는 시간과 공간으로 2가지 흐름으로 나누어집니다.

宇宙
우주는 '회남자'에서, "天地四方 曰宇, 古往今來 曰宙"(하늘, 땅, 4방을 宇라고 하며, 과거가 가고 현재가 오는 것을 宙라고 한다)라고 정의되어 있다. 宇는 공간, 宙는 시간... 즉, 우주는 時空 이라고 정의되어 있는 것이다.

이것은 우주를 시간과 공간의 분리개념이 아닌, 時空의 合一로 보고 있는 것입니다. 또한 우주의 공간을 하늘, 땅, 동, 서, 남, 북의 6合의 모습으로, 우주의 시간을 가고 오는 順逆의 양방향으로 정의하고 있음을 주목하지 않으면 안 됩니다.

A. 절기와 율려

이것은 태양과 태음에 의해 대우주와 소우주로 구분됩니다.
태양의 움직임을 2분2지(춘분추분,동지하지)에 의해 끊어 놓은 것이 절기이며, 태양과 태음이 섞이는 중화의 과정이 율려입니다. 그러니까 우주에는 반드시 2가지 흐름이 있는데, 하나는 순수한 태양의 움직임인 시간의 절기이며, 다른 하나는 태양과 태음이 섞이는 공간의 율려 입니다.

2分2至(시간)
기백은 '황제내경 소문 지진요대론'에서, "氣至之謂至 氣分之謂分 至則氣同 分則氣異"(기가 이르는 것을 至라하고 기가 나누어지는 것을 分이라 한다. 至는 기가 같고 分은 기가 다르다)라고 氣가 같고 다름으로 2분2지를 설명한다.

律呂義(공간)
사기의 율서에서, "呂序也 序述四時之氣 定十二月之位也 陰陽各六 陽六爲律 陰六爲呂 律六者 黃鐘太簇姑洗賓夷則無射也 呂六者 林鐘南呂應鐘大呂夾鐘仲呂也"(려는 차례대로 하는 것이니, 4시의 기운을 차례대로 서술해서 12월의 자리를 정하는 것이다. 음양이 각각6이니 양6은 율이고 음6은 려가 된다. 율6은 황종, 태주, 고선, 유빈, 이칙, 무역이고, 려6은 임종, 남려, 응종, 대려, 협종, 종려이다)라고 율려를 설명한다.

B. 홀로그램

홀로그램의 영상은 3차원으로 복잡하게 나타나지만, 그 원리는 극히 단순합니다. 즉 하나의 기준광선과 반사되는 작용광선의 두 종류 광선으로 3차원의 물체를 만들어 내는 것입니다.

홀로그램
이차크 벤토프는 `우주심과 정신물리학`에서, "홀로그램을 만드는 과정에서 가장 중요한 부분은, 아무것도 접촉하지 않은 본래대로 순수한 기준광선과 어떤 사건을 겪은 작용광선의 상호작용이다. 사건을 겪은 작용 광선의 역활도 중요하지만, 비교의 기준선 역활을 하는 기준광선도 무척 중요하다... 우리의 두뇌가 홀로그램의 형태로 정보를 저장한다는 명백한 증거가 이미 나와 있다. 이러한 종류의 저장 수단이 자연계에 알려진 여러가지 방법 중에서 가장 짜임새 있는 수단이다. 그 한 예가 우리의 염색체 안에 들어 있는 유전인자(DNA)이다. 우리의 몸의 각각의 세포 속에는 우리와 똑같은 몸을 새로 하나 만드는데 필요한 모든 정보가 다 저장되어 있다. "라고 홀로그램과 인간과의 관계를 설명하고 있습니다.

태양(日)의 기준광선과 반사된 태음(月)의 작용광선 즉 두 종류 광선이 바로 인간을 만들어 내고 운용하는 것이라고 할 수 있습니다. 그러니까 인간의 변화를 살피기 위해서는 두 종류의 광선인 태양과 태음의 움직임을 살피면 되는 것입니다.

 

 

C. 운기학에서 形氣相感

우주는 대우주의 形과 소우주의 氣가 서로 권형하면서 감응합니다.

1. 형기상감

운기학에서는 시간은 氣로, 공간은 形으로 서로 감응합니다.

形氣相感
구유구는 '황제내경 소문 천원기대론'에서, "故在天爲氣 在地成形 形氣相感 而化生萬物矣...氣有多少 形有盛衰 上下相召 而損益彰矣"(그러므로 하늘에서 氣가 되고 땅에서 形을 이루어져, 形氣가 相感함으로 만물을 化生한다...氣에는 多少가 있고, 形이 盛衰가 있으니, 上下가 서로 불러 損益이 드러납니다)라고 形氣가 相感하여, 多少(공)와 盛衰(시)에 의해 損益(길흉)이 드러난다고 했다.

2. 사천재천

위 3형은 다시 6氣로 나뉘어 응합니다.

六分治應
황제는 '황제내경 소문 지진요대론'에서 묻기를, "五氣交合 盈虛更作 余之矣 六氣分治 司天地者 其至何如"(5기가 교합하여 盈虛함이 다시 일어남을 내가 알고 있다. 6기가 나누어 다스리는 천지의 사령은 어떠한지요)라는 질문에, 기백은 "天地之大紀 人神之通應也"(천지의 큰 紀는 人神으로 通하여 應하는 것입니다)라고 6氣의 사령은 人神이 通한다.

3. 권형

氣는 율려의 3양3음이며, 形은 절기의 5행으로 서로 권형을 이룹니다.

3多少5盛衰
구유구는 '황제내경 소문 천원기대론'에서, "陰陽之氣 各有多少 故曰三陽三陰也. 形有盛衰 謂五行之治 各有太過不及也"(음양의 氣는 각기 多少가 있기 때문에 3양3음이라고 말합니다. 形에 盛衰가 있다는 것은 5행의 다스림으로 태과불급이 있습니다)라고 氣의 多少(상하,기,음양)와 形의 盛衰(좌우,형,5행)을 설명한다.

D. 자평명리학에서 월령

월령은 당령(태양)과 사령(태음)으로 구분됩니다. 그러나 오늘날의 명리학은 월령의 당령과 사령을 구분하지 못합니다. 자평명리학 역시 위 氣와 形의 2가지 흐름을 구현하지 않으면 안 되므로 원전을 근거로 이것을 복원합니다.

1. 당령

월령의 당령은 태양의 形입니다.

五行提綱
서자평은 ‘연원’에서, “月令者 提綱也 看命先看提綱 方看其餘, 五行提綱 凡看命排下八字”(월령은 제강이다. 命을 보는 것은 먼저 제강을 보고 方으로 그 나머지를 본다. 5행 제강으로  무릇 간명자는 팔자를 아래로 배열한다)라고 5행 제강의 월령으로 간명한다.

良法
서자평은 ‘연원’에서, “常法以金生巳 木生亥 水生申 火生寅 土居中央 寄母生 如戊在巳 己在午 又土爲四季 各旺一十八日 共七十二日 幷金木水火土 各七十二日 共得三百六十日 以成歲功 此良法也”(常法으로 금은 사에서 생하고, 목은 해에서 생하고, 수는 신에서 생하고, 화는 인에서 생하고, 토는 중앙에 거처하여 어미의 생함이 된다. 예를 들어 무는 사에 있고 기는 오에 있으며 또한 토는 4계가 되어 각18일 공히 72일이 왕하여, 금목수화토는 각72일이 공히 360일로 歲功을 이루니, 이것이 양법이다)라고 양법을 설명한다.

當令
육오산인은 ‘삼명통회’에서,“正觀先看月令 然後方看其餘 以五行之氣 惟月令當時爲最”(바른 관점은 먼저 월령을 본 연후에 方으로 그 나머지를 본다. 5행의 氣가 월령 당시로 최상일 때 사유한다)라고 월령당시를 본다.

2. 사령

월령의 사령은 태음의 氣입니다.

月律
서승은 `연해자평`에서, "太簇正月 寅 戊七日二分半 丙七日二分半 甲十六日三分半"(태주정월은 寅으로 戊7일2분반 丙7일2분반 甲16일 3분반)이고, 또한, "夾鐘二月 卯 甲十日五分半 癸長生 乙二十日六分半"(협종2월은 卯로 甲10일5분반 癸장생 乙20일6분반)이고,
또한, "古洗三月 辰 乙九日三分 癸三日一分 戊十八日六分"(고선3월은 辰으로 乙9일3분 癸3일1분 戊18일6분)이고,
또한, "仲呂四月 巳 戊五日一分半 庚九日三分 丙十六日五分"(중여4월은 巳로 戊5일11분반 庚9일3분 丙16일5분)이고,
또한, "□賓五月 午 丙十日三分半 己十日三分半 丁十日三分半"(유빈5월은 午로 丙10일3분반 己10일3분반 丁10일3분반)이고,
또한, "林鐘六月 未 丁九日三分 乙三日二分 己十八日六分"(임종6월은 未로 丁9일3분 乙3일2분 己18일6분)이고,
또한, "夷則七月 申 己七日一分半 戊三日一分半 壬三日一分半 庚十七日六分"(이칙7월은 申으로 己7일1분반 戊3일1분반 壬3일1분반 庚17일6분)이고,
또한, "南呂八月 酉 庚十日五分半 丁己長生 辛二十日七分半"(남여8월은 酉로 庚10일5분반 丁己장생 辛20일7분반)이고,
또한, "無射九月 戌 辛九日三分 丁三日二分 戊十八日六分"(무사9월은 戌로 辛9일3분 丁3일2분 戊18일6분)이고,
또한, "應鐘十月 亥 戊七日二分半 甲五日分半 壬十八日六分"(응종10월은 亥로 戊7일2분반 甲5일분반 壬18일6분)이고,
또한, "黃鐘十一月 子 壬水十日五分 辛長生 癸二十日七分"(황종11월은 子로 壬水10일5분 辛장생 癸20일7분)이고,
또한, "大呂十二月 丑 癸九日三分 辛三日一分 己土十八日六分"(대여12월은 丑으로 癸9일3분 辛3일1분 己土18일6분)이라고 月律分野를 설명한다.

결언

위 월령의 당령과 사령은 매우 명백한 우주변화원리입니다. 따라서 자평학은 당령의 形과 사령의 氣로서 權衡을 살펴야 합니다. 그럼에도 불구하고 월령의 당령과 사령을 구분하여, 대우주 소우주 두 가지 흐름을 감응으로 권형하는 곳은 지지닷컴 뿐입니다.

참고로, 중국의 장요문은 월령을 당령으로만, 일본의 아부태산은 월령을 사령으로만 취용하고 있습니다. 그리고 임철조, 서낙오는 월지만의 사령을 당령처럼 격으로 사용하지만, 이것은 원리와 원전 어디에도 전혀 없습니다.

머무름을 알라!! 지지닷컴

Posted by 무중 이승수 지지닷컴