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

鉛直面上での重力による角加速度 振り子永久運動





// 鉛直面上での重力による角加速度 振り子永久運動プログラム
//((1ピクセル = 1m,1フレーム 1/60秒)

int length;// 棒の長さ,回転半径
float angle = -PI/2;// 新基準軸でのスタートの回転角,ラジアン
float angular_velocity = 0.0/60;// 角速度
float angular_acceleration;// 重力による角加速度

void setup() {
  size(400, 400);
  length = width*2/5;// 棒の長さ,回転半径
}

void draw() {
  background(255);//フレーム毎に,白く塗り以前の描画を消す
  angular_acceleration = -9.8/60*sin(angle)/length;//重力の角加速度
  stroke(255,0,0);//軸の線色を赤
  line(0, height/2, width, height/2);//水平軸
  line(width/2, 0, width/2, height);//鉛直軸

  translate(width/2, height/2);// 座標軸の原点(0,0)を移動
  rotate(angle+PI/2);// 以下の図形を原点を中心に回転
  stroke(0);
  strokeWeight(2);//線の太さをピクセル単位で
  line(0, 0, length, 0);// 棒の形状
  fill(255,0,0);
  ellipse(length, 0, 20, 20);// ボールの形状

  angular_velocity = angular_velocity + angular_acceleration;
  angle = angle + angular_velocity;

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

[ 目次に戻る ]