« 大学院講義紹介「実世界メディアテクノロジー特論」 | トップページ | 映画アングリーバードなどの制作にかかわったメディア学部OB若杉氏の講演(その1講演内容) »

もう少し桜らしく ~信号処理で花を描く~その2

|

みなさん、こんにちは、

 
少し前に、信号処理ソフト Scilab  を使って花を描くお話を書きました。
そのとき、桜の花をもう少し本物らしくしたいと思った人もいると思います。
今日は、その方法を紹介しましょう。
花を描くには、中心からの長さとx軸からの角度で座標を表す極座標プロットを使います。
花は円周方向に規則的な形をしていますから、まず、0から2πラジアンまでの角度を作ります。πの256分の一の刻みでつくってみます。
omega = 0 : %pi / 256 : 2 * %pi ;
前回は次の式を使って中心からの半径方向の距離を角度に依存して作りました。
rc = 0.5 + 0.5 * sin( 5 * omega ) + 0.1 * sin( 15 * omega ) ;
そして、次の極座標プロットで花を描いたのです。
polarplot( omega , rc ) ;
これを通常の2次元平面でプロットするには
plot( omega , rc ) ;
とすればよいわけなのですが、角度とともに半径方向の距離がどう変わるかを見てみましょう。

Sakura_1_plot

                    図1 桜の花びらの展開図

 

これは、1周2πで5回振動する正弦波とその3倍の15回振動する正弦波を足し合わせたものなので、花びらの付け根にあたるところでも振動が現れてしまいます。3倍の振動は3倍波と呼ばれていることは、前回もご紹介しました。
そこで、この3倍波のほうに5回振動をかけ合わせれば、下のほうで振動が現れなくなるはずです。早速やってみましょう。
re = 0.5 * ( 1 + sin( 5 * omega ) ) + 0.3 * ( sin( 15 * omega ) .* ( 0.5 + 0.5 * sin( 5 * omega ) ) ) ;
さて、どんな振動になるでしょうか?
plot( omega , re ) ;
それが次の図です。

Sakura_root0

                    図2 付け根の振動を除く

 

先に刻みのある桜の花びらのようになりましたが、どうも違いますね。先が尖りすぎです。
このようなものを上のほうを押し縮めるにはどうすればよいでしょうか?平方根(2乗根)の関数を使うと先を縮められそうですが、もっと極端に縮めてみましょう。6乗根を試してみましょう。
re6 = re .^ ( 1 / 6 ) ;
によって計算できます。これを極座標表示するには次のようにすればいいです。
polarplot( omega , re6 ) ;
これで次のような図が表示されます。

Sakura6

                     図3 6乗根で先端を縮めてできた桜の花

 

これで、大分本物に近づきました!

みなさん、演算を駆使してさらに桜の花に近づけてみてください。

 

相川 清明

おもしろメディア学」カテゴリの記事

在学生向け」カテゴリの記事

高校生向け」カテゴリの記事

« 大学院講義紹介「実世界メディアテクノロジー特論」 | トップページ | 映画アングリーバードなどの制作にかかわったメディア学部OB若杉氏の講演(その1講演内容) »