直線の往復運動…ひとつ(一定速度)
ひとつの円が、水平に一定速度で往復運動します。右の壁より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);
}