陳 進
(安徽電子信息職業技術學院 信息與智能工程系,安徽 蚌埠 233000)
?
基于VC++的高職動態微課件設計
陳進
(安徽電子信息職業技術學院 信息與智能工程系,安徽 蚌埠 233000)
[摘要]分析了高職動態微課件設計的特點,提出了將VC++隨機數應用于動態課件設計的方法,并給出了高職《基礎化學》課程動態微課件設計的實例。
[關鍵詞]VC++;動態微課件;隨機數序列
1問題提出

圖1 MATLAB繪制的《氫原子徑向分布圖》
科學計算可視化技術不僅在工程科學領域有重要廣泛的應用,也被廣泛應用于高校各個專業的計算機輔助教學領域。例如,專業科學計算可視化軟件MATLAB可以繪制函數的圖形,以及特殊曲面,如雙葉雙曲面、馬鞍面的圖形,能夠有效的輔助《高等數學》學習。MATLAB的優秀的圖形繪制能力、動態觀察功能,可以實現立體圖形的多角度、全方位觀察,有助于促進學生對于專業知識的學習。在高校《基礎化學》教學中,同樣可以利用MATLAB繪制氫原子s、p、d軌道角度分布圖,將教學內容可視化、立體化[1]。而學生通過動態觀察圖形(通過菜單/圖標選項/Rotate 3D/按住左鍵來實現),可以深化對于知識點的理解,從而起到降低教學難度,促進學生學習的作用。利用MATLAB繪制的《氫原子徑向分布圖》如圖1所示。其動態觀察(即從不同角度觀察)的圖形如圖2所示。

圖2 《氫原子徑向分布圖》動態觀察圖
科學計算可視化軟件雖然具有強大的輔助教學作用,其缺點也是明顯的。科學計算可視化軟件的最主要功能是數據分析,其繪圖功能是有一定約束的。例如,上述徑向分布函數D(r)的意義是表示電子在一個以原子核為中心,以r為半徑,微單位厚度為dr的同心圓薄球殼夾層內出現的概率[2];它反映的是核外電子出現的概率與距離r的關系。其圖像應為立體圖形。而MATLAB繪制D(r)圖像,一般僅畫出xy平面上的氫原子徑向分布圖。此外,每次畫出的圖像是靜止的(如圖1所示),不能很好地表達“電子出現概率”這一概念。
2VC++動態微課件設計
仍以《氫原子徑向分布圖》教學內容為例。氫原子徑向分布函數的圖像應該是立體圖形,而不是平面圖形;電子的運動狀態是復雜的,不能用電子的繞核旋轉來模擬,只能用出現的概率來表示;在不同時刻點出現的位置是隨機變化的,只在某些區域出現的概率大。因而設計的輔助教學課件應為(1)點(表示電子)出現的位置隨機變化的(概率分布與D(r)一致);(2)三維動態顯示的圖形。這些功能專業的軟件難以實現,但是可以通過采用底層語言編程開發exe文件實現。在各種編程語言中,VC++是使用地較為廣泛的一種。VC++能產生符合科學計算要求的隨機數序列[3],對于動態隨機繪制具有重要意義,可以模擬真實的科學計算場景。對于氫原子徑向分布函數的圖像繪制來說,完全能夠滿足電子出現的隨機位置的計算需要。此外,VC++本身自帶GDI(Graphics Device Interface,圖形設備接口),可以輕松實現平面圖形的繪制。但是對于三維圖形,需要進行坐標系和空間轉換,需要進行復雜的編程。因而一般情況下采用三維底層圖形庫(如Direct X或者OpenGL)簡化三維圖形的繪制[4]。本文在三維繪圖部分直接采用OpenGL.下面給出《氫原子徑向分布圖》繪制實例。
3基于VC++的《氫原子徑向分布圖》繪制實例
3.1繪制算法
(1)分布函數
這里以氫原子1s軌道為例。其徑向分布函數由下式給出[5]:

(2)算法設計:
1) 給定r的值

4) 每一個D(ri)對應于ri時的概率值。由概率論中的大數定理,只要n足夠大,頻率逐漸穩定到概率,而頻率是與電子在ri時出現的次數相對應的,因而,如果給定某適當的值k,計算mi=[k*D(ri)],就可以將mi作為半徑為ri時電子出現的次數。因為D(ri)可能比較小,k的取值應該使得mi盡可能的離散,亦即需要盡量使得mi≠mi+1,i=0,1,….n-1.
5) 在距離球心ri(i=0,1,….n-1)的球面上,隨機動態繪制mi個點,這樣就完成了繪制。在繪制效果上,不同時刻mi個點繪制的位置是不同的。
3.2算法實現
(1)VC++隨機數產生
為了產生動態的繪制效果,需要在OpenGL的OnInitialUpdate()調用隨機數發生器的初始化函數srand((unsignedint)time(NULL)),通過使用time函數來獲得不同的系統時間作為隨機種子[3],在主程序main()中調用rand(),就會在不同時刻產生不同的隨機數序列,按此序列繪制圖形,可實現氫原子徑向分布的動態繪制。每隔一定的時間(這里設為33ms)強制重繪圖形,由于隨機數序列不同,每次重繪的結果就會不同,從而產生動態效果。
(2)OpenGL繪圖
OpenGL中,點是由空間直角坐標表示的。空間一點P(x,y,z)的直角坐標與球面坐標有如下關系[6]:

(1)
其中,r以及θ角與φ角的意義如圖3所示。

圖3 直角坐標與球面坐標對應關系
則對于距離球心ri(i=0,1,….n-1)的球面上的點P(x,y,z),由(1)式,有

(2)
(3)半徑為ri的球面上mi個隨機點的坐標
按上述分析,要在半徑為ri的球面上繪制mi個點,首先要計算出這mi個點的坐標。這里采用如下方法:兩次調用隨機函數rand()產生[0,2π]之間均勻分布的隨機數,以此作為θ的隨機角度,一次作為φ的隨機角度。這樣就得到一個均勻分布的二維隨機數對(θ,φ),其中θ,φ∈[0,2π]。將此過程循環mi次,得到繪制mi個點所需要的mi個數對(θ,φ)。進一步由(2)式計算出該點的坐標(x,y,z).在此位置繪制點。其部分偽碼如下:
for(int j=1;j<=;j++
{l[j]=3.14* ( (float)rand()/(RAND_MAX) );//產生0-Π之間的隨機數,作為θ的值
m[j]=3.14* ( (float)rand()/(RAND_MAX) ); //產生0-Π之間的隨機數,作為φ的值
glTranslatef(*sin(l[j])*cos(m[j]), *sin(l[j])*sin(m[j]), *cos(l[j]));
//計算(x,y,z),并將坐標系平移到該處
auxSolidSphere(0.1);//這里直接使用OpenGL輔助庫里的球體函數繪制點}
3.3繪制效果
采用上述算法繪制的效果如圖4所示。為觀察方便,從這里僅繪制了第三第四象限的分布圖,而且從(1,-1,1)的方向觀察圖形。可以看到:(1)電子云是動態顯示的,不同時刻電子云圖形是不同的;(2)氫原子徑向分布圖反映的是在不同位置出現的概率,可以觀察到在某一薄球殼上概率最大。通過設置視角,還可以從不同角度觀察,立體把握氫原子徑向分布。

圖4 不同時刻氫原子徑向分布圖

圖5 正面觀察的圖形
3.4功能擴展
基于VC++開發的高職動態微課件,圖形真實感強,繪圖效果優良;而且很容易通過修改代碼的方法開發新的課件,以適應不同教學環境的要求。例如,對于上述的氫原子徑向分布圖,如果將視角改為(1,1,1),就得到正面觀察的圖形(如圖5所示)。教學中,為了更好地體現在某一薄球殼上概率最大的教學效果,還可以設定一定的閾值,對于出現概率位于某一閾值內的點進行圖像增強,以取得更好的教學效果(如圖5所示)。
4總結和推廣
底層語言比專業軟件約束少,能開發出符合特定教學需要的exe文件,可以實現專業軟件無法實現的特殊功能,從而最大限度地發揮計算機的輔助教學作用。底層語言在高職微課件設計中的應用,可以將教學難點以可視化的方法表達,使學生容易理解和接受;同時也為進一步的探究性學習打下基礎。實踐表明,基于VC++的高職微課件設計,符合高職學生的教學實際,對于促進學生對于教學內容的理解,加快知識的建構和轉化具有一定意義。
[參考文獻]
[1]汪武.Matlab在化工原理計算中的應用[J].淮南師范學院學報,2007,(3).
[2]魏祖期.基礎化學實驗(第五版)[M].北京:人民衛生出版社,2001.
[3]吳文虎.程序設計基礎[M].北京:清華大學出版社,2011.
[4]程飛.基于OpenGL的高等數學多媒體課件實現[J].洛陽師范學院學報,2005,(5):72-74.
[5]翁之望,粟智.用MATLAB語言解氫原子與類氫離子的定態薛定諤方程[J].新疆師范大學學報(自然科學版), 2000,(4).
[6]陳兆斗.高等數學(工本)[M].北京:北京大學出版社,2006.8.
[責任編輯:江雪]
[收稿日期]2016-01-18
[基金項目]安徽省教育廳2013年自然科學研究項目《基于OpenGL的CAD仿真系統設計研究》(編號:KJ2013Z013)。
[作者簡介]陳進(1965-),男,江蘇揚州人,講師,主要從事CAD/計算機仿真研究。
[中圖分類號]TP311.1
[文獻標識碼]A
[文章編號]1671-5330(2016)02-0044-03