[misc] 두 천체간 각거리 크기 계산
Angular Separation
두 천체간 각거리 크기는 Stary Night 에서 확인할 수 있습니다만,
천체 A(a1,b1)와 천체 B(a2,b2)의 각거리(d) 크기는
- 공식1) cos(d) = sin(b1)*sin(b2) + cos(b1)*cos(b2)*cos(a1-a2)
- 공식2) d = sqrt(cos(b)^2 * (a1-a2)^2 + (b1-b2)^2)
로 구할 수 있습니다. 각거리가 0(0°10' 보다 작은)이나 180에
가까울 경우는 (2)번 공식 사용합니다.
- a1,a2 는 적경 또는 황경
- b1,b2 는 적위 또는 황위
- b 는 두 천체의 평균값 (b1+b2)/2
* 공식출처: Astromical Algorithms. by Jean Meeus 1991, p.105 Angular
Separation.
참고로 적경/적위는 스텔라리움에서
확인이 가능합니다.
적경과 적위는 평면좌표가 아닌 구면좌표값이므로
위와 같이 구면삼각법으로
계산해야 합니다.
1. 자바스크립트 버전
http://linuxchannel.net/gaggle/angular.distance.html
2. PHP 버전
---------------------------------
function angular_dist($n='0h0m0s,0d0m0s', $m='0h0m0s,0d0m0s')
{
$n = trim($n);
$m = trim($m);
$p1 = preg_match('/.+-\d+/',$n) ? -1 : 1;
$p2 = preg_match('/.+-\d+/',$m) ? -1 : 1;
$n = preg_split('/[^\d.]+/',$n);
$m = preg_split('/[^\d.]+/',$m);
$a1 = deg2rad(($n[0] + $n[1]/60 + $n[2]/3600) * 15);
$b1 = deg2rad(($n[3] + $n[4]/60 + $n[5]/3600) * $p1);
$a2 = deg2rad(($m[0] + $m[1]/60 + $m[2]/3600) * 15);
$b2 = deg2rad(($m[3] + $m[4]/60 + $m[5]/3600) * $p2);
$diffa = abs($a1 - $a2);
$diffb = abs($b1 - $b2);
$cosd = sin($b1)*sin($b2) + cos($b1)*cos($b2)*cos($diffa);
$d = acos($cosd);
$d = rad2deg($d);
if($d<0.17 || $d>179.83)
{
$b = ($b1+$b2) / 2;
$d = sqrt(cos($b)*cos($b)*$diffa*$diffa + $diffb*$diffb);
$d = rad2deg($d);
}
return array
(
sprintf('%.2f',$d), // degrees of .2f format
floor($d), // degrees
floor(($d*60) % 60), // minute
round(($d*3600) % 60) // seconds
);
}
---------------------------------
|