波の合成 -2-
Sin波を指数で割ると振幅の自然な減衰を表すことができます。
sin(x)/exp(x)
- 自然対数:exp(0)=1なのでtimeを引数にしてもゼロによる除算が起こらないので扱いが楽です。
- 速度=vel,減衰=decayとすると以下の式で左グラフを得ることが出来ます。
Math.sin(vel*time)/Math.exp(decay*time)
例1:振り子
振り子の「回転」に以下の式を記述
vel=30;
amp=80;
decay=2;
amp*Math.sin(vel*time)/Math.exp(decay*time);
例2: バネの伸縮
ボールの「位置」プロパティに以下の式を記述
vel=15;
amp=110;
decay=0.7;
y=amp*Math.sin(vel*time)/Math.exp(decay*time)
position+[0,y]
バネの「スケール」に以下の式を記述
xs=length(this_comp.layer("ball").position, position);
[ xs , scale[1]] ;
例3:ボールのバウンドと伸び縮み
ボールの「スケール」プロパティ
vel=30;
amp=40;
decay=1;
s=amp*Math.cos(vel*time)/Math.exp(decay*time);
thisProperty+[s,-s];
ボールの「位置」プロパティ
vel=30/2;
amp=100;
decay=1;
s=amp*Math.sin(vel*time)/Math.exp(decay*time);
[0,-Math.abs(s)]+position;