一方向の直線運動…ひとつ(速度変化)
ひとつの円が、水平に加速度運動します。 リスト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); }