インタラクションリストに戻る    印刷する

マウスのX方向の位置で速度が変わる

マウスのx座標の値によって、円周上を移動する円の速度が変わります。マウスを左端にもっていくと、速度は0に、右端にもっていくと加速度の最大値(max,今は20)になります。この計算をしているのがmap()関数です。
ds = map(mouseX, 0, wide, 0, max)
マウスのX座標の値(0からwideの間の値)を、別の範囲0とmaxの間の値に変換しています。

この値dsを、角度の変化の速度として使っています。
angle = (angle + ds)%360;
角度angleはdsずつ増加します。360度を超えたら0に戻すため、0で割った余りを計算しています。

Your browser does not support the canvas tag.

マウスを左右に移動
【リスト CyclePos】
int wide = 150;
float r = 60;    //円の半径
float x, y;      //円の位置
float angle;  //速度(角度の速度)
float ds;     //加速度(速度の変化値)
float max = 20;  // 加速度の最大値

void setup() {
  size(wide, wide);     // 画面サイズの設定
  strokeWeight(10);
}

void draw() {
   noStroke();
   fill(255, 75);  //色は白、透明度を指定
   rect(0,0,width, height); //背景を四角で塗りつぶす
   stroke(0);      //黒で描く
   ds = map(mouseX, 0, wide, 0, max);
   angle = (angle + ds)%360; //一周したら0に戻す
   x = r*cos(radians(angle)) + width/2;
   y = r*sin(radians(angle)) + height/2;
   point(x, y);   //点を描く
}

arigat アットマーク acm.org / copyright © info