내일은 소설입니다.sun's longitude:238 38 24 
· 자유게시판 · 묻고답하기 · 알파문서 · RPMS list
· 사용자문서 · 팁/FAQ모음 · 리눅스Links · 자료실
· 서버정보 · 운영자 · Books/FAQ · FreeBSD
 
   

질문과 답변 게시판입니다.

현재 실시간으로 이곳 서버의 설정파일(몇개)를 보여주고 있습니다.
서버의 설정내용에 관한 질문은 먼저 이곳 서버의 설정내용을 참고하시길 바랍니다.

[*** 쓰기 금지단어 패턴 ***]
글 본문 중간에 업로드할 이미지를 추가하는 방법 : @@이미지이름@@
ex) @@foo.gif@@
1634 번 글의 답장글: Re: 24절기 구하는 방법
글쓴이: 산이 [홈페이지] 글쓴날: 2003년 08월 20일 11:28:33 수(오전) 조회: 2308
[최경민]님이 남기신 글:

>안녕하세요?
>항상 사이트를 유용하게 이용하고 있습니다.
>
>이번에 간단한 달력과 일정관리를 만들어보고 있는데,
>여러분들의 소스를 보고 조금씩 붙여서 어느정도 만들어 졌는데,
>
>산이님 홈페이지에 있는 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월이 긴 까닭은?

 
이전글 : 24절기 구하는 방법
다음글 : Re: Re: 24절기 구하는 방법  
 from 61.254.75.40
JS(Redhands)Board 0.4 +@

24절기 구하는 방법 Re: Re: 24절기 구하는 방법
인쇄용 


apache lighttpd linuxchannel.net 
Copyright (c) 1997-2017, linuxchannel.net

Page loading: 0.02(server) + (network) + (browser) seconds