一方向の円運動…同じ大きさの円の列
複数の円が列になって、円周上を一定速度で,運動します。10個の円の円周上での位置を角度として配列angleに入れておきます。時計の3時の位置が0度で、右回りに数が大きくなります。 配列を定義し、
float angle[] = new float[10]; // 位置(角度)setup()関数の中で、10個の円のangleの値を初期化します。最初の円angle[0]はゼロ、次の円angle[1]は-10というように、順番に10度ずつ小さい値を代入します。forループを使って、この処理を繰り返します。
for(int i=1; i<angle.length; i++){
angle[i] = angle[i-1] - 15;
}
draw()関数内のfor文でひとつ(軌跡なし)と同じ動きを、10個の円に対して実行します。
クリックで停止⇔再開
【リスト CircleM1】
float angle[] = new float[10]; // 位置(角度)
float da = 5; // 角度の変化量
float x, y;
float d = 10; // 円の直径
float len = 60; // 軌跡の円の半径
void setup() {
size(150, 150); //描画するための画面
fill(0);
for(int i=1;i<angle.length;i++){
angle[i] = angle[i-1] - 10;
}
}
void draw() {
background(255); //モニタ画面の背景を白でクリア
for(int i=0; i<angle.length; i++){
x =len * cos(radians(angle[i])) + width/2.0;
y =len * sin(radians(angle[i])) + height/2.0;
ellipse(x, y, d, d);
angle[i] = (angle[i] + da) % 360; //角度をdaずつ増加、360を超えない
}
}