往復する波動運動…ひとつ(軌跡なし)
ひとつの円が、サインカーブ上を往復運動します。 動きは、一方向の波動運動と同じです。画面の横幅と1サイクルの波(角度が0-360度)が一致するので、角度が360度になったかで右の壁に来たことを、また角度が0より小さくなったことで左の壁に来たことを判定します。
if(angle > 360){//1サイクルの波を終えた(右の壁) da = -da; //角度変化の向きを変える }else if(angle < 0){//波の最初に戻った(左の壁) da = -da; }下のリストでは、論理演算子|| (OR, または)を使って、ひとつのif文で記述しています。
クリックで停止⇔再開
【リスト RSinCurve1】 float angle; // 位置(角度) float x, y; // 位置(xy座標) float d = 10; // 円の直径 float h =60; // 振幅 float da = 5; // 角度の変化量 void setup() { size(150, 150); //描画するための画面 fill(0); } void draw() { background(255); //モニタ画面の背景を白でクリア angle = angle + da; //角度を増加、波上の位置を進める x = map(angle, 0, 360, 0, width); //0-360度を画面の横位置に換算 y = height/2.0 - sin(radians(angle))*h; ellipse(x, y, d, d); if(angle < 0 || angle > 360){//右の壁または左の壁 da = -da; } }