線の伸縮…加速的変化
線が伸長収縮します。 定速の線の伸縮と見た目は同じですが、こちらはsin関数の値を線の長さに使った加速的変化をします。定速の円運動をする円のy座標の変化だけを見ると、周期的な振動運動をしています。これを単振動と呼び、波の高さが低い時(角度が0、180度付近)、速く動きます。
translate(width/2, height/2); //座標原点を画面中央へ移動 angle = (angle + da) % 360; //角度をdaずつ増加、360を超えない x =len * sin(radians(angle)); //sinの値を計算 line(0, 0, x, y);
クリックで停止⇔再開
【リスト Elastic2】
float len; // 線の長さ
float x, y; // 線のもう一方の座標
float angle; //
float da = 4; //変化量
void setup() {
size(150,150);
len = width/2.0 - 5; //線の最大値
strokeWeight(5); // 線の太さ
}
void draw() {
background(255); //画面の背景を白でクリア
translate(width/2, height/2); //座標原点を画面中央へ移動
angle = (angle + da) % 360; //角度をdaずつ増加、360を超えない
x =len * sin(radians(angle));
line(0, 0, x, y);
}