忍者ブログ

Memeplexes

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

波を重ねてかたちの違う波を作る

このページにあるような波を、波を重ねることで作ってみます。


リーマニアン・スカラー波

今回作る式はリーマニアン・スカラー波。うさんくさい名前ですが、あるSF作家がSFのネタとして考えた波です――あるいは数学で遊んでいたら面白かったのでSFのネタにしただけでしょうか。こんな感じの波です:

以前リーマニアン・スカラー波で遊べるページを作りました。遊べばわかりますが、リーマニアン・スカラー波は集まりながら広がりゆくという、言葉にすると意味不明な性質を持ちます。それを単純な波だけを使って自分で作ってみようというのが今回の目的です。難しいものはバラせば簡単になることがあります。

ちなみに、ここで言う「単純な波」とは、次のような、全く広がっていないようにみえる波です:

この手の単純な波を10個くらい足すだけで、広がっているように見える波を作ることができます

これはリーマニアン・スカラー波です!上の例では2次元の平面上を動き、こちらは1次元の線上の波だという違いはありますが、集まりながら広がっていくという点では同じです。

ちなみにこの画像は、以前作った数式を入力すると波を表示するページです:

式を書いて波を動かそう!

このページの数式入力欄に、次の式をコピーして貼り付けてエンターキーを押してみてください。そうすればこの広がりゆく(?)波が表示されます。

(
+sin(5 * (cos(1.2) * (x - 5) + sin(1.2) * t))
+sin(5 * (cos(1.3) * (x - 5) + sin(1.3) * t))
+sin(5 * (cos(1.4) * (x - 5) + sin(1.4) * t))
+sin(5 * (cos(1.5) * (x - 5) + sin(1.5) * t))
+sin(5 * (cos(1.6) * (x - 5) + sin(1.6) * t))
+sin(5 * (cos(1.7) * (x - 5) + sin(1.7) * t))
+sin(5 * (cos(1.8) * (x - 5) + sin(1.8) * t))
+sin(5 * (cos(1.9) * (x - 5) + sin(1.9) * t))
+sin(5 * (cos(2.0) * (x - 5) + sin(2.0) * t))
) / 10;

これは少しずつ方向の異なる9つのサイン波を足す式です(そのまま足すと大きくなりすぎて図がわかりにくくなるので、さいごに10で割り、見やすいサイズにしています)。

これは広がりゆく波に見えますが、それを形作っているのは複数の単純な波であることを忘れないでください。もしさっきの式を次のように変更して波の数を減らすと、もはや広がっているようには見えなくなります:

(
+sin(5 * (cos(1.2) * (x - 5) + sin(1.2) * t))
) / 10;

一つ一つは単純な波でも、合わさるとどんな複雑な形でも作れます。広がりゆくリーマニアン・スカラー波はいろんな周波数の波が集まってできているとも言えるわけですね。

拍手[0回]

PR