이 글은 2009년 4월 15일에 지돌스타님이 쓰신 글입니다.
여기서 다루는 문제는 천문 관련 계산할 때 반드시 숙지하고 있어야할 각도 변환에 관련된 것이다. 매우 기초적인 내용이다. 꼭 천문 계산이 아니더라도 수학계산을 위해 이러한 내용은 잘 알고 있어야 한다.
혹시 다음 값을 어떻게 읽는가?
2h 44m 11.986s
49°13′42.48″
아마도 대부분 사람들이 다음처럼 읽을 것이다.
2시 44분 11.986초
49도 13분 42.48초
2h 44m 11.986s 는 시(hour)이며, 49°13′42.48″는 도(degree)이다.
잘 알고 있는 사실이지만 24시간은 360도에 대응한다. 그리고 1시간은 15°에 대응한다. 또한 시간에서의 1분은 도에서
15분과 대응한다. 문제는 여기서 발생한다. 한국어로 번역할때 시간의 1분과 도의 1분은 명확히 다른 단위라는 것이다.
영문으로는 시간의 분은 minute를 쓰고 도에서의 분은 arcminute를 사용한다.
이러한 시간과 도의 차이를 잘 모르고 용어를 섞어쓰면 나중에 분명히 문제가 발생한다. 그래서 도와 시간의 표현에는 영어를 쓰는 것이 안전하다. 다음처럼 쓰자.
2h = 2 hours 또는 2h
44 m = 2 minutes 또는 2m
11.986s = 11.986 seconds 또는 2 s
49° = 49 degrees 또는 49 deg
13′ = 13 arcminutes 또는 13 arcmin
42.48″ = 42.48 arcseconds 또는 42.48 arcmin
아래값을 보자.
1h 21m 23.2s
1°21′23.2″
위 값은 둘다 1.3564 값을 가진다.(둘다 분에는 60을 곱하고 초에는 3600을 곱해서 시나 도에 더하면 된다.) 하지만
단위가 하나는 hours이고 하나는 degrees이다. 1h 21m 23.2s 를 각도로 표시하기 위해서는 15가 곱해져야
한다. 결과적으로 1.3564 h * 15°/h = 20.346°가 된다.
앞서 설명한 도와 시간은 사람이 보기에 편한 단위이다. 누구나 360도와 24시에 대해서 복잡하다는 느낌을 받는 사람은 없을
것이다. 하지만 수학적 계산을 할 때는 이러한 값을 사용할 수 없다. 수학적 계산을 위해서는 각도와 시간은 항상
라디안(radian)값으로 변환해야한다. 지름 1의 원의 둘레값으로 π=3.141592653… 이다. 이 값이 radian이다.
즉 지름과 원의 둘레값의 단위를 동일하게 봄으로써 수학적 계산을 가능하게 한다. 360도와 24시는 2π=6.2831853…와
대응한다.
각도를 표현하는 단위는 지금까지 살펴본 결과 도(degree), 시(hour), radian 이라는 것을 알았다. 천문학에서
이것 외에는 사용하지 않는다. 가령, 적경(Right Asension),적위(Declination)은 각각 시와 도를 사용한다.
앞서 설명했듯이 시와 도는 수학계산에는 적합하지 않으므로 radian으로 변환해야한다. 가령, cos, sin과 같은 수학함수를
이용할 때 도, 시 단위로는 계산할 수 없으므로 반드시 radian으로 변환한 다음에 사용해야한다.
천문 프로그래밍을 한다면 각도 단위 변환을 하기 위해 다음과 같은 방법으로 변환값을 미리 만들어 사용한다.
/**
* Pi
*/
public static const PI:Number = 3.141592653589793238462643383279502884197;
/**
* Pi * 2
*/
public static const TPI:Number = 6.2831853071795864769252867665590;
/**
* Half of PI
*/
public static const HPI:Number = 1.5707963267948966192313216916398;
/**
* Math.sqrt(2);
*/
public static const SQRT2:Number = 1.5707963267948966192313216916395;
/**
* Radian -> Degree
*/
public static const R2D:Number = 57.295779513082320876798154814105;
/**
* Degree -> Radian
*/
public static const D2R:Number = 0.017453292519943295769236907684886;
/**
* Arcsecond -> Radian
*/
public static const S2R:Number = 4.8481368110953599359e-6;
/**
* Radian -> Arcsecond
*/
public static const R2S:Number = 206264.80624709635515647335733078; //3600 * 180/PI
/**
* Arcminute -> Radian
*/
public static const M2R:Number = 2.9088820866572159615394846141477e-4; // 1/60 * PI /180
/**
* Radian -> Arcminute
*/
public static const R2M:Number = 3437.7467707849392526078892888463; //60 * 180/PI
/**
* Arcminute -> degree
*/
public static const M2D:Number = 1/60;
/**
* degree -> Arcminute
*/
public static const D2M:Number = 60;
/**
* Radian -> Hours
*/
public static const R2H:Number = 3.8197186342054880584532103209403;
/**
* Hours -> Radian
*/
public static const H2R:Number = 0.26179938779914943653855361527329;
/**
* Degree -> Hour
*/
public static const D2H:Number = 1/15;
/**
* Hour -> Degree
*/
public static const H2D:Number = 15;
만약 시(hour)에서 도(degree)로 변환하려면 14h * H2D = 210 deg 가 된다. 이러한 방법을 이용해여
수학적 계산을 마무리 짓고 나온 결과값이 각도인 경우 그에 맞게 시(hour) 또는 도(degree)로 변경해주어 사람이 보기
편리하도록 만들어주면 되는 것이다.
출처 : http://jidolstar.com/blog/archives/1228