![]() |
![]() |
2.旧暦変換プログラム | ||
前回は色々な暦に変換できるプログラムを作ったことを書きましたが、 今回はそれに追加する形で旧暦変換プログラムを作りました。 今回もC#2013を使っております。 旧暦ですが、普通旧暦を呼ばれているものは天保暦ですが、現在カレンダーに 載っている旧暦はそれに似ていますが、似て非なるものです。今回作成 したのは現在旧暦と呼ばれている似て非なるものの方です。 今回はさすがに難しかったです。「中気」と呼ばれる二十四節気のうち 正節を除く12の節気の日付・時刻を求めるために太陽黄経や月の黄経を 求めなければいけないし、さらに「朔」(新月の日。その月の1日)を 求めなければいけないということでこんな物どうやって計算するんだ とか思いました。本気でこれを1から計算する時は天文学の本1冊は 読まないといけないみたいですね。 そう思っていたら、うまいこと旧暦変換のサンプルプログラムを見つけたので それを参考にして作成しました。それでも、難しかったですけどね。 太陽黄経や月の黄経に至っては、本気で理解しようとすればもうそれは 高校時代にやっていた数学の基礎解析の世界でした。 作成してのバグはユリウス世紀数の計算で小数の部分が間違っていたり 四捨五入しないといけない所を切り捨ててしまって1日か2日ほど 計算がずれていたりして小数部の扱いで間違っていたことが多かったです。 でも、できた時は本当に嬉しかったです。正直本当にできると 思いませんでした。 あと、旧暦からユリウス日に変換も考えていましたが、少々悩みましたが、 旧暦変換の計算途中の中間値を使って計算すれば簡単にできました。 このように暇なことをしておりました。 |
||
write:2015/06/13 | rewrite:- | update:2015/08/02 |