Download
http://gist.github.com/gists/246449/downloadOverview
天文学的な近似法を用いて任意の日時における月齢を計算します。$m = new MoonAgeTime();
$m->setTargetTime(mktime(12, 0, 0, 10, 27, 1999));
$moonAge = $m->getMoonAge();
- 返り値はfloatです。
- 便宜上、円周率は0.017453278(ラジアン)に、地球の自転遅れは0.00074074074(日)に近似されています。
- 基本的に日本国内での使用を前提としています。
- 近似計算を一部省略しているため、若干実体とは離れます。
Sample
試しにこんな画像を用意してみました。適当な処理を行うと、現在の月の状況をアイコンで表すことが出来ます。
setTargetTime(time());
echo date(‘Y-m-d H:i:s’) . ‘現在の月 … ‘ . ‘getMoonAge() / 30 * 24)) . ‘.gif” />’;
?>
setTargetTime(time());
echo date('Y-m-d H:i:s') . '現在の月 ... ' . 'getMoonAge() / 30 * 24)) . '.gif" />';
?>
Install
依存するライブラリはありません。任意のディレクトリで使用できます。Source
謝辞
コード内の近似計算においては、日の出日の入り計算用ライブラリと同じく、長沢工著「日の出・日の入りの計算」を参考にさせていただきました。感謝します。Footnote
プログラム内にコメントとして日本語が混入しています。また思いついてから2時間あまりで作成したため、テストは不十分です。月齢が30を越えるなど微妙な計算結果が返ることがあるかも知れません。