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

直線の往復運動…ひとつ(一定速度)

ひとつの円が、水平に一定速度で往復運動します。
右の壁よりx座標が大きくなったかどうかを次のif文で判定します。
 if(x>width-d/2){  //右の壁より右に来た
    x = width-d/2;  //右の壁に接する位置に置く
    s = -s;   //速度の正負を反転、運動方向を変える
 }
widthより半径分左側の位置に、円の中心が来た時が、右端に接する状態となるので、d/2を引いています。

Your browser does not support the canvas tag.

クリックで停止⇔再開
【リスト RStraight1】
float d = 10; // 円の直径
float x; // 位置(x座標)
float s = 3; // 移動速度

void setup() {
  size(150, 150);   //描画するための画面
  fill(0);
}

void draw() { 
     background(255);   //画面背景を白でクリア   
     x = x+s;     
     if(x>width-d/2){  //右の壁より右に来た
         x = width-d/2;  //右の壁に接する位置に置く
         s = -s;   //速度の正負を反転、運動方向を変える
      }else if(x<d/2){  //左の壁より左に来た
         x = d/2; //左の壁に接する位置に置く
         s = -s;  //速度の正負を反転、運動方向を変える
      }
     ellipse(x, height/2, d, d);
}

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