忍者ブログ

Memeplexes

プログラミング、3DCGとその他いろいろについて

数学 curl(別名:rot)の体感デモプログラム

数学のcurl(別名:rot)の直感的理解をめざしてデモプログラムを作りました。

TypeScript + (createjs + three.js)です。
このプログラムはTypeScriptという言語で書かれています。
2次元部分にcreatejsを使用し、3次元部分にはthree.jsを使用しています。


プログラム

遊び方

このプログラムは上の3次元部分と下の2次元部分が連動しています。
2次元部分をマウスで操作すると、3次元部分に反映されます。

2次元部分の矢印をマウスでドラッグしてみてください。
矢印の先端部分です。
矢印の向きと大きさが変わります。

すると、中央の回転のスピードが上がります。
と同時に、上の3次元画面のオレンジの矢印が長くなります。

いろいろ矢印の方向を変えて遊んでみてください。
逆回転にするにはどうすればいいでしょうか?
あからさまな周囲の矢印の回転抜きで回転させる方法もありますね。

解説

これはつまり、周りの流れから回転を計算するシミュレーションです。
大学生の方なら電磁気の式で使われたりするのを見たことがあると思います。
あのマクスウェルの方程式に使われるcurl(rot)です。

しかし難しいことは抜きにしましょう。
3次元画面をひとつの巨大な空間だと考えてください。
そしてそこに何かの流れがあるのです。(水でも空気でも磁場でも何の流れでも構いません)
その流れがつくりだす回転ぐるぐる具合を計算して表示したのが、オレンジ色の矢印なのです。

電流の周りは磁場がぐるぐるです。

下の2次元画面で回転がダイレクトに表示されているので、
なぜ上の3次元画面では回転そのものではなく(オレンジ色の)矢印なのか不思議に思った方もいらっしゃるかもしれません。
実はこれは回転軸を表しているのです。

回るコマを頭の中で思い描いてください。
はじめコマはギュルギュル猛スピードで回っており安定していますが、
しだいにゆっくりになり、ふらついてきますね。
回転軸がゆらゆら変わります。

ここで数学的にコマの回転を表そうと思ったら、回転スピードだけでは情報が足りないのです。
回転軸の向きも使わなければ、コマがどっちを向いているのかわかりません。

つまり、回転とは矢印なのです。
向きと、大きさなのです。
回転軸の方向と、回転スピードなのです。

だから回転はベクトルなのです。

拍手[0回]

PR