曲線で遊ぼう1
プログラムでオブジェクトを動かしたいときなど、線形や円運動などの数式を入れて動かしたりしますが、もう少し複雑な動きをさせるために、いろいろな曲線関数を使って動かしてみましょう。
いろいろある曲線を描く関数を紹介します。
4. バラ曲線(Rose Curve)
一番上の式が媒介変数表示ですが、プログラムに入れるときはrの式は気にしないでx,yをそれぞれ入れれば大丈夫です。
aの値を変えると、下のような図が現れます。
ところで、媒介変数表示の時点ではaは1つですが、xとyに代入する段階でaの値はそれぞれ別の値で指定することもできそうです。
x側のa=4、y側のa=6の場合
・・・なにやらすごいものが出てきてしまいました。一見周期性を持っているようには思えないのですが、いろいろ試すことで予測のつかないような動きをさせることができそうです。
さて、もう一度最初のバラ曲線の式に話を戻しましょう。sinで値が制御されていますが、cosにするとどうなるのでしょう?つまり、
のような式です。
これもきちんと周期性をもった曲線が現れます。
これに対して、さっきと同じような値をいれてみましょう。
5. 内サイクロイド(hypocycloid)
ああっ、式を見て帰らないで!ここが面白いんですから。
この式では星型などの図形を描くことができます。
まず円周をrc等分した点をとり、その点をrm個間隔でつないでいく、といった感じです。
6. オリジナルの関数を作る
階段をぴょんぴょん上っていくような動きの関数を作ってみました。
なにやら複雑そうですが、そんなでもありません。
まず、(0,0)と(1,1)を解にもち、(a,2)を頂点に持つような二次関数を解きました。
あとはそれを(1,1)ずつ足していってやれば出来上がりです。床関数を使ったのがミソですね、プログラムっぽい動きを数式で記述できました。
このように数式化するメリットとしては、実装が非常に楽であること。xの値を変化させながらyにぶちこんでいくだけです。
逆にデメリットは、変更がしにくいことですね。一長一短だと思いますが、数学使ってみましょう、ということなので。
これからも何か関数とかできたら公開していきたいと思います。