往復する円運動…ひとつ(大きさ変化)
ひとつの円が、円周上をサイズを変えながら往復運動します。 円周上の動きの計算は往復する円運動と同じです。angleの値を変化量da分増やし、angleが360を超えたか、または0より小さくなったらdaの値の正負を逆転して、往復させています。
angle = angle + da; //円周上を変化量分移動 if (angle>=360 || angle<0) { //1周したら動きの方向変える da = -da; }この場合(向きを変える場合)以外の時(つまり円周上で移動している時)に、サイズを変えるため、上のif文に続いて、else文で直径を変化するコードを追加しています。
else { //円周の途中ではサイズ変える if(da>0) { d = d+0.5; } //右回りは増加 else if(da<0) { d = d-0.5; } //左回りは減少 }
クリックで停止⇔再開
【リスト RCircle3】 float angle; // 位置(角度) float x, y; float d = 2; // 円の直径 float da = 3; // 角度の変化量 float len = 60; // 軌跡の円の半径 float ver=270; //往復位置の補正 角度 3時位置は0度、右回り void setup() { size(150, 150); //描画するための画面 fill(0); } void draw() { background(255); //画面の背景を白でクリア angle = angle + da; x = len * cos(radians(angle+ver)) + width/2.0; y = len * sin(radians(angle+ver)) + height/2.0; ellipse(x, y, d, d); if (angle>=360 || angle<0) { //1周したら動きの方向変える da = -da; } else { //円周上の途中ではサイズ変える if(da>0) { d = d+0.5; } //右回りは増加 else if(da<0) { d = d-0.5; } //左回りは減少 } }