江 略,丁益民
(湖北大學,湖北武漢 430062)
基于OpenGL的三維電場線模擬
江 略,丁益民
(湖北大學,湖北武漢 430062)
在Visual C++環(huán)境下,設(shè)計了一種基于OpenGL的三維電場線模擬軟件。該軟件采用微分方程法來生成電場線,可以準確地模擬不同觀察視角下,靜止點電荷的三維電場線。用戶可以拖動鼠標隨意轉(zhuǎn)動觀察視角,并可隨意設(shè)置電荷個數(shù)、分布以及大小。
電場線;計算機模擬;OpenGL
電場線是電磁學中的一個重要的物理概念,由于它既看不見又摸不著,理解起來不太容易,因此將其形象地展示出來對電場線的學習具有重要的作用。目前,電場線的繪制有多種方法,如手工描繪法、實驗?zāi)M法以及計算機模擬法等。其中計算機模擬法具有描繪準確、操作方便等優(yōu)點。目前已經(jīng)有各種各樣的模擬軟件[1-2]。但是這些軟件要么是預先算好的,不能由用戶設(shè)定擺放位置,要么只是局限在二維。為了克服以上的不足,我們在Visual C++環(huán)境下,通過調(diào)用Open GL設(shè)計了一種可以任意改變參數(shù)并可隨意轉(zhuǎn)動觀察視角的三維電場線模擬軟件。
1.1 電場線
點電荷在周圍空間產(chǎn)生的電場由庫侖定律和疊加原理決定[3-4]。根據(jù)電磁理論有
1.2 尋找電場線起點
起點必須平均分布在以電荷為中心的一個半徑極小的球面上。但事實上,不是任意一個數(shù)目的點,都可以在球面上均勻分布的。僅有所熟知的五個正多面體的頂點才是嚴格意義上的均勻分布。文章采用E·B·Saff和A·B·J·Kuijlaars(1997)[5]對此提出了一種算法,能夠產(chǎn)生較均勻的分布。
1.3 電場線終止情況判定
電場線終止情況有三種,一是終止于無窮遠,二是終止于另一個電荷,三是終止于一個電場強度為零的點。對第一種的處理,給一個限定范圍,超出范圍就不再步進。對第二種的處理,每次步進完后判斷一下是否落入另一個電荷同心小球域即可。對第三種,每次步進之前判斷一下電場是否為零即可。
軟件的操作界面,見圖1。
圖1 軟件操作界面
本程序采用MFC編制,Open GL繪圖[6],界面十分簡潔,用戶點擊添加電荷,輸入坐標和大小,便可在一定范圍內(nèi)任意添加多個電荷,點擊清空電荷即可還原。用鼠標拖動顯示區(qū)便可旋轉(zhuǎn)觀察角度。還可滑動鼠標滾輪任意縮放。另外本軟件設(shè)立四個典型的情況對應(yīng)四個按鈕,一鍵便可觀察電場模型,這對于教師展示提供了很大方便。這四個典型情況分別是單個電荷,同等異號電荷,同等同號電荷,以及只有在三維情況下才有的四面體頂點分布的電荷。
OpenGL是一個開源的三維繪圖SDK。從其官方網(wǎng)站下載庫,頭文件以及源文件,在程序中即可方便地調(diào)用。
使用方法:進入Visual C++之后選擇MFC的對話框模式,此對話框作為母框架。新建一個類GLWnd,從CWnd類繼承,在對話框類中添加一個它的對象,這個對象作為主要的繪圖區(qū)。在對話框初始化的時候,像普通CWnd類一樣生成窗口。然后,在GLwnd初始化的時候?qū)pen GL初始化。最后只要重載OnPaint()函數(shù),將需求繪圖內(nèi)容添加進去即可。
由于視角必須由用戶調(diào)整,因此必須在鼠標移動事件中添加消息響應(yīng)函數(shù),記錄鼠標移動方向,根據(jù)方向設(shè)定Open GL參數(shù),以調(diào)整視角。
電場線的繪制中用紅色表示電勢高的點,藍色表示電勢低的點,以方便觀察。
首先模擬等量異種電荷的三維電場線。在軟件操作界面上選擇“等量異號電荷”,再添加電荷的坐標值及電量值,單擊確定,在軟件圖形顯示區(qū)中將會顯示模擬結(jié)果,見圖2。
圖2 雙極子正視圖
用鼠標拖動顯示區(qū)可旋轉(zhuǎn)觀察視角,當設(shè)定視角為45°斜視時,模擬結(jié)果,見圖3。
圖3 雙極子斜視圖
還可以模擬雙桿的電場線分布情況,桿是由七個等量的電荷排成直線組成,兩桿的電荷是異號的,觀察角度設(shè)定為45°,模擬結(jié)果,見圖4。
圖4 擬雙桿斜視圖
結(jié)果分析:軟件繪制的電場線由于是根據(jù)電磁學理論通過解方程得出,模擬結(jié)果與理論結(jié)果相符合,具有較強的科學性。該軟件突破了二維限制,能夠展現(xiàn)較為復雜的三維電場線。但是由于等勢面在三維條件下不好表示,因此沒有設(shè)計此功能。
[1] 姚曉玲,趙萍,劉力.點電荷對的電力線和等勢面的計算機模擬[J].后勤工程學院院報,2005(1):72-74.
[2] 錢懿華,董慎行.用計算機模擬點電荷在二維平面上的靜電場[J].大學物理,2003,22(1)::31-39.
[3] 梁燦彬,秦光戎,梁竹兼.電磁學[M]2版.北京:高等教育出版社,2004:1-25.
[4] R.P.Feynman,R.B.Leighton,M.Sands.費恩曼物理學講義[M].2卷.上海:上海科學技術(shù)出版社,2005.
[5] E.B.Saff,A.B.J.Kuijlaars.Distributing many points on the sphere[J].Mathematical Intelligencer,1997,9(1):5-11.
[6] Open GL Architecture Review Board,Dave Shreiner,Mason Woo,Jackie Neider,Tom Davis.OpenGL編程指南[M].6版.北京:機械工業(yè)出版社,2009.
Three-Dimensional Simulation of Electric Field Lines Based on OpenGL
JIANG Lue,DING Yi-min
(Hubei University,Hubei Wuhan 430062)
In Visual C++environment,we designed a three-dimensional OpenGL-based simulation software of electric field lines.The software generates the electric field line by differential method.It can accurately simulate the static point charge of the three-dimensional electric field lines in different viewport.Users can easily drag the mouse to rotate viewing angle,and change the number of charge point,position and size.
electric field line;computer simulation;Open GL
O 411.3
A
1007-2934(2011)05-0079-03
2011-04-01