lunar - 달의 위치, 음양력 변환/일출몰/월출몰/별자리/일월식 PHP/8.0.22
소스닫기 | 24절기 계산 | 음양력변환, 일출몰, 월출몰, 별자리, 일월식 계산 | 메시에 관측정보(실시간) | 메시에 관측정보(오늘전체) | deltaT 계산 | 부활절 날짜 계산
<?php
function simple_astro($y, $m, $d, $_location) // solar
{
list($lymd,$info) = lunar::tolunar($y,$m,$d); // lunar
$lage = $info[5];
list($offical,$civil,$nautical,$astronomical,$moreinfo) = solar::sunrise_sunset($y,$m,$d,$_location); // all
return array($lymd,$lage,$offical,$civil,$nautical,$astronomical);
}
function get_solarename($str)
{
$solarename = array ('N'=>'없음', 'A'=>'금환', 'T'=>'개기', 'H'=>'Hybird', 'P'=>'부분');
$name = $solarename[$str[0]] ?? '';
$size = strlen($str);
for($i=1; $i<$size; $i++)
{
$name .= isset($solarename[$str[$i]]) ? (', or '.$solarename[$str[$i]]) : '';
}
if(!$name) $name = '없음'; // recheck in lunar info
return '일식('.$name.')';
}
function get_lunarename($str)
{
$lunarename = array ('N'=>'없음', 't'=>'개기', 'p'=>'부분', 'n'=>'반영');
$name = $lunarename[$str[0]] ?? '';
$size = strlen($str);
for($i=1; $i<$size; $i++)
{
$name .= isset($lunarename[$str[$i]]) ? (', or '.$lunarename[$str[$i]]) : '';
}
if(!$name) $name = '없음'; // recheck in solar info
return '월식('.$name.')';
}
ob_clean();
require_once '_lib/class.astro.php';
require_once '_lib/class.calendar.php';
require_once '_lib/class.solar.php';
require_once '_lib/class.lunar.php';
require_once '_lib/class.moonrise.php'; // new class
require_once '_lib/func.debug.php';
$_self = $_SERVER['SCRIPT_NAME']; //basename($_SERVER['SCRIPT_NAME']);
$title = 'lunar - 달의 위치, 음양력 변환/일출몰/월출몰/별자리/일월식';
//echo date('Z T').' ---- ';
$_checkedm[1] = '';
$_checkedl[1] = '';
$_selected = array('SELECTED');
$_location = 0;
$_inputleap = 0;
if($_POST)
{
$_p = $_POST['_p'];
$_l = array('m' => $_POST['_l']['m'] ?? 0, 'l' => $_POST['_l']['l'] ?? 0);
$_checkedm[$_l['m']] = 'CHECKED';
$_checkedl[$_l['l']] = 'CHECKED';
$_inputleap = $_l['l'];
$_time = calendar::_mktime(21,0,0,(int)$_p['m'],(int)$_p['d'],(int)$_p['y']); // local time 21:00 (UTC 12:00)
$_location = (int)($_POST['_location'] ?? 0);
$_selected[$_location] = 'SELECTED';
setcookie('_lloc',$_location,time()+86400*365,'/','.'.$_SERVER['HTTP_HOST']);
}
else
{
$_time = mktime(21,0,0); // local time 21:00 (UTC 12:00)
if(isset($_COOKIE['_lloc']))
{
$_location = (int)$_COOKIE['_lloc'];
$_selected[$_location] = 'SELECTED';
}
}
$_w = array('Sun','Mon','Tue','Wed','Thu','Fri','Sat');
$_locations = astro::location_kr(NULL);
$phpv = 'PHP/'.PHP_VERSION;
echo <<<___END
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<TITLE>$title</TITLE><P><H2>$title $phpv</H2>
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr">
<SCRIPT LANGUAGE="JavaScript" type="text/JavaScript">
<!--
var starttime = (new Date()).getTime();
var year = 0;
function check_leap(obj)
{
var leap = obj.elements["_l[l]"].checked;
if(leap) obj.elements["_l[m]"].checked = true;
}
function check_lunar(obj)
{
var lunar = obj.elements["_l[m]"].checked;
if(!lunar) obj.elements["_l[l]"].checked = false;
}
//-->
</SCRIPT>
<STYLE TYPE="text/css">
<!--
* { font-family:NanumGothic,'나눔고딕','Malgun Gothic',Dotum,'돋움',Gulim,'굴림',Helvetica,Apple-Gothic; }
body, td { font-size:10pt; }
input, select { background-color:#ffffff; border:solid 1px #4f7292; margin:0 0 0 0; height:30px; }
input[type="checkbox"] {
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
background: #fff;
border-radius: 4px;
cursor: pointer;
height: 16px; width: 16px;
vertical-align: middle;
margin: 0 0.2em 0 0;
outline: 0; }
input[type="checkbox"]::after {
border: solid #fff;
border-width: 0 2px 2px 0;
content: '';
display: none;
height: 40%; width: 15%;
left: 40%;
position: relative;
top: 20%;
transform: rotate(45deg); }
input[type="checkbox"]:checked {
background: #505bf0; }
input[type="checkbox"]:checked::after {
display: block; }
td { font-family:Helvetica; }
table { background-color:#bbbbbb; } /* border:1px solid #cccccc; */
tr { background-color:#ffffff; }
.bb { background-color:dodgerblue; }
.dayyear { background-color:#c9d8ff; }
.small { Helvetica; white-space: pre; font-size:9pt; }
.code {
/* display: block | table-cell | inline-table; */
display: table-cell; vertical-align: middle;
padding: 10px;
margin: 10px 5px 20px 5px; /* 상, 우, 하, 좌 */ /* 바깥쪽 여백임 */
background: #eeeeee;
border-radius: 0.5em / 0.5em;
font-family: Dotumche,monospace; white-space: pre;
width:800px; }
.pre-fontspace { font-family:Dotumche,Helvetica,monospace; white-space: pre; }
.pre-font { font-family:Dotumche,Helvetica,monospace; }
.pre-space { white-space: pre; }
.solidbox {
display: table-cell; vertical-align: middle;
padding: 10px;
margin: 10px 5px 20px 5px; /* 상, 우, 하, 좌 */ /* 바깥쪽 여백임 */
background: #eeeeee;
border-radius: 0.5em / 0.5em; } /* 모서리 둥글게 */
//-->
</STYLE>
</HEAD>
<BODY>\n
___END;
//echo "\n" . ini_get('default_charset');
$_menuindex = array
(
'solar.php' => '24절기 계산',
'lunar.php' => '음양력변환, 일출몰, 월출몰, 별자리, 일월식 계산',
'messier.php' => '메시에 관측정보(실시간)',
'messier.today.php' => '메시에 관측정보(오늘전체)',
'deltat.php' => 'deltaT 계산',
'easter.php' => '부활절 날짜 계산'
);
$menu = '';
foreach($_menuindex AS $k=>$v) $menu .= " | <A HREF='$k'>$v</A>";
if(isset($_GET['view']))
{
echo '<A HREF="'.$_self.'">소스닫기</A>'.$menu.'<HR>'."\n";
highlight_file(basename($_self));
return;
}
// rewrite
list($ymd,$_p['y'],$_p['m'],$_p['d'],$w) = explode(' ',calendar::_date('Y-m-d Y n j w',$_time));
$_err = '';
if(isset($_l['m']) && $_l['m']) // 입력값이 음력일 경우
{
list($ymd,$ck,$y,$m,$d,$w) = lunar::tosolar($_p['y'],$_p['m'],$_p['d'],$_l['l']);
if(!$ck) $_err = '<FONT COLOR=#FF0000>input date --> invalid date</FONT>';
$_time = calendar::_mktime(21,0,0,$m,$d,$y); // overwrite, local time 21:00 (UTC 12:00)
} else
{
$y = $_p['y'];
$m = $_p['m'];
$d = $_p['d'];
}
//print_r(date('Y m d w l W',$_time));
//echo "$y $m $d ";
list($_ymd,$_info,$s,$f,$n) = $lunar = lunar::tolunar($y,$m,$d);
list($_y,$_m,$_d,$_l,$_t,$_a,$_e) = $_info; // 음력 날짜
//_print_r($lunar);
$_ly = $_y;
$_lm = $_m + 1; // 음력, 다음 달 합삭일
if($_lm > 12) { $_lm -= 12; $_ly++; }
## BC patch
##
//$_fymd = explode(' ',calendar::_date('Y n d',$f[2])); // BC(-year) bug patch
$_fymd = explode('-',$f[0]);
if(isset($_fymd[3])) { array_shift($_fymd); $_fymd[0] *= -1; }
list($_lf) = lunar::tolunar($_fymd[0],$_fymd[1],$_fymd[2]); // 이번달 망시각일(음력)
$_ls = sprintf('%d-%02d-01',$_y,$_m); // 이번달 합삭일(음력)
$_ln = sprintf('%d-%02d-01',$_ly,$_lm); // 다음달 합삭일(음력)
$leap = $_l ? '<FONT COLOR=#FF0000>윤달</FONT>' : '평달';
$leaperr = (!$_l AND $_inputleap) ? '<FONT COLOR=#FF0000>윤달아님</FONT>' : '';
$w = $_w[$w]; // weekday
$e_c = get_solarename($_e).', '.get_lunarename($_e);
$e_s = get_solarename($s[3]);
$e_f = get_lunarename($f[3]);
$e_n = get_solarename($n[3]);
$_stime = calendar::_mktime(21,0,0,$m,$d,$y); // local time 21:00 (UTC 12:00)
$moon = lunar::moon($_stime);
$sun = solar::sun($_stime);
$zodiac = solar::zodiac($y,$m,$d);
## 일출/일몰, 박명(twilight)
## http://www.kasi.re.kr/html/study/qna/?f=3&idx=19911
##
list($offical,$civil,$nautical,$astronomical,$moreinfo) = solar::sunrise_sunset($y,$m,$d,$_location); // all
$scul = $moreinfo[0]." ($moreinfo[3])";
## 월출몰
$mrst = moonrise::riseset($y,$m,$d,$_location,1); // 오늘(t)
$mrise = $mrst[1] ? $mrst[1] : $mrst[4];
$mset = $mrst[0] ? $mrst[0] : $mrst[3];
$mcul = $mrst[2]." ($mrst[5])"; // 남중
echo '<A HREF="'.$_self.'?view=1">소스보기</A>'.$menu.'<HR>'."\n";
echo <<<__END
<H2>데모 - 태양과 달</H2>
<div class="solidbox pre-font pre-space">- 유효기간: 양력 1902-01-10 ~ 2038-01-18
- 유효기간: 음력 1901-12-01 ~ 2037-12-14</div>
<p>
<FORM METHOD=post>
<div class="solidbox pre-space" style="width:800px;"
>날짜 설정: <INPUT TYPE=text NAME='_p[y]' VALUE='$_p[y]' SIZE=5 MAXLENGTH=5
>년<INPUT TYPE=text NAME='_p[m]' VALUE='$_p[m]' SIZE=2 MAXLENGTH=2
>월<INPUT TYPE=text NAME='_p[d]' VALUE='$_p[d]' SIZE=2 MAXLENGTH=2
>일 <INPUT TYPE=checkbox NAME='_l[m]' VALUE=1 $_checkedm[1] onClick='check_lunar(this.form)'
>음력 <INPUT TYPE=checkbox NAME='_l[l]' VALUE=1 $_checkedl[1] onClick='check_leap(this.form)'
>윤달, 위치(관측지): <SELECT NAME='_location'>
__END;
foreach($_locations AS $i=>$arr)
{
echo '<OPTION VALUE='. $i . ' ' . ($_selected[$i] ?? '') . '>'. $arr[2] . "\n";
}
$setloc = $_locations[$_location][2];
echo <<< __END
</SELECT><BR>
<INPUT TYPE=submit VALUE=' 계산하기(Submit) '
> <INPUT TYPE=button VALUE=' 초기화(Reset) ' OnClick='location.href="$_self"'>
</div>
</FORM>
<p>
<div class="code">
<b>[결과]</b>
<FONT COLOR=#0000FF>
- 양력: $ymd ($w) $_err
- 음력: $_ymd ($w) $leap ${_t}일 $_err $leaperr
- 정보: 월령: ${_a}, $e_c
- 이번달 합삭(초하루): $s[0] $s[1](양력), ${_ls}(음력) $e_s
- 이번달 망(음력보름): $f[0] $f[1](양력), ${_lf}(음력) $e_f
- 다음달 합삭(초하루): $n[0] $n[1](양력), ${_ln}(음력) $e_n
- 일출일몰: $offical[0] / $offical[1] $setloc 남중 $scul
- 월출월몰: $mrise / $mset $setloc 남중 $mcul
- 시민박명: $civil[0] / $civil[1] $setloc
- 항해박명: $nautical[0] / $nautical[1] $setloc
- 천문박명: $astronomical[0] / $astronomical[1] $setloc
- 별자리: $zodiac[0], $zodiac[1]
</FONT>
</div>
__END;
echo "<p><div class=code>\n";
echo "일출/남중/기타: "; print_r($moreinfo);
echo "월출/월몰/남중: "; print_r($mrst);
echo "</div><p>\n";
$_today = sprintf('%04d%02d%02d',$y,$m,$d); // solar
$_tyear = $y;
$_pdtime = $_time; // print debug time
echo "<TABLE CELLPADDING=3 CELLSPACING=1 BORDER=0 WIDTH=820>\n";
echo "<TR><TD>날짜</TD><TD align=center>요일</TD><TD>음력</TD><TD align=right>월령<br>(UTC 12:00)</TD>".
"<TD align=center>월출몰</TD><TD align=center>일출몰</TD>".
"<TD align=center>시민박명</TD><TD align=center>천문박명</TD><TD>Debug utime</TD></TR>\n";
for($i=-8; $i<=31; $i++)
{
$t = 86400 * $i;
list($ay,$am,$ad,$aw) = explode(' ',calendar::_date('Y m d D',$_pdtime+$t));
$class = ("$ay$am$ad" == $_today) ? 'class=dayyear' : '';
// 음력,월령,일출몰,박명시간
$astro = simple_astro($ay,$am,$ad,$_location);
// 월출몰
$mrst = moonrise::riseset($ay,$am,$ad,$_location,1);
$mrise= $mrst[1] ? $mrst[1] : ($mrst[4] ? $mrst[4] : '---');
$mset = $mrst[0] ? $mrst[0] : ($mrst[3] ? $mrst[3] : '---');
echo "<TR $class>";
echo "<TD>$ay-$am-$ad</TD><TD align=center>$aw</TD><TD>$astro[0]</TD><TD align=right>$astro[1]</TD>".
"<TD align=center>$mrise / $mset</TD>".
'<TD align=center>'.$astro[2][0].' / '.$astro[2][1].'</TD>'.
'<TD align=center>'.$astro[3][0].' / '.$astro[3][1].'</TD>'.
'<TD align=center>'.$astro[5][0].' / '.$astro[5][1].'</TD>'.
'<TD class=small>'.calendar::_date('Y-m-d H:i:s',$_pdtime+$t).' '.($_pdtime+$t).'</TD>'. // debug
"\n</TR>\n";
}
echo "</TABLE><HR width=90% align=left>\n";
## find blue moon
##
$bluemoon = $solareclipse = array();
$_by = $y - 3; // start -3 year
$_bm = $m;
$_bd = 1;
for($i=0; $i<82; $i++)
{
list(,,$_bfirst,$_bmfull,$_bnext) = lunar::tolunar($_by,$_bm,$_bd);
list($_bmfully,$_bmfullm) = explode('-',$_bmfull[0]);
$tmp = sprintf('%04d%02d',$_bmfully,$_bmfullm);
$bluemoon[$tmp][] = array($_bmfull[0],$_bmfull[1],$_bmfull[3]);
list($_by,$_bm,$_bd) = explode('-',$_bnext[0]); // next
if($_bfirst[3] != 'N') $solareclipse[$tmp] = array($_bfirst[0],$_bfirst[1],$_bfirst[3]);
}
## print blue moon
##
echo <<<___END
<p>
<div class=code>
--------------------------+----------------------------
Solar Eclipse | Lunar Eclipse
--------------------------+----------------------------
T - 개기일식(달의 본영) | t - 개기월식(지구의 본영)
A - 금환일식(달의 본영) |
H - Hybrid(금환/개기일식) |
P - 부분일식(달의 반영) | p - 부분월식(지구의 본영)
| n - 반영식(지구의 반영)
--------------------------+----------------------------
* 달이 태양을 걸쳐서 기나가는 경우 부분일식(달의 반영이 지구에 도달)
* 달이 지구 분영에 걸쳐서 지나가는 경우 부분월식
* Penumbra: 지구나 달의 반영(그림자)
* Umbra: 지구나 달의 본영(그림자)
* Antumbra: 반음영, 본영의 역그림자(?)
</div>
<p>
<TABLE CELLPADDING=3 CELLSPACING=1 BORDER=0 WIDTH=820>
<TR><TD COLSPAN=3>new moon</TD><TD COLSPAN=3>full moon</TD><TD COLSPAN=3 class=bb>2'nd full moon (blue moon)</TD></TR>
<TR>
<TD>date</TD><TD>time</TD><TD>eclipse</TD>
<TD>date</TD><TD>time</TD><TD>eclipse</TD>
<TD class=bb>date</TD><TD class=bb>time</TD><TD class=bb>eclipse</TD>
</TR>
___END;
foreach($bluemoon AS $k=>$arr)
{
$tr = $fr = $er = FALSE;
list($_pyear) = explode('-',$arr[0][0]);
$class = ($_tyear == $_pyear) ? 'class=dayyear' : '';
if(@$solareclipse[$k])
{
echo "<TR $class><TD>".$solareclipse[$k][0].'</TD><TD>'.$solareclipse[$k][1].'</TD><TD>'.$solareclipse[$k][2].'</TD>';
$tr = TRUE;
}
if($arr[0][2] != 'N')
{
if(!$tr) echo "<TR $class><TD>-</TD><TD>-</TD><TD>-</TD>";
echo '<TD>'.$arr[0][0].'</TD><TD>'.$arr[0][1].'</TD><TD>'.$arr[0][2].'</TD>';
$tr = $fr = TRUE;
}
if(isset($arr[1]) && $arr[1])
{
if(!$tr) echo "<TR $class><TD>-</TD><TD>-</TD><TD>-</TD>";
if(!$fr) echo '<TD>'.$arr[0][0].'</TD><TD>'.$arr[0][1].'</TD><TD>-</TD>'; // first moon
$eclipse = ($arr[1][2]=='N') ? '-' : $arr[1][2];
echo '<TD>'.$arr[1][0].'</TD><TD>'.$arr[1][1].'</TD><TD>'.$eclipse.'</TD></TR>'."\n"; // blue moon
$tr = $fr = $er = TRUE;
}
if(!$tr) continue;
if(!$fr) echo '<TD>-</TD><TD>-</TD><TD>-</TD>';
if(!$er) echo '<TD>-</TD><TD>-</TD><TD>-</TD></TR>'."\n";
}
echo "</TABLE>\n";
//echo '<SPAN class=pre>'."\n";
echo '<p><div class=code>';
echo 'test calendar::_mktime() to calendar::_date()'."\n";
echo '-4100-02-29 00:00:00 to '.calendar::_date('Y-m-d H:i:s',calendar::_mktime(0,0,0,2,29,-4100)).' '.calendar::_mktime(0,0,0,2,29,-4100) ."\n";
echo '-100-02-29 00:00:00 to ' .calendar::_date('Y-m-d H:i:s',calendar::_mktime(0,0,0,2,29,-100))."\n";
echo '-111-02-29 00:00:00 to ' .calendar::_date('Y-m-d H:i:s',calendar::_mktime(0,0,0,2,29,-111))."\n";
echo '0000-02-29 00:00:00 to ' .calendar::_date('Y-m-d H:i:s',calendar::_mktime(0,0,0,2,29,0000))."\n";
echo '1000-02-29 00:00:00 to ' .calendar::_date('Y-m-d H:i:s',calendar::_mktime(0,0,0,2,29,1000))."\n";
echo '2000-02-29 00:00:00 to ' .calendar::_date('Y-m-d H:i:s',calendar::_mktime(0,0,0,2,29,2000))."\n";
echo '3000-02-29 00:00:00 to ' .calendar::_date('Y-m-d H:i:s',calendar::_mktime(0,0,0,2,29,3000))."\n";
echo '2037-12-20-20 to ' .calendar::_date('Y-m-d H:i:s',calendar::_mktime(0,0,0,12,20-20,2037))."\n";
echo '</div>';
//echo '</SPAN>'."\n";
//print_r($bluemoon);
echo '<p><div class=code>';
echo "<H3>$ymd(음.$_ymd) $w</H3>\n";
echo '<B>달의 위치(12:00:00):</B>'."\n";
print_r($moon);
echo "\n\n";
echo '<B>태양의 위치(12:00:00):</B>'."\n";
print_r($sun);
echo "\n\n";
echo "<B>음력 계산:</B> $_ymd\n";
print_r($lunar);
echo "\n\n";
echo "<B>별자리:</B>\n";
print_r($zodiac);
echo '</div>';
echo <<<__END
<p>
<div class=code>
## lunar object -- get moon position or sun <-> moon, constellation, eclipses
##
## [author]
## - Chilbong Kim, <san2(at)linuxchannel.net>
## - http://linuxchannel.net/
##
## [changes]
## see http://ftp.linuxchannel.net/devel/php_lunar/
##
## [conjunction error by approximative method]
## - avg: -6538 seconds(+598 seconds, -11787 seconds)
##
## [conjunction error by approximative method day patch]
## - avg: -368 seconds(+592 seconds, -1081 seconds)
## - but, wrong day not exists :)
##
## [valid date]
## - solar : 1902-01-10 - 2038-01-18
## - lunar : 1901-12-01 - 2037-12-14
##
## [support date]
## - unix timestamp base: 1902-01-01 00:00:00 <= date <= 2037-12-31 23:59:59 (guess)
## - JD(Julian Day) base: BC 4713-01-01 12:00 GMT <= Gregorian date <= AD 9999 (guess)
##
## [download & online source view]
## - http://ftp.linuxchannel.net/devel/php_lunar/
## - http://ftp.linuxchannel.net/devel/php_calendar/
##
## [demo]
## - http://linuxchannel.net/gaggle/lunar.php
##
## [docs]
## - http://linuxchannel.net/docs/lunar.txt
##
## [study]
## - http://www.kao.re.kr/html/study/qna/index.html
## - http://sunearth.gsfc.nasa.gov/eclipse/SEsaros/SEsaros.html
## - Synodic Month (new moon to new moon) 29.53059 days = 29d 12h 44m (A)
## - Draconic Month (node to node) 27.21222 days = 27d 05h 06m (B)
## - Anomalistic Month (perigee to perigee) 27.55455 days = 27d 13h 19m
## - (223 * A) = 6585.36 days, (242 * B) = 6585.32 days
## - 1 Saros = 6585.32 days = 18 years 11 days 8 hours
##
## [eclipses]
## - Solar Eclipses: T(Total), A(Annular), H(Hybrid(Annular/Total)), P(Partial)
## - Lunar Eclipses: t(Total), p(Umbral(Partial)), n(Penumbral)
##
## [eclipses(e) by this program]
## - S A 104 0.010582273616323 1.06751983653440(1.067743)
## - S T 91 0.014674627401046 1.04166992331860
## - S H 6 0.210833791736160 0.96121766199154(0.964180)
## - S P 106 0.829402137331320 1.59530999819400
## - L t 114 0.010630181434784 0.52538271749109(0.527908)
## - L p 85 0.294681791935650 1.14183526374750
## - L n 111 0.832900661071600 1.57436507046800(1.578244)
##
## [reference]
## - http://user.chollian.net/~kimdbin/re/moonpos.html
## - http://zimmer.csufresno.edu/~fringwal/skycalc.c
## - http://williams.best.vwh.net/sunrise_sunset_example.htm
## - http://aa.usno.navy.mil/faq/docs/SunApprox.html
## - ftp://ssd.jpl.nasa.gov/pub/eph/export/C-versions/hoffman/
## - http://www.linuxchannel.net/docs/solar-24terms.txt
## - http://www.stjarnhimlen.se/english.html // good
## - http://www.stargazing.net/kepler/ // good
## - http://sunearth.gsfc.nasa.gov/eclipse/eclipse.html // good
## - http://sunearth.gsfc.nasa.gov/eclipse/phase/phasecat.html
## - http://sunearth.gsfc.nasa.gov/eclipse/phase/phase2001gmt.html
## - http://sunearth.gsfc.nasa.gov/eclipse/LEvis/LEaltitude.html
## - http://sunearth.gsfc.nasa.gov/eclipse/resource.html
## - http://www.mreclipse.com/Special/SEprimer.html // Solar Eclipses for Beginners
## - http://www.mreclipse.com/Special/LEprimer.html // Lunar Eclipses for Beginners
## - http://www.mreclipse.com/MrEclipse.html // for Beginners
## - http://astronote.org/
## - http://myhome.naver.com/dudwn1109/appearance/solor_eclipse.htm
## - http://www.kao.re.kr/html/study/
</div>
__END;
echo "\n</BODY>\n</HTML>";
return;
?>
Page loading: 0.00(server) + (network) + (browser) seconds