2006年12月09日

オシロスコープでヒョウタンツギが見たい 1

hyoutan.JPG

TAKEJI-SOFTさんより、オシロスコープを借りました。

その昔、職場で難しい顔をしてオシロスコープの表示を見ている人々の心をちょっと緩めさせてやろうと
オシロスコープのXY表示を使って絵を表示するというお遊びを内輪でやっていたのですが、ずっと、その環境は失われてしまっていました。

当時はフェージングシミュレータという機械の信号発生部分のロジックまわりの誤用と有志の協力のおかげで奇跡的にできたのですが、今はそのような大げさな環境はいじれる立場にはありません。

残されている2枚の写真が当時の記録全てなのでした。(上の画像はその中の1枚です)

そんなわけで再現してみようというお話です。

LINK)
ヒョウタンツギをめぐる諸説について
のヒョウタンツギをテストパターンとして使用させていただいています。
どうも、ありがとうございます。

- つづく -

posted by ketaru at 22:43| Comment(2) | TrackBack(0) | 科学実験

2006年10月31日

ダ・ヴィンチ・コード

20050419.jpg

ダ・ヴィンチ・コードのお好きな方は、
東京タワー蝋人形館も楽しめるかもしれません。

特に解説は無しにしておきましょう。




posted by ketaru at 23:07| Comment(0) | TrackBack(0) | 日記

2006年10月30日

明け六つ 暮れ六つ計算 3

さて、明け六つ暮れ六つ発生装置を求めて
 オープンソースであること
 単機能でシンプルであること
 コマンドラインだけでできること。
 などと改造できそうなプログラムを探してたどり着いたのは、

FreeBSD Astro Ports でした。

なにやら天文関係のプログラムが集まっているようなので、未来の天文学者さんやお好きな方は突入してみましょう。

sscalc-1.0
A sunrise/sunset time calculator

これが良さそうです。

私の手元には、open blocks という小型LINUXマシンしか無かったのでこれでいじってみます。

プログラムソースはここから飛べます。

これを適当にPC-UNIX上で展開して遊ぶのですが、
なにやらBSD環境用のMakefileっぽいのでベタにコンパイルしてみましょう
[user1@LinuxServer sscalc-1.0]$ gcc sscalc.c -lm
[user1@LinuxServer sscalc-1.0]$ ./a.out
23:31:05 09:34:58

怪しい時刻が出てまいりました。
sscalc.c をあれこれ見てみます。

344
345 double lat = 47.66; /* if nothing else given, use the author
s */
346 double lon = 117.43; /* location of Spokane, Washington, USA
*/

なにやらデフォルトはSpokane, Washington, USAになっています。
[user1@LinuxServer sscalc-1.0]$ ./a.out -h
./a.out: invalid option -- h
usage: sscalc [-n reps][-m mon][-d day][-o lon][-a lat][-rs]

ヘルプオプションは無いようですが、
-o 経度 -a 緯度 です。

ソースファイルの中には、cities.txtという、都市名3457個と経度緯度の対応表も入っていました、どこかで使えるかも。
[user1@LinuxServer sscalc-1.0]$ wc cities.txt
3457 10337 112858 cities.txt
[user1@LinuxServer sscalc-1.0]$ grep Tokyo cities.txt
Tokyo, Japan:-139.73:35.68


では東京の緯度経度を入れて見ます。

[user1@LinuxServer sscalc-1.0]$ ./a.out -o -139.73 -a 35.68
06:00:39 16:48:22

今日は6時日の出、16時48分日の入りだそうです。

こよみのぺーじさんを見ると。

日の出 06時00分 : 日の入 16時49分
おお、大体あってる(笑)

さて探している補正項らしきものは。

83 /*
84 ** The hour angle returned below is only for sunrise/sunset, i.e. when
85 ** the solar zenith angle is 90.8 degrees. The reason why it's not 90
86 ** degrees is because we need to account for atmospheric refraction.
87 */
88 static double
89 calcHourAngle(double lat, double solarDec, short calcSunrise)
90 {
91 double latRad = degToRad(lat);
92
93 if (calcSunrise)
94 return (acos(cos(degToRad(90.833)) / (cos(latRad) * cos(solarDec
)) -
95 tan(latRad) * tan(solarDec)));
96 else
97 return -(acos(cos(degToRad(90.833)) /
98 (cos(latRad) * cos(solarDec)) -
99 tan(latRad) * tan(solarDec)));
100 }
101
102

ここですね、大気の屈折もカウントが必要とあります。
こよみのぺーじさんでは補正は0.899度でした。
ここを書き直してコンパイル+実行してみると。

[user1@LinuxServer sscalc-1.0]$ ./a.out -o -139.73 -a 35.68
06:00:18 16:48:42

... まあいいかな。

では作戦通りここを書き換えてみましょう。
 7度21分40秒+太陽の視半径16分=7+(21/60)+(40/3600) + 16/60 = 7.628 でやってみましょう。

上の90.833 を 97.628と書き換えて
デフォルトの緯度経度もとりあえず東京にしておきます。

[user1@LinuxServer sscalc-1.0]$ ./a.out
05:26:09 17:22:50


おお、これで良さそうです。これぞ、ユビキタス江戸クロックの原理!
世界のおおむねどこでも、明け六つ暮れ六つが幕府の定義通りわかるはずですね。

- つづく-
posted by ketaru at 21:05| Comment(2) | TrackBack(0) | ソフトウェア

2006年10月25日

明け六つ 暮れ六つ計算 2

さて、明け六つ 暮れ六つを求めていろいろ調べて見ると。
大気差」という数字があるとわかりました。

日の出、日の入りの時に太陽は本当は地平線より下にあって、地球の大気の屈折で浮かび上がって見える。とのことです。知らなかった。

下記サイトはとても詳しいです。
 こよみのぺーじ 
補正は(−大気差−眼高差−視半径+地心視差)= -0.899度
で計算したとのことです。

これでツボがわかりました。
1 日の出、日の入りのプログラムのソースから補正項の定義、もしくは計算をしている所を上の数字を参考にして探す。

2 そのあたりを7度21分40秒で置き換えれば「明け六つ、暮れ六つ」発生装置になるのでは?いや、なるに決まっている。
(細かい補正の扱いをどうするのかの謎はちょっと置いておきます)

つづく
posted by ketaru at 06:59| Comment(2) | TrackBack(0) | ソフトウェア

2006年10月24日

明け六つ、暮れ六つ計算 1

 世間では江戸文化歴史検定というものがあるようですが。ちょっと関係のある話です。

 明け六つとか暮れ六つというのは、江戸時代の不定時法の言葉で日の出ちょっと前とか、日の入りちょっと後なのですが。具体的にいつかというと。
 「大江戸生活体験事情」という本をよんだら、太陽の中心が地平線下7度21分40秒の時。などと難しいことが書いてありました。
 恐るべしは幕府天文方の科学力です。

 それを知り、一時期職場で、暮れ六つまで作業を終わらせるのだー。とかいって仕事をしていたのですが、その為には具体的な時刻を知る必要があります。

1 理科年表の日の出日の入りのデータから36分ずらす。
2 日の出日の入りのソフトの結果を36分ずらす。
(36分というのは大江戸生活体験事情に出てきた簡易計算)

というのをやっていたのですが面倒になり。
日の出日の入り時刻を求めるプログラムをいじれば、明け六つ、暮れ六つ発生装置になるのではないか?いや、そうに決まっている。という予想をたてて、ある年のある日に作業は始まったのでした。 −つづく−
posted by ketaru at 21:37| Comment(0) | TrackBack(0) | ソフトウェア