ゲーム風にしてないし、ドリル風にもしていないのでプログラミングは簡単だ。比較的にね..... 様々な場合の判定をプログラミングしなくてすむから。従って完成度は低いのだけれど、生徒にパソコン与えて「自分でやってごらん」ではなく、授業の中での導入や説明の補助としてのアイテムになることを目指して作っている。
なお、表題に続く番号はSmallBasicサイトの検索番号になっているので、アクセスしていただくと、ソースをゲットすることができる。修正して使いやすいようにしてください。
動作環境として、windows8以上ならばそのまま動くでしょう。それより低いウィンドウズのバージョンの場合はMicrosoft .NET framework 3.5が必要になってくるようです。XPから可能でしょう。
フリーのウィルスセキュリティソフトを使っていますが、SmallBasicの数学関数を使うと、誤動作を起こしてプログラムを停めてしまうことがあります。面倒です。
なお、http://blogs.yahoo.co.jp/yamame22jp(現在休止中)でブログを開きました。そちらの方には、これらのソフトの中から使えるようなものを圧縮ファイルにして置くように計画中です。使用については自己責任でお願いします。要望や改善、についてはブログの方で受け付けるようにしようと思います。
ただ問題が発生した。JellyProというスマホで見たら、9時間ずれる。他のスマホでどう見えるか調査中。自分では持っていないので時間がかかる。
星座早見盤を実現できたので、折角だから赤道儀の極軸合わせのためのツールを作ることにした。これは、実際にはiPodTouchを使う。InternetExplorer8とFireFox、iOSとで、微妙にjavascriptが動作しなかったりレイアウトが違ったりするので、いろいろ悩むのだけれど、少々の変更で使えることは素晴らしい。
面倒なことはしないようにすると、作るのも楽なんだ。如何に短い時間で作るか、完成度を低くして授業に使うことが大事かなと思っている。
生徒がこれを見てどんなことに気づいてくれるか、班で話し合わせてみたい。また、指導者が再生画面で気づかせてもいいかな。気温変化や風向き変化などたくさんのことが分かると思う。
自分としては、半透明やレイヤーの勉強としてみた。
こうやってHTML言語とJavaScriptを組み合わせてブラウザで読めるようにすると、そのファイルをGoodReaderUSBを使ってiPodTouch に転送し、GoodReaderで表示することができる、もちろんローカルファイルだけど。これ便利です。
勉強して、他のスモールベーシックのプログラムも移植したいです。
本来は、下段の地球の自転を北極側から見た地球、北極点が地球円の中央からずれた様子をシミュレーションしたかったのですが、それを実現するには1枚画像をSmallBasicのshapes.rotate関数では再現できません。回転する複数枚の地球を準備して書き換えていく、アニメーションするしかないのでした。
マウスによって任意に地球を回転させるソフトは、GoogleEarthを始めとして色々あるのですが、自転軸を任意に傾けて固定し、そこから1時間毎に自転させるソフトは簡単には見つからないのでした。
仕方なく、自由に動きすぎるシミュレーションソフトを使って、手作業でなるべく正確な位置に動かしたものを切り取って、不要な部分を消しながら、18枚の画像を作り出しました。20度ずつの動きなので滑らかさがないですが、何か良い方法が見つかった時には改善することにして、完了としました。
(1)自転している地球を見て、気がつくことを生徒たちに話し合わせます。
◎円の中心を中心として自転していない
地軸は23.4度傾いて自転&公転していること
◎左右で日本の昼夜の時間が同じでない(これに気づいたらすごいですね)
※普通は補助発問が必要です
※左が冬、右が夏の位置 日本の昼夜の長さをカウントしよう(24枚用意すれば1時間毎の動きになったのですが...)
(2)一日中昼、あるいは夜になっているところがある(気づくかな?)
今後
@そんなヒントを画面に提示しようかと思います。
Aこの地球を自転させながら、公転させてみようと思います
極座標と三角関数を使って計算しなければなりませんね
ただ、3地点がそれぞれ別々に震動し減衰していく様子を再現できていない。当分かかりそうです。
2枚の画像を重ねて、裏側の画像を計算によって重ね合わせるだけ。原理は簡単。計算も厳密にやったら面倒だけど、インフルエンザ上がりにはつらいので実用範囲で。
一番面倒だったのが、星座の描写。大まかなものは夏に別件で作っていたので助かったが、文字記入はそれぞれの位置に合わせて回転させねばならないので、星や星座の名前は記入しなかった。
完成したので、サイトに登録した。FPK511だ。
このSmallBasicでもできるのかなと組み始めている。数種類堆積岩の堆積と花崗岩の貫入、火山噴火を再現できた。もっとも、火山噴火は、火山ができてから岩脈が上昇していくのでリアルさに乏しい (^^;)
それに対して、貫入の方は画像の透明さをコントロールできるので、接触変成を再現できる。
あとは、メニューにある「断層」、それから褶曲と不整合だ。DOS BASICでは、GET@ PUT@ という命令語があって、確か、一括りで画面上の画像が移動できたので楽だったが、SmallBasicではそれがないので、少々考えなくてはならない。1ドットずつで移動か? 恐ろしい?!
結局、1ドット移動では遅くて話にならないので、堆積方法を根本的に変更して(スプライト方式を断念して)断層を実現した。しかし、火山噴火の岩脈部分はスプライトで実現しているので、岩脈を断ち切ることができない。従ってこれもアニメーションを諦めて、画像を貼り付ける方式に変えようと思う。
不整合はできそうなので、それをやっておくか?!
一応褶曲はできたが、これを元に断層させることはまた思案が必要だ。
仕方がないので、一から作り出した。それがこれ。まだ未完成で、画像を保存するところを考えているけれど、ペイントソフトで直接駒を作ったほうが良かっし、早かったかも。
これも、過去の大きな台風や季節ごとの台風の進路など、選択的に表示ができるようになるのではないかと思います。
一番大変なのは、気象庁のデータをプログラムで使えるようにする作業です。なかなか根気のいる作業ですが、いったんデータ化してしまうと、とても扱いやすいのがデジタルの強みですね。
いずれも地図は、フリーで提供してくれるサイトCraftMAPさんからのものです。
気象庁の地震データベースから、全国の観測地点データをゲットします。これには観測点の緯度経度と地名が記載されています。
過去の大きな地震データも保存されています。これには、震度階級ごとの地名が記載されています。しかし、緯度経度が記載されていないので、両方のデータをエクセル上で比較して、使える観測点を拾っていくことになります。それらのデータを読み込んで、地図上にプロットしていくわけです。手間ではないでしょうから、気象庁さんには、観測点番号も付けてデータを出して欲しいですね。
汎用性を高めるために、地図には必ず左上隅の地点の緯度経度を求め、地図の縮尺に合わせた緯度経度1度あたりのドット数を記入しておきます。
それを見ながら、プログラムの係数を変更していくわけです。あとは、観測地点の緯度経度を入力すれば、PCの地図上に位置を記してくれます。
いずれ、全国地図上で、様々な大きな地震のデータを選択的に表示することができるようになると思います。
ちょっとでも間が空くとすぐに忘れてしまうようになったので、地図とデータ、プログラムの扱いを忘れないように他の大きな地震についても震度分布を作成してみました。東北の地震の時は6を越える地点が縦に分布していますね。震源が点ではなかったのでしょう。確か、ニュースでは南北にできた長い断層が原因ということではなかったでしょうか?
プログラミングする関係上、一般化して3種の係数を求める式を立てなければなりません。単純な機械的作業ですが、最近は老人力が発揮されて集中力が持続しない。途中でミスをする。basic上で実行するとでたらめな結果となってしまいました。
仕方ないので、手作業(手書き)でなくワープロ上でコピペをしながらミスのないようにしてみました。結果は良かったけれど、求めた式からスクリーン上に描画するプログラムにミスって、y軸に線対称で出力していました。
スクリーンのドット数とドットの位置を座標軸上の位置に変換してやらねばならないことも分かり難さですね。詰めとなるところまで集中力が持続しないので、試行錯誤でつめていきました。
3つの係数が整数の場合には式を表示します。ようやく満足できる範囲で可能になりました。CenturyOldstyleのフォントを使っています。それがインストールされていない場合は美しくなくなってしまいます。筆記体風の綺麗な式が、どこだったかネットのとあるサイトを経由して表示できるところがありましたな。分数になってしまう場合には、その表示がややこしくなるので表示しないことにしました(^^;) 計算では少数で出てくる係数をどのように分数に表示するか、考え出したらきりがないのでやめました。
さて、使いみちですが、特には考えていません。まあ、頭の練習にはなったかもしれません。
なお、一次関数のグラフについては先んじて作っていますが、二次関数のこのシミュレーションプログラム上でも、3点を一直線上にとれば、一次関数のグラフも表示しますので、掲載を止めています。
SmallBasicには画像を回転させる命令があるので、それを使えば、1枚の画像で24時間の変化を表示させることもできるので、それを使ったのが上の画像。簡単でいいのですが、できれば地軸の傾きも表示に入れたい。となると、その方向から見た地球の24枚を準備しないといけない。これは難しい。
地球の陰の部分は半透明になっています。これもSmallBasicでやってくれる便利な機能。
このシミュレーションを使って、地球の自転や公転に関係して変化する太陽高度とか昼夜の長さとかについて、グループ討議させたいものです。
しかし、計算が面倒だった。恐らく表示している恒星時もアバウトだろう。