logo

한국어

지식나눔

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



  • 389
  • 1921389
컴퓨터천문학
2010.10.13 18:17

[컴퓨터 천문학] 03.MINSEC 함수(2)

댓글 0 조회 수 8660 추천 수 0
?

단축키

이전 문서

다음 문서

+ - Up Down Comment Print
?

단축키

이전 문서

다음 문서

+ - Up Down Comment Print

 

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

 

 

이번글에서는 숫자가 입력되면 시/분/초로 변환을 수행하고 시/분/초가 입력되면 숫자로 변환되는 기능을 설명해 보겠습니다.

 

먼저 시/분/초를 변수에 설정하는데 코드를 보시면 쉽게 이해가 되실 겁니다.

앞에 작성했던 글에서 오후 3시25분의 1시간 37분 전 시간값을 구하는 부분이 있습니다.

그것을 예제로 작성해 보겠습니다.

<script>

    var SN = 1;     // 입력값이 양수임을 의미하는 값

    var XD = 3;    // 시간
    var XM = 25;    //분
    var XS = 0;    //초


    var X = ((((Math.abs(XS) / 60) + Math.abs(XM)) / 60) + Math.abs(XD)) * SN;     //시분초 변환값

  

    alert(X);

</script>

XD 변수에 시간을 의미하는 숫자 3을 할당합니다.

XM 변수에 분을 의미하는 숫자 25를 할당합니다.

XS 변수에 초를 의미하는 숫자 0을 할당합니다.

그러면 이것은 3시 25분을 의미하게 됩니다.

 

각각의 변수를 둘러싸고 있는 Math.abs() 라는 함수는 자바스크립트에 있는 기능이며, 역할은 숫자의 절대값을 반환하는 역할을 합니다.

60으로 각각의 값을 나눠서 초 단위로 값을 변환 합니다.

 

이것이 변환된 값은 3.416666666666666665가 나오게 됩니다.

 

이번에는 값을 바꿔서 1시간 37분 전을 넣어보겠습니다.

 

<script>

    var SN = 1;

    var XD = 1;
    var XM = 37;
    var XS = 0;
    var X = ((((Math.abs(XS) / 60) +Math.abs(XM)) / 60) + Math.abs(XD)) * SN;

  

    alert(X);

</script>

 

이것이 변환된 값은 1.6166666666666667 이 됩니다.

 

 3.416666666666666665 -  1.6166666666666667  = 1.8이 나오게 됩니다.

 

이제 여기서 나온 값 1.8을 시간/분/초로 변환해 보겠습니다.

앞 글에서 입력값이 양수인지 음수인지 판단해야 한다고 했습니다. 1.8은 양수이기 때문에 +1의 값을 반환하게 될겁니다.

Sgn = function (x) {
  if (x < 0) return -1;
  else if (x > 1) return 1;
  else return 0;
 }

 

입력값 변수 X는 1.8의 값을 가집니다.

양수, 음수 값을 가지는 변수 SN은 입력값 X를 Sgn() 함수를 이용해서 판단을 합니다.

입력값 X가 가지는 1.8에 Conversion Factor 값인 1.39E-6 를 더해 줍니다.

이 값은 소수점 이므로 소수점을 제외한 숫자값으로 만들어 줍니다. (이 값이 시간값 입니다.)

그 다음에 변환값 - 시간값에 60을 곱해 줍니다. 그럼 분이 나오게 됩니다.

마지막으로 (변환값 - 시간값) x 60 에서 분(minutes)을 빼주고 6,000을 곱한 다음 100으로 나눠주면 원하는 시간을 얻을 수 있습니다.

 

코드를 보겠습니다.

 var strS;
 var X = 1.8;
 var SN = Sgn(X);   //1
 var XP = Math.abs(X) + 1.39E-6;  

 var XD = parseInt(XP);   
 var A = (XP-XD) * 60;   
 var XM = parseInt(A);   
 var XS = parseInt( (A-XM) * 6000.0 ) / 100.0;  

 

 alert(XD + "시 " + XM + "분 " + XS + "초");

 

변수 X는 앞에 언급한 계산값 1.8을 가지고 있습니다.

변수 SN X값을 판단하여 양수면 +1을, 음수면 -1을 가지게 됩니다.

변수 XPX의 절대값에 컨버전 팩터를 더한 값을 가집니다. 이 값은 1.80000139가 됩니다.

변수 XD는 변수 XP의 숫자값을 반환하는데 소수점을 제외한 1이 됩니다. 이것은 시간을 의미하는 값이 되는 겁니다.

분에 해당하는 값을 구하기 위해 XP-XD를 연산하고 60을 곱해 줍니다. A의 값은 48.0000834가 됩니다.

이것의 숫자형값은 48이 되는데 이것이 분이 됩니다.

마지막으로 XM 값에 6,000을 곱하고 100으로 나누면 초가 나옵니다.

따라서 이것의 최종 결과 값은 1시 48분 0초가 나오게 됩니다.

 

이상 각의 변환도 마찬가지 입니다.

137도 21분 8.2초와 같은 각도를 변환하여 얻게 되는 값은 137.35227777777777 이 되며 역으로 변환해도 같은 값을 얻게 됩니다.

쉽죠??? ^^

 

다음 글에서는 YESNO 함수를 통해 "시간/분/초로 변환을 하시겠습니까?" 라는 질문을 하고 Y/N 결과에 따라 변환하는 함수를 작성해서 설명드리겠습니다.

 

 

 


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 11555
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
8 [컴퓨터 천문학] 04. 1900년 1월 0.5 이후 달력날짜를 율리우스 ... [1]  file [레벨:12]박종현 2010.11.04 9265
7 [컴퓨터 천문학] 04. 1900년 1월 0.5 이후 달력날짜를 율리우스 ...  image [레벨:12]박종현 2010.11.04 13289
6 [컴퓨터 천문학] 03.MINSEC 함수(3) [1]  fileimage [레벨:12]박종현 2010.10.19 9045
» [컴퓨터 천문학] 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 9409
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