曲線で遊ぼう1

プログラムでオブジェクトを動かしたいときなど、線形や円運動などの数式を入れて動かしたりしますが、もう少し複雑な動きをさせるために、いろいろな曲線関数を使って動かしてみましょう。
いろいろある曲線を描く関数を紹介します。

1. アステロイド(astroid)




次数を大きくすることによって、さらに鋭角な図形にすることもできます。(次数は奇数)




2. インボリュート曲線(Involute)


いわゆる渦巻です。




こんな式でも渦巻を表すことができます。




上と下の図を重ねて見ましょう。

実は、上の式を90度回転させたものが下の式です。




3. リサジュー曲線(Lissajous' curves)


aとbの値を変えることでいろいろな形がでてきます。





(i)a=1, b=2




(ii)a=3, b=4




4. バラ曲線(Rose Curve)


一番上の式が媒介変数表示ですが、プログラムに入れるときはrの式は気にしないでx,yをそれぞれ入れれば大丈夫です。
aの値を変えると、下のような図が現れます。




a=3の場合





a=4の場合




ところで、媒介変数表示の時点ではaは1つですが、xとyに代入する段階でaの値はそれぞれ別の値で指定することもできそうです。



x側のa=4、y側のa=6の場合

・・・なにやらすごいものが出てきてしまいました。一見周期性を持っているようには思えないのですが、いろいろ試すことで予測のつかないような動きをさせることができそうです。




さて、もう一度最初のバラ曲線の式に話を戻しましょう。sinで値が制御されていますが、cosにするとどうなるのでしょう?つまり、

のような式です。
これもきちんと周期性をもった曲線が現れます。
これに対して、さっきと同じような値をいれてみましょう。



(i)a=3の場合




(ii)a=4の場合




x側のa=4、y側のa=6の場合


5. 内サイクロイド(hypocycloid)


ああっ、式を見て帰らないで!ここが面白いんですから。
この式では星型などの図形を描くことができます。



(i)rc=5, rm=1



(ii)rc=5, rm=2




(iii)rc=7, rm=2



(iv)rc=7, rm=3


まず円周をrc等分した点をとり、その点をrm個間隔でつないでいく、といった感じです。


6. オリジナルの関数を作る

階段をぴょんぴょん上っていくような動きの関数を作ってみました。

なにやら複雑そうですが、そんなでもありません。
まず、(0,0)と(1,1)を解にもち、(a,2)を頂点に持つような二次関数を解きました。
あとはそれを(1,1)ずつ足していってやれば出来上がりです。床関数を使ったのがミソですね、プログラムっぽい動きを数式で記述できました。



実際には下図のようなものになります。


このように数式化するメリットとしては、実装が非常に楽であること。xの値を変化させながらyにぶちこんでいくだけです。
逆にデメリットは、変更がしにくいことですね。一長一短だと思いますが、数学使ってみましょう、ということなので。
これからも何か関数とかできたら公開していきたいと思います。