[misc] 항성 적경값으로 개략적인 자정 남중날짜 계산
적경 날짜 남중날짜
0 3.21 9.21 // 추분
6 6.22 12.22 // 동지
12 9.21 3.21 // 춘분
18 12.22 6.22 // 하지
예) 적경 약 19h 항성의 자정 남중날짜는?
- 적경에서 날짜 offset = 적경/2 + 3개월 21일
- 남중날짜 offset = offset + 6개월
따라서
- 적경/2 + 9개월 + 21일 // 13보다 크면 -12개월
또는
- 적경/2 + 10월 -7일 // 13보다 크면 -12, 1보다 작으면 +12 개월
더해줌
또는
- 적경/2 - 2월 -7일 // 1보다 작으면 +12 개월 더해줌
만약 계산된 값이 또는 계산된 값이
19/2 - 2 = 7.5 (7월 중순)
따라서 7월 중순에서 7일을 빼주면 7월 8일 자정즈음에 이 별은
남중함
<?php
function dms2deg($dms)
{
if(!is_array($dms) && preg_match('/^[\d.+-]+$/',$dms)) return
sprintf('%.4f',$dms);
if(is_array($dms)) $dms = implode(' ',$dms); // to string
$dms = preg_replace('/[^\d.+-]+/',' ',$dms);
list($d,$m,$s) = preg_split('/\s+/',$dms);
if(preg_match('/^-/',$d)) $deg = sprintf('%.4f',$d-$m/60-$s/3600); // -0 to <
0
else $deg = sprintf('%.4f',$d+$m/60+$s/3600);
return $deg;
}
function ra2middate($ra)
{
$ra = dms2deg($ra); // match h to d
$sec = $ra/24.0 * 365.24160 * 86400; // to seconds
$sec += 22723200; // gmmktime(0,0,0,9,21,1970);
return gmdate('n.d',$sec);
}
$f = file('ra.txt');
foreach($f AS $v)
{
if(!$v = trim($v)) continue;
list($m,$ra) = preg_split('/\s+/',$v);
if($ra == '') contine;
$m = preg_replace('/[^\d]+/','',$m);
$r[$m] = ra2middate($ra);
}
ksort($r);
foreach($r AS $k=>$v)
{
printf("%d\t%s\n",$k,$v);
}
?>
|