Last updated: 2016 -2014. Kajiyama                    [ 目次に戻る ]

等速直線運動のボールが壁にぶつかると反転





//等速直線運動のボールが壁にぶつかると反転するプログラム

//ボールの位置変数のベクトル宣言 変数 position.x と position.y を定義
PVector position;
//ボールの速度変数のベクトル宣言 変数 velocitiy.x と velocitiy.y を定義
PVector velocitiy;

void setup() {
  //初期設定
  size(400,300);background(255);
  position = new PVector(width/2,height/2);//最初の位置(x,y)
  velocitiy = new PVector(180.0/60, 180.0/60);//速度(x,y)の定義
}

void draw() {
  // 初速度による新しい位置の計算
  position.add(velocitiy);//新しい位置=以前の位置+速度 

  // 新しい位置(x,y)が壁と接するかを判別
  if ((position.x > width-10) || (position.x < 10)) {
    velocitiy.x =  -1 *velocitiy.x; //位置が壁にぶつかると方向反転
  }
  if ((position.y > height-10) || (position.y < 10)) {
    velocitiy.y =  -1 *velocitiy.y; //位置が壁にぶつかると方向反転
  }

  //図形の軌跡をグラデーションで残す
  fill(255,20);
  noStroke();
  rect(0,0,width,height);//塗りつぶし
  stroke(255,0,0); fill(255,0,0);//線色を赤・面色を赤

  ellipse(position.x,position.y,20,20);//新しい位置のボールを描く

//save("vector_ellipse04.jpg");// 実行結果を画像形式で保存
//saveFrame("vector_ellipse04-###.tif");// 連続画像で保存
}


[ 目次に戻る ]