簡易月齢計算

▲天文一般目次へ ■ホームページへ

D.getTime()/1E3-919179540)%2551442)/86400)+.4

 D.getTime()/1E3により1970年からブラウザ読み込み時までの秒数を測り、 1970年1月1日0時から1999年2月16日15時39分の朔時のを引き、 その引いた値を平均朔望月の秒数で割り、日数換算したものに、 調整数0.4を加えたものです。

 考え方は月齢0を出発点として、月は平均朔望月により真円を描くものと仮定した 計算で誤差が出ます。

1999年2月16日15時39分以降でないと使えません


D.getTime()/1E3-929332980)%2551442)/86400)+.4

 考えは同上。1999年6月14日4時3分の月齢0を基準にしました。(KODAさんにご協力いただきました) これにより誤差が0.6日と少なくなりました。

平均値と軌道の偏差が0.6なので、この式の考えではこれ以上の精度は出ないです。

1999年6月14日4時3分以降でないと使えません


(350.737486+444960*T+307.114217*T-1.436E3*T*T)%360*29.4/360

 1900年分点による太陽と月の離角からの簡易計算。

1900年以降でないと使えません


 ユリウス日から直前の新月のユリウス日を差し引く計算。

月と太陽の黄経が一致した瞬間を新月としており、計算誤差は 差は、1月や6月が差が小さく、3月や9月が最大となります。 総じては月齢に±0.1程度の差で求められます。

この式はKODAさんと福原直人さんに教えていただきました。


記号解説

D.getTime()  D=new Date()により日にちを扱う宣言をし、その値は「D」にします。
 D.getTime()により1970年から何年経ったか、ブラウザはシステム時計を調べ 1/1000秒単位で答えが返ってきます。
E  10の何乗かを表します。早い話が0が幾つつくかです。
2E6なら2百万で、2E-6なら0.000002のことです。
MA  月齢つまりMoon Ageの頭文字です。
T  ユリウス世紀つまり36525日で「1」となります。
その他の数字  え〜ま〜オマジナイであると思ってください(^^;

「.4」平均より0.4ずれているらしく、私の経験測です。
「29.53または29.4」は平均朔望月(2551442秒)です
「86400」は一日の秒数です。


▲天文一般目次へ ■ホームページへ