つぶやきProcessingでeasingを使う
こんにちは、AQUARING かに です。
昨年10月からデイリーコーディングを始めて、ここ2ヶ月ほどはほぼ毎日つぶやきProcessingでスケッチを描いてTwitterに投稿しています。
今回は最近よくやっているeasing関数を組み込んだ表現を紹介します。
イージング関数
スケッチで使用する関数はこちらのサイトにあるものを使用しています。
easeOutElastic
縦長 box() を XZ 方向に並べて、原点からの距離を easeOutElastic に入れてY方向に移動させることで、波のようにボコボコするブロックが作れます。
↓ イージング関数部分のコードはこちら。(関数のままだと文字数が収まらなかったのでtranslate内の計算式に埋め込んでいます)
translate(x*w,W/2-(2**-X*sin(X*2.1)+1)*w*3,z*w)
shearX, shearY に easeOutElastic を入れて box() を傾けるとプリンのようなぷるぷるした動きになります。
↓ イージング関数部分のコードはこちら。(26文字でけっこう短い!)
E=x=>2**(-9*x)*sin(x*28)+1
easeOutBounce
box() を XZ 方向に並べて、上から落ちるように easeOutBounce で Y 方向に動かしています。
↓ イージング関数部分のコードはこちら。(Bounce系は元のコードが長いので圧縮しても文字数そこそこ長いです)
N=7.56
E=x=>x<.36?N*x*x:x<.72?N*(x-=.55)*x+.75:x<.91?N*(x-=.82)*x+.94:N*(x-=.95)*x+.984
easeInOutExpo
box() をXY方向に敷き詰めて、原点からの距離を easeInOutExpo に入れて回転させています。
↓ イージング関数部分のコードはこちら。
E=x=>x<.5?pow(2,20*x-10)/2:(2-pow(2,10-20*x))/2
まとめ
ふつうコードで自然なモーションを作ろうと思ったら複雑な計算やシミュレーションが必要になりますが、イージングを圧縮してコードに埋め込むことで、少ない文字数でも自然なモーションが作れます!
イージングの種類によっては圧縮後30文字程度になるものもあるので、ぜひみなさんもやってみてください〜!