←2013年4月前半へ 最新の日記兼更新記録へ 2013年9月後半へ→
★4月からの授業
今年から、文系学生向けの物理の授業「時間と空間」ってのをやることになりました。こちらにその講義録ページがあります。電磁気の方もいつもどおりにやってます。
で、時間と空間の方は文系向けの授業なので、なるべく絵を見せて、ということで、動く教科書シリーズの新作、「太陽と月・惑星の動き」というのを作りました。まぁこれからいろいろ追加していくと思います。
★で、プログラムで悩んだこと
上のプログラムを作っていて起こった問題。今も解消はされてなくて(いずれしますが)、上の「太陽と月・惑星の動き」をoperaというブラウザで実行すると、「あれ、地球と月の昼夜が逆転している」ということに気づくと思います(つまり、太陽から遠い側がなぜか「昼」になってしまう)。
このプログラムでは、コンピュータの世界ではy軸が下向き、物理の世界ではy軸は上向きなので、
ctx.setTransform(1,0,0,-1,0,0);
という命令使って、y軸を反転させているのですが、これがよくなかったらしい。
ctx.beginPath();
ctx.arc(50,50,50,0,Math.PI,false);
ctx.stroke();
ctx.setTransform(1,0,0,-1,0,0);
ctx.beginPath();
ctx.arc(150,-50,50,0,Math.PI,false);
ctx.stroke();
というプログラムをすると、まず下半円を書いて、それからy軸ひっくり返して半円を書くので、今度は上半円が書かれます。
これが通常のブラウザなら
のようになるのですが、私の調べた限りではoperaだけが
となってしまう。つまり反転がうまくいかんのですね。
ちなみにこの絵を描くプログラムはここにありますので、試してみて「うちのブラウザでも動かへん!」ということが見つかりましたらお知らせください。
その後、arc()に関する情報のページを見ていてわかったのだが、arc命令の最後の変数は(上でfalseとしてある)は、「trueなら反時計周り」という定義のようだ。その定義を「文字通り」に受け取ると、確かに「座標系が反転しても時計回りは時計回りだ」という動きをする、というoperaのやり方の方が正しいのかもしれない、という気もしてきた。しかしそれではarc()命令を使う時にx,y軸がどちらの関係かをいちいち認識していなくてはいけないことになって、これはあまり幸せではない。さて、どうするのが正しいのだろう??
対症療法としては、「y軸反転なんて使うな」ということになるのだろうなぁ。しかし物理でよく使う座標系には合うようにしときたいんだが。
★もう1つ作ったプログラム
「よくわかる初等力学」のサポートページの一部として、「電車の中の物理現象」ってのを作ってみました。
↑のような感じで、電車の中での物体の運動と、外部から見た物体の運動を比較しながらアニメーションが見れます。ガリレイ変換やら慣性力やらが苦手な方、試してみて下さい。
これも授業「時間と空間」でも使う予定。
←2013年4月前半へ 最新の日記兼更新記録へ 2013年9月後半へ→