往復する波動運動…異なるサイズの円列
大きさのことなる複数の円が列になって、サインカーブ上を往復運動します。 波の動きは、同一サイズの円列の波動運動と同じです。それぞれの円の直径を保存する配列を用意し、円を描くときにその値を使うところだけが異なります。float[] d = new float[10]; // 円の直径 ....... ellipse(x, y, d[i], d[i]);
クリックで停止⇔再開
【リスト RSinCurveM3】 float[] d = new float[10]; // 円の直径 float[] angle = new float[10]; // 位置(角度) float[] da = new float[10]; // 角度の変化量 float x, y; float h = 60; // 振幅 boolean[] on = new boolean[10]; // 登場したかどうか void setup() { size(150, 150); //描画するための画面 fill(0); angle[0] = -10; d[0] = 2; //配列の初期化 for(int i=1;i<angle.length;i++){ angle[i]= angle[i-1] - 20; d[i] = d[i-1] +2; da[i] = 5; } } void draw() { background(255); //モニタ画面の背景を白でクリア for(int i=0; i<angle.length; i++){ angle[i] = angle[i] + da[i]; x = map(angle[i], 0, 360, 0, width); y = height/2.0 - sin(radians(angle[i]))*h; ellipse(x, y, d[i], d[i]); if(angle[i] > 0 && !on[i]) on[i] = true; if(on[i] && angle[i]>360){//右の壁 da[i] = -da[i]; }else if(on[i] && angle[i]<0){//左の壁 da[i] = -da[i]; } } }