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