logo

한국어

지식나눔

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



  • 308
  • 1951949
컴퓨터천문학
2010.10.13 17:29

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

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

단축키

이전 문서

다음 문서

+ - Up Down Comment Print
?

단축키

이전 문서

다음 문서

+ - Up Down Comment Print

 

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

 

MINSEC 함수는 내용이 많기 때문에 3개의 글로 나눠서 올릴까 합니다.

 

첫번째 글에서는 함수에 대한 설명을 위주로 다루겠습니다.

두번째 글에서는 함수를 제작하고 어떤 값이 출력되는지 확인해보겠습니다.

그리고 마지막 글에서는 앞에 만들었던 YESNO 함수와 MINSEC 함수를 결합하여 결과를 확인해보도록 하겠습니다.

 

보통 천문학 계산의 시작과 끝은 도(degree) 표현되는 각도(angles), 호(arc)의 분(minutes)과 초(seconds) 또는 시(hours), 분(minutes), 초(seconds)로 측정되는 시간(times) 이라고 합니다. 컴퓨터로 이러한 계산을 수행할 때 도(degree)나 시간(hour)을 숫자로 변환 해야 합니다. 그리고 계산을 수행한 후에 다시 보기 편하게 분(minutes)과초(seconds) 형태로 변환을 하게 됩니다.

 

예를 들어서 오후 3시 25분의 1시간 37분 전의 시간을 계산하고 싶다면 먼저 시간을 숫자 형태로 변환해야 하는데 1시간 37분은 1.6616667로 변환할 수 있습니다. 그리고 3시 25분은 3.416667로 변환할 수 있습니다. (변환에 대한 자세한 이야기는 JULDAY와 CALDAY 함수를 작성할 때 다루겠습니다.) 숫자로 변환한 상태에서 3.416667 - 1.6616667을 수행하면 1.800 이라는 값을 얻게 되는데 이 값을 분(minutes)과 초(seconds)의 형태로 변환하게 되면 1시 48분 이라는 값을 얻게 되는 원리 입니다.

 

눈치 채셨겠지만 이번에 다루게 될 MINSEC 함수는 시/분/초 나 이것을 변환한 숫자값을 입력받아 출력하는 기능을 수행하게 되는 것 입니다. 설명을 이어가겠습니다.

 

먼저 이 함수에는 Switch 라는 것이 있어야 합니다. Switch는 숫자를 시/분/초 로 또는 시/분/초를 숫자로 바꿔주는 컨버전 역할을 하게 됩니다.

Switch(이하부터 SW라고 하겠습니다.) 가 +1 이라면 숫자를 입력 받아서 각/시간, 분 그리고 초의 형태로 변환하게 됩니다.

반대로 SW가 -1 이라면 각/시간, 분, 초를 숫자로 변환하게 됩니다.

 

그럼 알고리즘을 만들어 보겠습니다.

입력값 X가 숫자값이라면 이것을 시간, 분, 초로 변환하여 각각의 변수 XD, XM, XS에 할당합니다.

입력값 X는 양수일수도 있고 음수 일수도 있습니다. 변수 SN에 양수인지 음수인지를 판단하는 값을 할당해 줍니다.

 

이 값을 판단하기 위해서는 특별한 자바스크립 코드가 필요하게 되는데 보통 C++이나 C#과 같은 언어들에는 기능이 있지만 자바스크립트에는 없기 때문에 만들어 줘야 하는 것입니다.

 

//양수와 음수를 판단하는 자바스크립트 코드

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

 

위의 코드는 입력값이 0보다 크면 +1을 반환하고, 0보다 작으면 -1을 그리고 0이면 0을 무조건 반환 합니다.

반환된 값은 변수 SN에 할당되며 아래의 예와 같은 상황에서 값이 양수인지 음수인지를 결정하는 역할을 수행하게 됩니다.

 

예를 들어서 137도 21분 8.2초 XD=137, XM=21, XS=8.2이 됩니다. 모두 양수인 셈이죠.

다음으로 -21도 46분 3초일 때 XD=-21, XM=46, XS=3이 됩니다. 도는 음수이고 나머진 양수인 것이죠.

마지막으로 -0도 15분 4초일 경우에는 XD=0, XM=-15, XS=4 가 되는데 -0도 인 경우 값은 0이지만 음수 입니다. 이럴 경우 0은 무시하고 다음 값에 '-'를 붙이게 됩니다. 이런 형태로 양수와 음수를 구별하게 됩니다.

 

역으로 입력값 X가 숫자 형태가 아닌 각/시간, 분, 초라면 각각을 XD, XM, XS에 할당하고 숫자로 변환을 하게 됩니다.

 

그럼 다음글에서 2가지 케이스의 코드를 작성해 보겠습니다.

 

 


Computer Astrology

번호 제목 글쓴이 날짜 조회 수
20 컴퓨터 천문학 [2] [1]   [레벨:12]박종현 2010.10.05 35919
19 [컴퓨터 천문학] 05. julian day를 CALDAY로(1) [1]   [레벨:12]박종현 2011.04.25 10580
18 [컴퓨터 천문학] 03.MINSEC 함수(3) [1]  fileimage [레벨:12]박종현 2010.10.19 9192
17 [컴퓨터 천문학] 03.MINSEC 함수(2) [1]   [레벨:12]박종현 2010.10.13 8808
» [컴퓨터 천문학] 03.MINSEC 함수(1)   [레벨:12]박종현 2010.10.13 9071
15 [컴퓨터 천문학] 02. YESNO 함수 작성 [1]  fileimage [레벨:12]박종현 2010.10.07 8854
14 [컴퓨터 천문학] 01. DEFAULT 함수 [6]  fileimage [레벨:12]박종현 2010.10.07 9533
13 [컴퓨터 천문학] 04. 1900년 1월 0.5 이후 달력날짜를 율리우스 ... [1]  file [레벨:12]박종현 2010.11.04 9453
12 [컴퓨터 천문학] 04. 1900년 1월 0.5 이후 달력날짜를 율리우스 ...  image [레벨:12]박종현 2010.11.04 13934
11 [SETI] 9. SETI Net [1]  fileimage [레벨:12]박종현 정보부장 2011.11.09 11724
10 [SETI] 8. Allen Telescope Array [1]  fileimage [레벨:12]박종현 정보부장 2011.11.08 12241
9 [SETI] 7. SETI@home [2]  image [레벨:12]박종현 정보부장 2011.11.07 12351
8 [SETI] 6. The SETI League and Project Argus [1]  image [레벨:12]박종현 정보부장 2011.11.01 12161
7 [SETI] 5. MOP and Project Phoenix [2] [1]  fileimage [레벨:4]정보부차장(유환용) 2011.07.13 10630
6 [SETI] 4. Sentinel, META, and BETA  image [레벨:12]박종현 2011.06.16 10120
5 [SETI] 3. Early work [1]  image [레벨:12]박종현 2011.06.15 9146
4 [SETI] 2. Radio experiments [1]  image [레벨:12]박종현 2011.06.15 9035
3 [SETI] 10. 성간 전파 프로젝트와 페이퍼 프로젝트 [1]  fileimage [레벨:12]박종현 정보부장 2011.11.10 17108
2 [SETI] 1. SETI [1]   [레벨:12]박종현 2011.06.15 11670
1 Optical SETI (1) [1]  image [레벨:12]박종현 부지부장 2019.03.16 523
Board Pagination ‹ Prev 1 Next ›
/ 1
Designed by hikaru100

나눔글꼴 설치 안내


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

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

설치 취소

SketchBook5,스케치북5

SketchBook5,스케치북5

SketchBook5,스케치북5

SketchBook5,스케치북5