忍者ブログ

Memeplexes

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

波の式を動かす

sinは波を表す計算ですが、そのグラフを紙に書いてもグラフがうねうね動くわけではありません。数式が動くところを見るには、プログラムを書きコンピュータで実行する必要があります。


動く波の考え方

最も簡単な方法は、単純に静止した波を横にずらすというものです。上の図には凍りついた波が描かれていますが、もし波を表示する位置が変わっていったら波が進んでいるように見えるはずです。これが一つの考え方です。

しかしこのページでは、別の方法を考えます。波を動かすのではなく、視点を動かすのです。この方法なら、波は凍りついたままでも構いません。それに、時間のない凍りついた世界を観測することによって時間が生まれるというのは相対性理論っぽくてかっこいいではありませんか!

視点を動かす

では、視点を動かし波を動かす方法を解説します。この方法では、使うのは通常の凍りついたsin波ですが、引き伸ばして二次元的なシートにします。引き伸ばしてもsinはsinです。

そして、このsinのシートを好きな方向で切断します。切断面を少しずつ動かせば、波が動いているように見えるのです。この考え方をプログラムにしたのが次のデモです:

角度:
波の間隔:

このシミュレーションでは、波のシートが動いているわけではありません。しかし、切断面は動いているかのように見えるのです。ちょうど人体を輪切りにしたスキャン画像を少しずつ動かしていくと何かが動いているように見えるのに似ています。

波の性質を変える

上のデモには「角度」と「波の間隔」というつまみがあり、これを使って波の速さや波長(波の山と山の間の距離)を変えることができます。

現実の例で説明します。お風呂のお湯をじゃぶじゃぶしてできる波は遅いですが、光の波はとても速く(1秒間に30万キロ)く移動できます。速度の違いは波の角度によって表すことができるのです(ただし、お湯の波と光は波は違う物理現象です――sin波で表せるという点では同じですが。回転によって本質的に同じ現象の波の速度が変わるという現象は、SF小説のネタにはなってはいますが、現実にはないのです。真空中の光の速度はどんな色だろうと秒速30万キロです)。

光の色は「波の間隔」で表せます。赤い光は山と山が離れていますが、青い光では近いです。これは「波の間隔」つまみで調節できます。(この場合はお風呂と光の場合とは違って、両者とも本質的に同じ物理現象です。実際、青い光が引き伸ばされ赤い光に変わることがあります。地球から離れた星は宇宙の膨張によって光が引き伸ばされ、赤みがかって見えるのです。これがハッブルが宇宙が膨張していることを発見したきっかけだったのです)

拍手[0回]

PR