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