電界中の電子の運動 シミュレータ作成 精密工学科プログラミング基礎 資料.

Slides:



Advertisements
Similar presentations
シミュレーション演習 G. 総合演習 ( Mathematica 演 習) システム創成情報工学科 テキスト作成: 藤尾 光彦 講義担当: 尾下 真樹.
Advertisements

ファーストイヤー・セミナーⅡ 第13回 2次元グラフィックス(1). 2次元グラフィックス Ultra-C では、これまで利用してきた「標準入出力」 以外に「グラフィックス画面」があり、図形などを 表示できる C 言語のグラフィックスには細かな規定がなく、こ れから学ぶ内容が他の環境、システムでは利用でき.
初年次セミナー 第13回 2次元グラフィックス(1).
情報処理演習 (9)グラフィックス システム科学領域 日浦 慎作.
初年次セミナー 第14回 2次元グラフィックス(2).
今回の内容 前回の復習 演習環境 サンプルプログラムの解説 プログラミング演習 OpenGLとGLUTの概要 サンプルプログラムの概要
電磁気学C Electromagnetics C 7/27講義分 点電荷による電磁波の放射 山田 博仁.
本講義の目標: ・C言語とOpenGLを用いて,プログラミングによるコンピュータグラフィックス生成手法について学ぶ
Fortran と有限差分法の 入門の入門の…
今日の内容 前回の演習の復習 前回の復習 ポリゴンの描画方法(復習) 基本オブジェクトの描画 ポリゴンモデルの描画 演習課題.
基礎プログラミングおよび演習 第4回 担当:花岡 5階522/520.
今日の内容 前回の復習 前回の演習の復習 視点操作の実現方法(復習) 視点操作の拡張 変換行列によるアニメーション 演習課題.
基礎プログラミングおよび演習 第9回
プロセッシング入門3 初歩のプログラミング.
Scilab で学ぶ  わかりやすい数値計算法 舞鶴高専 電子制御工学科 川田 昌克.
常微分方程式と偏微分方程式 1.常微分方程式 独立変数が一個のもの 振動の運動方程式 2.偏微分方程式 独立変数が二個以上のもの
ブロック線図によるシミュレーション ブロック線図の作成と編集 ブロック線図の保存と読込み ブロック線図の印刷 グラフの印刷
4.2 連立非線形方程式 (1)繰返し法による方法
プロセッシング入門1 初歩のプログラミング.
精密工学科プログラミング基礎 第9回資料 (12/11 実施)
コンピュータグラフィックスS 第6回 第6回 レンダリング・パイプライン システム創成情報工学科 尾下 真樹
精密工学科プログラミング基礎Ⅱ 第3回資料 今回の授業で習得してほしいこと: 2次元配列の使い方 (前回の1次元配列の復習もします.)
プログラミング演習3 第2回 GUIの復習.
CGと形状モデリング 授業資料 長井 超慧(東京大学)
Unity, C# 移動するモデルの位置を 指定した位置へ自動修正
C 言語について 補足資料 資料および授業の情報は :
基礎プログラミング演習 第10回.
Borland Delphi 6 でビジュアルプログラミング
JAVA GUIプログラミング 第2回 グラフィックスを使っての演習 グラフを描こう.
グラフィックス、その1 色の表示 フォントを変えて文字を表示 直線、四角形、楕円形の描画 円弧の描画 多角形の描画
CGと形状モデリング 授業資料 1,2限: 大竹豊(東京大学) 3,4限: 俵 丈展(理化学研究所)
DirectX勉強会 第5回.
OpenGLを使ったプログラム作成 澤見研究室
第9回 卒業研究1
TCanvas BCB:TCanvasクラスでグラフィックを扱う。 TFormなどもプロパティとして持っている。
精密工学科プログラミング基礎 第10回資料 (12/18実施)
点・線分・多角形を レンダリングする方法 東京大学 精密工学専攻 大竹豊.
OpenGLライブラリを用いた3次元フラクタルの描画
プログラミング演習3 第2回 GUIの復習.
プログラミング基礎a 第10回 Javaによる図形処理入門(2) GUIの使い方
第6回:ラケットを動かそう! (キーボードによる物体の操作)
復習 前回の関数のまとめ(1) 関数はmain()関数または他の関数から呼び出されて実行される.
デジタル画像とC言語.
DirectX勉強会 第2回.
プログラミング基礎a 第10回 Javaによる図形処理入門(2) GUIの使い方
プログラミング言語論 第四回 理工学部 情報システム工学科 新田直也.
精密工学科プログラミング基礎Ⅱ 第4回資料 今回の授業で習得してほしいこと: 文字列の扱い ファイル入出力の方法 コマンドライン引数の使い方
CGと形状モデリング 授業資料 1,2限: 大竹豊(東京大学) 3,4限: 俵 丈展(理化学研究所)
計算機プログラミングI 第5回 配列 文字列(Stringクラス) mainの引数 配列の利用例
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
プログラミング言語論 第六回 理工学部 情報システム工学科 新田直也.
精密工学科プログラミング基礎Ⅱ 第5回資料 今回の授業で習得してほしいこと: 構造体 (教科書 91 ページ)
プログラミング 3 2 次元配列.
JAVA GUIプログラミング 第3回 イベント処理① マウスイベント.
復習 Cにおけるループからの脱出と制御 break ループを強制終了する.if文と組み合わせて利用するのが一般的. continue
免許法認定公開講座: コンピュータグラフィックス
画面への描画 Graphics オブジェクト 紙 ペン Pen オブジェクト Brush オブジェクト 画面のピクセルをカプセル化
大阪工業大学 情報科学部 情報科学科 学生番号 A 苧谷 真行
シミュレーション物理4 運動方程式の方法.
バネモデルの シミュレータ作成 精密工学科プログラミング基礎 資料.
精密工学科プログラミング基礎 第7回資料 (11/27実施)
シミュレーション演習 G. 総合演習 (Mathematica演習) システム創成情報工学科
点・線分・多角形を レンダリングする方法 東京大学 精密工学専攻 大竹豊.
精密工学科プログラミング基礎Ⅱ 第2回資料 今回の授業で習得してほしいこと: 配列の使い方 (今回は1次元,次回は2次元をやります.)
プログラミング演習I 2003年6月11日(第9回) 木村巌.
2次元のオブジェクト ◆ 種類 2次元のグラフィックス ポイント(点) ライン(線分,折れ線) エリア(多角形など) 文字列(テキスト)
情報処理Ⅱ 2005年11月25日(金).
プログラミング入門2 第5回 配列 変数宣言、初期化について
CGと形状モデリング 授業資料 1,2限: 大竹豊(東京大学) 3,4限: 俵 丈展(理化学研究所)
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
Presentation transcript:

電界中の電子の運動 シミュレータ作成 精密工学科プログラミング基礎 資料

課題の目標 電子の運動をシミュレーションするプログラムを, サンプルプログラムを基にして作成する. 課題を通じて学べることは以下の通り. 電子の運動をシミュレーションするプログラムを,        サンプルプログラムを基にして作成する. 課題を通じて学べることは以下の通り. 2次元グラフィックス マウス入力の処理 常微分方程式を計算機で解く方法 電磁気学の復習

サンプルの実行結果 点の落下運動をシミュレーションする マウス操作により初期位置と速度を指定する 左ボタンを 離した位置 左ボタンを 押した位置 重力加速度

コンパイル方法 OpenGL と GLUT というライブラリを使用 gcc -framework OpenGL –framework GLUT sample.c MAC のコンパイルにおいて、 ライブラリを指定するオプションです. メモ : OpenGL : 2D・3Dグラフィックス描画のためのライブラリです. GLUT : ウィンドウを出したりマウスの操作を行うための OpenGL の補助ライブラリです.

プログラムの概要 プログラム全体で使う変数 (広域変数) 点の位置と速度,マウスが押された位置 display 関数 idle 関数  点の位置と速度,マウスが押された位置 画面の更新が 必要な時に呼ばれる display 関数 点の描画 → 6ページ idle 関数 時間経過による,点の位置・速度の更新 → 8ページ mouse 関数 点の初期位置・速度の設定 → 7ページ 定期的に繰り返し 実行される マウスが押されたとき 実行される reshape 関数 ウィンドウサイズに関わるもろもろの処理 main 関数 ウィンドウの初期化,GLUTへの関数の登録など 今回は 変更の必要なし

Begin と End で囲んで Vertex で座標を指定 (2d は 2次元の double という意味) 点の描画 (display 関数) 色と大きさ・座標を指定して点を描く “gl” で始まる関数を呼び出す 例 : 10ピクセルの大きさの紫の点を(100,100) と (50,20) に2点描く glPointSize(10); glColor3f(1, 0, 1); glBegin(GL_POINTS); glVertex2d(100.0, 10.0); glVertex2d(50.0, 20.0); glEnd(); 色の指定は (赤,緑,青)を 0~1の float で設定 Begin と End で囲んで Vertex で座標を指定 (2d は 2次元の double という意味) メモ : その他に線分・多角形を描くことが出来ます. glBegin の引数を GL_LINES に変えると線分 (2点指定で1線分) glBegin の引数を GL_POLYGON に変えると凸多角形 (n 角形は n 個の点を指定) 曲線を描きたいときは短い線分を沢山描きます.

マウスボタン操作の処理関数 引数は以下の通り ボタンの種類 (GLUT_LEFT, GLUT_MIDDLE, GLUT_RIGHT) ボタンの状態 (GLUT_DOWN, GLUT_UP) ボタンの押された座標 (左上を原点とする座標.単位はピクセルで int 型) void mouse( int button, int state, int x, int y ){ if( button == GLUT_LEFT ){ if( state == GLUT_DOWN ){ /* 左ボタンが押されたときの処理 */ } else{ /* 左ボタンが離されたときの処理 */ else if( button == GLUT_RIGHT ){ /* 右ボタンに関する処理 */

微分方程式の数値解法 (idel 関数の中) 微小時間 dt において, 微分値が一定であると仮定し、計算を行う. /* 速度による位置の変更 */ p[0] += dt*v[0]; p[1] += dt*v[1]; /* 加速度による速度の変更 */ v[0] += dt*a[0]; v[1] += dt*a[1]; ※ サンプルの 加速度ベクトルは a=(0, 9.8) 2階常微分方程式 更新後 更新前 プログラム化 微分を1次近似

シミュレータ作成の方針 点のデータを配列に変更して, 複数の点の運動をシミュレーションする 右クリックで点電荷を配置できるようにする 点のデータを配列に変更して,     複数の点の運動をシミュレーションする 右クリックで点電荷を配置できるようにする 加速度を点電荷からの引力・斥力から計算する その他,電気力線や等電位線を描いてみる

参考になる URL OpenGL プログラミングについて 微分方程式の数値解法について 電磁気学 静電場について http://www.wakayama-u.ac.jp/~tokoi/opengl/libglut.html http://www.akita-nct.ac.jp/~yamamoto/lecture/2003/5E/lecture_5E/diff_eq/diff_eq.html http://ja.wikibooks.org/wiki/電磁気学_静電場