HOME > natural science Laboratory > コンピュータ・シミュレーション講座 > 仮想物理実験室

VisualC++ と OpenGL を利用した仮想物理実験室
【1-1-3】等速度直線運動のシミュレーション

【1-1-2】等速度直線運動のアルゴリズムの導出」で導いた等速直線運動を逐次計算するアルゴリズム(オイラー法)を用いて、コンピュータでシミュレーションするための計算アルゴリズムを構築します。 構築と言っても、コンピュータで r_0, r_1, r_2 ... と逐次計算した結果を連続的に描画することで、等速度直線運動のアニメーションが得られるのです。

【1-1-1】物理量についてと同様に「【0日目】仮想物理実験室の構築 (ver1.0)」をベースにプログラミングします。 上記で解説した逐次計算を行うアルゴリズムをプログラミングします。

仮想物理実験室変数の定義

//--------------------------------------------------------
// 仮想物理実験室変数の定義
//--------------------------------------------------------
double t = 0.0;  //時刻
double dt= 0.01; //時間刻み
int tn = 0;      //ステップ数

// ボールの定義
struct BALL {  //構造体の定義
  double x, y, z;
  double vx, vy, vz;
};
BALL ball1 = { //変数の宣言+初期値の設定
  -30.0, 0.0, 20.0, //(x, y, z)
  10.0, 0.0, 0.0    //(vx,vy,vz)
};

【1日目】物理量についてとの違いは、 ボールの速度を表す 「vx」「vy」「vz」を構造体「BALL」のメンバに追加し、 「BALL」型の変数「ball1」を宣言と同時に初期値を設定しています。

ボールの描画

//--------------------------------------------------------
// 計算と物体の描画
//--------------------------------------------------------
void Culculate(){
  t = dt * double(tn);
  //位置の算出
  ball1.x = ball1.x + ball1.vx * dt;
  ball1.y = ball1.y + ball1.vy * dt;
  ball1.z = ball1.z + ball1.vz * dt;
  tn++;
}
void DrawStructure(){
  glPushMatrix();
    glMaterialfv(GL_FRONT, GL_AMBIENT, ms_ruby.ambient);
    glMaterialfv(GL_FRONT, GL_DIFFUSE, ms_ruby.diffuse);
    glMaterialfv(GL_FRONT, GL_SPECULAR, ms_ruby.specular);
    glMaterialfv(GL_FRONT, GL_SHININESS, &ms_ruby.shininess);
    glTranslated(ball1.x, ball1.y, ball1.z); //平行移動値の設定
    glutSolidSphere(4.0, 20, 20);            //引数:(半径, Z軸まわりの分割数, Z軸に沿った分割数)
  glPopMatrix();
}

ボールの位置「ball1.x」「ball1.y」「ball1.z」
ボールの速度「ball1.vx」「ball1.vy」「ball1.vz」
位置を逐次計算します。

VisualC++ と OpenGL を利用した仮想物理実験室

第0章 仮想物理実験室の構築

第1章 様々な運動

第2章 ニュートンの運動方程式

第3章 剛体の運動(エネルギー保存則と運動量保存則)

付録

  • 【A-1】参考文献
    ・(A-1-1)OpenGL について
    ・(A-1-2)VisualC++ について
    ・(A-1-3)物理シミュレーション
    ・(A-1-4)数値計算

未分類

力学

量子力学

波動論



▲このページのトップNPO法人 natural science トップ

関連記事

コンピュータ・シミュレーション講座 授業日誌







仮想物理実験室







▲このページのトップNPO法人 natural science トップ




Warning: mysqli_connect(): (28000/1045): Access denied for user 'xsvx1015071_ri'@'sv102.xserver.jp' (using password: YES) in /home/xsvx1015071/include/natural-science/include_counter-d.php on line 8
MySQL DBとの接続に失敗しました