一方向の直線運動…ひとつ(速度変化)
ひとつの円が、水平に加速度運動します。 リスト6-2と同じです。速度は加速度分ずつ変化し、その速度分位置が変化します。
s = s + a; // 速度を変化 x = x + s; // 位置を変化円が右端まで移動してきた時、位置を左壁の外側(半径d/2分左)にするとともに、速度を初期値に設定しなおしています。
if (x>=width+d/2) {
x=-d/2;
s=init; //速度を初期値に戻す
}
初期値は今、0なので、s=0;と書いても同じですが、
初期速度を入れる変数initを定義し、先頭部分で値を代入しています。このように変数を使うと、見通しのいい、変更しやすいプログラムを書くことができます。
クリックで停止⇔再開
【リスト Straight4】
float init = 0; //移動速度の初期値
float s = init; // 移動速度
float a = 0.1; // 加速
float x; // 位置(x座標)
float d = 10; // 円の直径
void setup() {
size(150, 150);
fill(0);
}
void draw() {
background(255); //画面背景を白でクリア
s = s + a; // 速度を変化
x = x + s; // 位置を変化
if (x>=width+d/2) {
x=-d/2;
s=init; //速度を初期値に戻す
}
ellipse(x, height/2, d, d);
}