往復運動リストに戻る    印刷する

往復する円運動…ひとつ(大きさ変化)

ひとつの円が、円周上をサイズを変えながら往復運動します。 円周上の動きの計算は往復する円運動と同じです。
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; }  //左回りは減少
 }

Your browser does not support the canvas tag.

クリックで停止⇔再開
【リスト 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; } //左回りは減少
     }
}

arigat アットマーク acm.org / copyright © info