一方向の波動運動…同じ大きさの円の列
複数の円が列になって、サインカーブ上を運動します。 ひとつ(軌跡なし)と同じ動きを、10個の円に対して行うため、10個の円のangleの値を配列に入れておきます。 直線運動をする円列と同様、配列を定義します。int angle[] = new int[10];setup()関数の中で、10個の円のangleの値を初期化します。最初の円angle[0]はゼロ、次の円angle[1]は-20というように、順番に20度ずつ小さい値を代入します。forループを使って、この処理を繰り返します。
for(int i=1; i<angle.length; i++){ angle[i] = angle[i-1] - 20; }draw()関数の中で繰り返す処理は、ひとつ(軌跡なし)と同じです。
クリックで停止⇔再開
【リスト SinCurveM1】 float angle[] = new float[10]; // 位置(角度) float da = 5; // 角度の変化量 float x, y; float d = 10; // 円の直径 float h =50; // 振幅 void setup() { size(150, 150); //描画するための画面 fill(0); for(int i=1;i<angle.length;i++){ angle[i] = angle[i-1] - 20; } } void draw() { background(255); //画面背景を白でクリア for(int i=0; i<angle.length; i++){ x = map(angle[i], 0, 360, 0, width); //x = angle[i]*width/360.0;と同じ y = height/2.0 - sin(radians(angle[i]))*h; ellipse(x, y, d, d); angle[i] = (angle[i] + da) % 360; } }