世の中、非線形な変化にあふれている
たとえば、風に揺れる草木
たとえば、人間の表情
たとえば、膨張するち○こ
その変化をプロットしたら、
きっと非線形な曲線があらわれるはず
人はその変化を見て、自然と感じる。
というか気にもならないと思う。
つまりは、自然ということ
逆に、それらがリニアな変化をしだしたら
とたんに不自然なものに見えてくるだろう
リニアに揺れる草木
作り物にしか見えない
リニアに変化する人の表情
まるでロボットみたい
リニアに膨張するち○こ
想像したくもない
何が言いたいのかというと、
自然に見せたい場合は、できるだけ非線形な変化をさせる、ということだ
そこで、プログラムでお手軽に非線形な値を得られる関数を紹介。
この間、本を読んでて見つけました。
f(x) = 3*x^2 - 2*x^3
この関数は、0~1の入力に対して、滑らかに変化する値を0~1の範囲で返してくれます。
プログラムで書くと
float smooth(float x)
{
return x*x*(3-2*x);
}
ホーナー法を使用して乗算回数を削減、キリッ。プロフェッショナルですな。
実際にプロットしてみると、下の図みたいになります。
考えるのがめんどくさくて、リニアに逃げそうになったとき、代わりに使ってみるといいかも。
>自然に見せたい場合は、できるだけ非線形な変化をさせる、ということだ
返信削除まったくもってそのとおりですよね。
線形は線形で男のロマンですけど。
> 実際にプロットしてみると、下の図みたいになります。
思っていた以上に綺麗なカーブですね。
勉強になります。
>線形は線形で男のロマンですけど。
返信削除線形でも使い方しだいで効果的にみせられますよね。
>勉強になります。
えっへん。