• 検索結果がありません。

電界中の電子の運動 シミュレータ作成

N/A
N/A
Protected

Academic year: 2021

シェア "電界中の電子の運動 シミュレータ作成"

Copied!
10
0
0

読み込み中.... (全文を見る)

全文

(1)

1

電界中の電子の運動 シミュレータ作成

精密工学科プログラミング基礎

資料

(2)

2

課題の目標

• 電子の運動をシミュレーションするプログラムを,

       サンプルプログラムを基にして作成 する.

• 課題を通じて学べることは以下の通り.

– 2

次元グラフィックス

マウス入力の処理

常微分方程式を計算機で解く方法

電磁気学の復習

(3)

3

サンプルの実行結果

• 点の落下運動をシミュレーションする

– マウス操作により初期位置と速度を指定する

重力加速度

左ボタンを 離した位置

左ボタンを 押した位置

(4)

4

コンパイル方法

• OpenGL と GLUT というライブラリを使用 gcc -framework OpenGL –framework GLUT sample.c

メモ

:

OpenGL : 2D

3D

グラフィックス描画のためのライブラリです.

GLUT :

ウィンドウを出したりマウスの操作を行うための

OpenGL

の補助ライブラリです.

MAC

のコンパイルにおいて、

ライブラリを指定するオプションです.

(5)

5

プログラムの概要

display

関数

点の描画 →

6

ページ

idle

関数

時間経過による,点の位置・速度の更新 →

8

ージ

mouse

関数

点の初期位置・速度の設定 →

7

ページ

プログラム全体で使う変数

(

広域変数

)

 点の位置と速度,マウスが押された位置

reshape

関数

ウィンドウサイズに関わるもろもろの処理

main

関数

ウィンドウの初期化,

GLUT

への関数の登録な

変更の必要なし今回は 定期的に繰り返し

実行される 画面の更新が 必要な時に呼ばれる

マウスが押されたとき 実行される

(6)

6

点の描画 (display 関数 )

• 色と大きさ・座標を指定して点を描く

– “gl” で始まる関数を呼び出す

glPointSize(10);

glColor3f(1, 0, 1);

glBegin(GL_POINTS);

glVertex2d(100.0, 1 0.0);

glVertex2d(50.0, 20.

0);

glEnd();

: 10

ピクセルの大きさの紫の点を(

100,100)

(50,20)

2

点描く

メモ

:

その他に線分・多角形を描くことが出来ます.

• glBegin

の引数を GL_LINES に変えると線分

(2

点指定で

1

線分

)

• glBegin

の引数を GL_POLYGON に変えると凸多角形

(n

角形は

n

個の点を指定

)

曲線を描きたいときは短い線分を沢山描きます.

色の指定は

(

赤,緑,青)を

0

1

float

で設定

Begin

End

で囲んで

Vertex

で座標を指定

(2d

2

次元の

double

という意味

)

(7)

7

マウスボタン操作の処理関数

引数は以下の通り

ボタンの種類

(

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 ){

/* 右ボタンに関する処理 */

} }

(8)

8

微分方程式の数値解法 (idel 関数の中 )

• 微小時間 dt において,

微分値が一定であると仮定し、計算を行う.

/* 速度による位置の変更 */

p[0] += dt*v[0];

p[1] += dt*v[1];

/* 加速度による速度の変更

*/ v[0] += dt*a[0];

v[1] += dt*a[1];

 

 

v a p v dt d dt d

 

 

 

 

t t

t t

t t t

t

t t

v a v

p v p

,加速度ベクトル

,速度ベクトル

[位置ベクトル

: p : v : a

 

t t

t t

t t

t t

t t

a v

v

v p

p

※ サンプルの 加速度ベクトルは

a=(0, 9.8)

プログラム化

2階常微分方程式

微分を

1

次近似

更新後 更新前

(9)

9

シミュレータ作成の方針

• 点のデータを配列に変更して,

    複数の点の運動をシミュレーションする

• 右クリックで点電荷を配置できるようにする

• 加速度を点電荷からの引力・斥力から計算する

• その他,電気力線や等電位線を描いてみる

) 4 (

:

) (

:

) (

:

3 は点電荷 がある点からのベクト 電界

は電子の電荷

は電子の質量 加速度

j j

j j

j j

e e

e e

q q q q

m m

r r E r

E F

a F



(10)

10

参考になる URL

• OpenGL プログラミングについて

• 微分方程式の数値解法について

• 電磁気学 静電場について

http://www.akita-nct.ac.jp/~yamamoto/lecture/2003/5E/lecture_5E/diff_eq/diff_eq.html http://www.wakayama-u.ac.jp/~tokoi/opengl/libglut.html

http://ja.wikibooks.org/wiki/

電磁気学

_

静電場

参照

関連したドキュメント

電    話    番    号 ファクシミリ番号 電子メールアドレス 公 表 の.

世世 界界 のの 動動 きき 22 各各 国国 のの.

10 特定の化学物質の含有率基準値は、JIS C 0950(電気・電子機器の特定の化学物質の含有表

■鉛等の含有率基準値について は、JIS C 0950(電気・電子機器 の特定の化学物質の含有表示方

最近の電装工事における作業環境は、電気機器及び電線布設量の増加により複雑化して

当所6号機は、平成 24 年2月に電気事業法にもとづき「保安規程 *1 電気事業用 電気工作物(原子力発電工作物) 」の第

代替直流電源(バッテリー等)の配備 工事中 完了. 送電鉄塔基礎の補強 ※ ・開閉所設備等の耐震強化工事 ※

商業登記法第十二条の二第一項及び第三項の規定に基づき登記官が作成した当該電子