admin満月とは、真丸に輝く月のこと。地球からみて太陽と反対方向になったときの月。月の黄径と太陽の黄径との差が180度になったときだ。満月の夜、なんとなく、ロマンチックに感じるのが私だけかな。このプログラムでは満月の日を教えてくれる。デートの予約に利用できるかも(笑)。(ユリウス日からの換算)も必要。<説明>年の365(または366)日に対し、太陽と月の黄径をそれぞれ計算し、その差が180度にもっとも近い日を満月の日とする計算。日付は日本標準時に修正してある。海外では1日ずれることもある。プログラムをさらに精度よく計算させれば、満月となる時刻まで正確に求められるかも。2/17、3/18、4/17、5/16、6/14、7/14、8/12、9/11、10/10、11/9、12/9。2/6、3/7、4/5、5/5、6/3、7/2、8/1、8/30、9/28、10/28、11/27、12/27。ようなものは結構見かける。admin月が満ち欠けして見えるのは、地球から見て太陽と月の離れる角度が変わり、月の太陽に照らされている部分と照らされない部分の見え方が変わるからだ。月の黄径と太陽の黄径が一致したとき、月の太陽に照らされる部分が地球からは見えない、そんな状態の月を新月という。太陰暦(旧暦)では新月を含む日を月の第1日としているのがその名の由来。太陽暦が1年約365日に対して、太陰暦は1年354日。いうことで、1年(太陽暦)のなかで、新月の日になるのは、12回か13回。新月の夜は暗いので、犯罪が多いといわれている。このプログラムでは新月の日を教えてくれる。占いや犯罪防止に役立つかな(笑)。すごいプログラムだろう、と自慢したくなるが、太陽と月の位置計算関数があれば大したことでもないはず。(ユリウス日からの換算)も必要。<説明>年の365(または366)日に対し、太陽と月の黄径をそれぞれ計算し、位置がもっとも近い日を新月の日とする計算。日付は日本標準時に修正してある。海外では1日ずれることもある。2/1、3/3、4/2、5/1、5/31、6/30、7/29、8/28、9/26、10/25、11/24、12/23。2/20、3/21、4/19、5/19、6/18、7/17、8/16、9/14、10/14、11/12、12/12。admin月の黄経、黄緯、および地心距離を計算する関数。こちらについても、資料のデータをそのまま利用しただけなので、意味は理解していない。(世界標準時からユリウス日への換算)が必要。0.5);<関数本体>lunarPos.c<説明>ある時刻の月の黄経・黄緯および地球までの距離を計算する。270度になる瞬間だから。新月時に月の黄緯が0に近い値であれば日食となり、満月時に同様に近い値であれば月食となる。admin太陽の黄経、地心距離を計算する関数。正直にいって、関数が正しいかどうか、よく判らない。ここまで、天文学の知識は持ち合わせていないから。ニュートン力学の凄さを体験できるのは確かのようだ。日食や月食の発生時刻まで計算できるんだから、100年前だったら、神様と呼ばれたに違いない。コンピュータはまだ発明されてなかったので、判ってても結局凡人でしかならなかったかも。(世界標準時からユリウス日への換算)が必要。0.0);<関数本体>solarPos.c<説明>地球から観察すると、太陽は恒星の間の、定まった道の上を動いている。太陽の通る道を黄道という。度とは春分点に太陽のいるところ。度、6月22日夏至は90度、8月8日立秋は135度、9月24日秋分は180度、12月22日冬至は270度に太陽が位置するらしい。本関数を使うと、ある時刻の太陽の黄経および地球までの距離がわかる。adminある日付に対し、n日後の日付を算出する関数。nの値をマイナスにすれば、n日前の日付になる。2004/8/15、といった具合。マイナス値にすれば、n日前になる。<注意事項>引数として渡された日付の実在性チェックはしない。(ユリウス日への換算)が必要。(ユリウス日からの換算)が必要。11);<関数本体>dayAdd.c<説明>内部では、基準日をまずユリウス日に換算してから、nの値を足し、最後に西暦年月日に戻す。admin前後異なる2つの日付に対し、間の離れた日数(差)を算出する関数。前後関係はが逆になっていれば、マイナスの結果になる。-5日、との計算結果。マイナスの値であれば、日付の前後関係が逆になっていることを示す。<注意事項>引数として渡された日付の実在性チェックはしない。(ユリウス日への換算)が必要。11);<関数本体>dayDiff.c<説明>内部では、2つの日付をそれぞれ、ユリウス日に換算してから、差の算出を行う。admin今度は逆の、ユリウス日を世界標準時に換算する関数。0.5);<関数本体>jd2ut.c<説明>ユリウス日の起算日紀元前4713年1月1日はユリウス暦による日付で、ユリウス暦は紀元前46年にユリウス・カエサルが採用したもの。ユリウス暦は1582年10月4日まで使われ、その翌日はグレゴリオ暦の同年10月15日だった。間では当たり前のように使っているようだが。したときの正午からの時間。ついては、本関数内ではチェックしない。ユリウス日の整数値は関数値から、小数値は第1引数から得られる。計算には60進法、月の大小、閏年か平年、といったものが混在している。天文学の世界では、ある決められた起算日から日付を積算していくユリウス日(ユリウス通日)という非常に便利な時の尺度がある。そのユリウス日の0.0日は紀元前4713年(-4712年)1月1日の正午で、翌日の正午がユリウス日1.0日である。1991年6月15日世界標準時0時のユリウス日は2448422.5日になる。JST)は世界標準時より、9時間進んでいる。admin大の月、小の月、つまりたとえば、3月は31日あるのに対し、4月は30日しかない。各月の日数、あなたなら、判ってらしゃるよね。周りに聞いても、なかなか覚えてないひとが多いみたい。小さい頃、自分がよく教わっていたのに。上の写真の意味はお分かりですか。左手でも、右手でも、また、左端から数えても、右端から数えても、全く同じだが、山は大の月、谷は小の月(あるいは2月)を示すのだ。写真の通り、左手の右端から数えていこう。1月、2月、...、7月、と数えていき、左端の山に止まる。つぎの8月はもう1回、左端の山を使う。8月、9月、...、12月。大の月、小の月、これで生涯忘れないでしょ。ひとによっては、8月はもう片方の握り拳を使うらしいが、原理は皆同じ。西暦年月<関数値>その月の日数。1月であれば31、4月であれば30。<注意事項>閏年にも対応している引数の月の値が1〜12以外であれば、1月とみなす。2);<関数本体>daysOfMonth.c<説明>閏年の判定法が判れば、あとは簡単に理解できるはず。admin閏年かどうか、常識問題として、あなたは判ってらしゃる?4年一回、ということのようだが、正確には違う。世の中、天才プログラマと呼ばれた人たちでさえ、良く間違う。いっても、プログラマって案外常識のないひとが多い。2000年問題やら、エクセルのバグやら、閏年にまつわるエピソードがいくらでもありそう。正しい知識とはこんなもの。下記の条件のうち、いずれかを満たす西暦年が閏年となる。2100年は平年だが、その間のほかの年については、4年おきと理解して正しい。いま生きているわれわれが生存している間、4年1回と思ってまず間違いない。<用例>leapYear(2004);<関数本体>leapYear.c<説明>4の倍数でしかも100の倍数でない年、または400の倍数の年は閏年。曜日までも自動表示と豪語するオートマチック機械時計は世界中数多くあるけど、1900年や2100年の曜日を正しく表示できるものはあるのだろうか。壊れてて、100%の確率で迎えられそうもない2100年のために、そのような時計をつくるのだろうか。閏年はなぜ必要なのだろうか。365日5時間48分46秒かかる。1年を365日とすると4年に約1日ずれてくる。閏年を作らねばならないわけだ。