logo

한국어

지식나눔

한국아마추어천문학회 한국천문연구원 회원가입안내



  • 389
  • 1921389
?

단축키

이전 문서

다음 문서

+ - Up Down Comment Print Files
?

단축키

이전 문서

다음 문서

+ - Up Down Comment Print Files

 

이 글은 독일우주운영센터(GSOC)의 과학자인 Oliver Montenbruck와 Thomas Pfleger가 공동 출판한 Astronomy with your Personal Computer를 의역 후,  작성된 것임을 알리며, 원저의 베이직 코드를 웹 환경에서 쉽게 실행해 볼 수 있도록 자바스크립트 코드로 변경하여 작성하였음을 밝힙니다. 자바스크립트 코드와 이 글의 내용은 글쓴이의 2차 저작물 이므로 배포나 내용의 임의 변경에 대해 글쓴이의 동의가 있어야 합니다.

 

이번 글에서는 그레고리 력의 날짜 타입을 율리우스 일로 변환하는 논리로직과 코드를 제시하겠습니다.

 

먼저 계산 값을 저장할 각 변수들의 의미 입니다.

DJ : 년,월,일로 표현되는 날짜를 시작점 이후 날짜로 변환한 값을 할당받는 변수.
A, B, C, D: 계산 로직에 의해 계산된 값을 할당받는 변수.
YR: 입력년
MN: 입력월
DY: 입력일

 

논리로직에 의해 적절한 분기를 통해 계산된 값을 저장하는 DJ(시작점 이후 율리우스 일)를 구성하는 공식은 다음과 같습니다.

DJ = B + C + D + DY -05 days

 

마지막으로 실행되는 프로그램의 논리로직을 살펴 보겠습니다.

1. 입력 날짜가 1582년 10월 15일 전이라면 B = 0을 할당
2. 입력 날짜가 1582년 10월 15일과 같거나 그 이후라면 B = 2 - A + INT(A/4) 그리고 A = INT(YR/100) 를 계산.
3. 만약에 YR이 음수라면 C = FNI( (365.25 * YR ) - 0.75 ) - 694025 를 계산
4. 모든 날짜에 대해 D = INT( 30.6001 * ( MN + 1 ) )을 적용
5. YR이 양수라면 YR = YR + 1 을 만족시킨다.
6. MN이 1 또는 2라면 YR = YR -1 그리고 MN = MN + 12
7. MN이 3이거나 그 이상이라면 MN = MN

 

이제 실제 작성된 코드 입니다.

<script>
    var a = prompt("달력날짜를 입력하세요.(D, M, Y => 04, 11, 2010)");


    a = a.split(',');

 

    var YR = parseInt( a[2] );
    var MN = parseInt( a[1] );
    var DY = parseInt( a[0] );
    var A, B, C, DJ;

 

    if(YR == 0) {

 

         alert("0년은 존재하지 않습니다.");

 

    }
    else {
 
         //입력된 년이 1보다 크면 1을 더한다.
         if( YR < 1 ) {
              YR = YR + 1;
         }

 

        //입력된 월이 3보다 작으면 12를 더해서 14로 만들고 입력된 년 값을 1 빼준다.
         if( MN < 3 ) {
              MN = MN + 12;
              YR = YR - 1;
         }

 

        //입력된 년이 1보다 작으면 +1 해둔다.
         if( YR < 1 ) {
              YR = YR + 1;
         }

 

        //입력된 년이 1582년 이후라면
         //2 빼기 입력된 년도값 나누기 100한 값을 빼고 입력된 년도값 나누기 100한 값을 다시 4로 나눈 후 더해준다.
         //율리우스 력의 1년인 365.25일을 년도에 곱하고 - 694025
         if( YR > 1582 ) {
              A = parseInt( YR / 100 );
              B = 2 - A + parseInt( A / 4 );
              C = parseInt(365.25 * YR ) - 694025;
         }


         if( YR < 1582 ) {
              C = parseInt(365.25 * YR ) - 694025;
         }
        

         if( ( YR == 1582 ) && ( MN < 10 ) ){
              C = parseInt(365.25 * YR ) - 694025;
         }


         if( ( YR == 1582 ) && ( MN == 10 ) && ( DY < 5 ) ){
              C = parseInt(365.25 * YR ) - 694025;
         }


         if( ( MN > 10 ) || ( DY >= 15 ) ) {
              A = parseInt( YR / 100 );
              B = 2 - A + parseInt( A / 4 );
              C = parseInt(365.25 * YR ) - 694025;
        }

 

     D = parseInt( 30.6001 * (MN + 1) );
     DJ = B + C + D + DY -0.5;

 

    alert( "1900년 1월 0.5 이후의 율리우스 일: " + DJ );
     alert( "율리우스 일: " + ( DJ + 2415020.0 ) );

}
</script>

 

이것으로 실행된 결과 값 까지 모두 확인하였습니다.

위 코드의 실행은 첨부된 파일을 통해 확인할 수 있습니다.

(주의: 바이러스 검사된 파일 입니다. 컴퓨터에 다운받은 후 실행하세요.)

 

Files '1'

Computer Astrology

번호 제목 글쓴이 날짜 조회 수
20 Optical SETI (1) [1]  image [레벨:12]박종현 부지부장 2019.03.16 373
19 [SETI] 10. 성간 전파 프로젝트와 페이퍼 프로젝트 [1]  fileimage [레벨:12]박종현 정보부장 2011.11.10 16721
18 [SETI] 9. SETI Net [1]  fileimage [레벨:12]박종현 정보부장 2011.11.09 11554
17 [SETI] 8. Allen Telescope Array [1]  fileimage [레벨:12]박종현 정보부장 2011.11.08 11943
16 [SETI] 7. SETI@home [2]  image [레벨:12]박종현 정보부장 2011.11.07 12157
15 [SETI] 6. The SETI League and Project Argus [1]  image [레벨:12]박종현 정보부장 2011.11.01 12006
14 [SETI] 5. MOP and Project Phoenix [2] [1]  fileimage [레벨:4]정보부차장(유환용) 2011.07.13 10488
13 [SETI] 4. Sentinel, META, and BETA  image [레벨:12]박종현 2011.06.16 9972
12 [SETI] 3. Early work [1]  image [레벨:12]박종현 2011.06.15 9025
11 [SETI] 2. Radio experiments [1]  image [레벨:12]박종현 2011.06.15 8917
10 [SETI] 1. SETI [1]   [레벨:12]박종현 2011.06.15 11510
9 [컴퓨터 천문학] 05. julian day를 CALDAY로(1) [1]   [레벨:12]박종현 2011.04.25 10295
» [컴퓨터 천문학] 04. 1900년 1월 0.5 이후 달력날짜를 율리우스 ... [1]  file [레벨:12]박종현 2010.11.04 9264
7 [컴퓨터 천문학] 04. 1900년 1월 0.5 이후 달력날짜를 율리우스 ...  image [레벨:12]박종현 2010.11.04 13289
6 [컴퓨터 천문학] 03.MINSEC 함수(3) [1]  fileimage [레벨:12]박종현 2010.10.19 9045
5 [컴퓨터 천문학] 03.MINSEC 함수(2) [1]   [레벨:12]박종현 2010.10.13 8660
4 [컴퓨터 천문학] 03.MINSEC 함수(1)   [레벨:12]박종현 2010.10.13 8964
3 [컴퓨터 천문학] 02. YESNO 함수 작성 [1]  fileimage [레벨:12]박종현 2010.10.07 8623
2 [컴퓨터 천문학] 01. DEFAULT 함수 [6]  fileimage [레벨:12]박종현 2010.10.07 9408
1 컴퓨터 천문학 [2] [1]   [레벨:12]박종현 2010.10.05 34796
Board Pagination ‹ Prev 1 Next ›
/ 1
Designed by hikaru100

나눔글꼴 설치 안내


이 PC에는 나눔글꼴이 설치되어 있지 않습니다.

이 사이트를 나눔글꼴로 보기 위해서는
나눔글꼴을 설치해야 합니다.

설치 취소

SketchBook5,스케치북5

SketchBook5,스케치북5

SketchBook5,스케치북5

SketchBook5,스케치북5