陳 進
(安徽電子信息職業(yè)技術(shù)學(xué)院 信息與智能工程系,安徽 蚌埠 233000)
?
基于VC++的高職動態(tài)微課件設(shè)計
陳進
(安徽電子信息職業(yè)技術(shù)學(xué)院 信息與智能工程系,安徽 蚌埠 233000)
[摘要]分析了高職動態(tài)微課件設(shè)計的特點,提出了將VC++隨機數(shù)應(yīng)用于動態(tài)課件設(shè)計的方法,并給出了高職《基礎(chǔ)化學(xué)》課程動態(tài)微課件設(shè)計的實例。
[關(guān)鍵詞]VC++;動態(tài)微課件;隨機數(shù)序列
1問題提出
圖1 MATLAB繪制的《氫原子徑向分布圖》
科學(xué)計算可視化技術(shù)不僅在工程科學(xué)領(lǐng)域有重要廣泛的應(yīng)用,也被廣泛應(yīng)用于高校各個專業(yè)的計算機輔助教學(xué)領(lǐng)域。例如,專業(yè)科學(xué)計算可視化軟件MATLAB可以繪制函數(shù)的圖形,以及特殊曲面,如雙葉雙曲面、馬鞍面的圖形,能夠有效的輔助《高等數(shù)學(xué)》學(xué)習。MATLAB的優(yōu)秀的圖形繪制能力、動態(tài)觀察功能,可以實現(xiàn)立體圖形的多角度、全方位觀察,有助于促進學(xué)生對于專業(yè)知識的學(xué)習。在高?!痘A(chǔ)化學(xué)》教學(xué)中,同樣可以利用MATLAB繪制氫原子s、p、d軌道角度分布圖,將教學(xué)內(nèi)容可視化、立體化[1]。而學(xué)生通過動態(tài)觀察圖形(通過菜單/圖標選項/Rotate 3D/按住左鍵來實現(xiàn)),可以深化對于知識點的理解,從而起到降低教學(xué)難度,促進學(xué)生學(xué)習的作用。利用MATLAB繪制的《氫原子徑向分布圖》如圖1所示。其動態(tài)觀察(即從不同角度觀察)的圖形如圖2所示。
圖2 《氫原子徑向分布圖》動態(tài)觀察圖
科學(xué)計算可視化軟件雖然具有強大的輔助教學(xué)作用,其缺點也是明顯的??茖W(xué)計算可視化軟件的最主要功能是數(shù)據(jù)分析,其繪圖功能是有一定約束的。例如,上述徑向分布函數(shù)D(r)的意義是表示電子在一個以原子核為中心,以r為半徑,微單位厚度為dr的同心圓薄球殼夾層內(nèi)出現(xiàn)的概率[2];它反映的是核外電子出現(xiàn)的概率與距離r的關(guān)系。其圖像應(yīng)為立體圖形。而MATLAB繪制D(r)圖像,一般僅畫出xy平面上的氫原子徑向分布圖。此外,每次畫出的圖像是靜止的(如圖1所示),不能很好地表達“電子出現(xiàn)概率”這一概念。
2VC++動態(tài)微課件設(shè)計
仍以《氫原子徑向分布圖》教學(xué)內(nèi)容為例。氫原子徑向分布函數(shù)的圖像應(yīng)該是立體圖形,而不是平面圖形;電子的運動狀態(tài)是復(fù)雜的,不能用電子的繞核旋轉(zhuǎn)來模擬,只能用出現(xiàn)的概率來表示;在不同時刻點出現(xiàn)的位置是隨機變化的,只在某些區(qū)域出現(xiàn)的概率大。因而設(shè)計的輔助教學(xué)課件應(yīng)為(1)點(表示電子)出現(xiàn)的位置隨機變化的(概率分布與D(r)一致);(2)三維動態(tài)顯示的圖形。這些功能專業(yè)的軟件難以實現(xiàn),但是可以通過采用底層語言編程開發(fā)exe文件實現(xiàn)。在各種編程語言中,VC++是使用地較為廣泛的一種。VC++能產(chǎn)生符合科學(xué)計算要求的隨機數(shù)序列[3],對于動態(tài)隨機繪制具有重要意義,可以模擬真實的科學(xué)計算場景。對于氫原子徑向分布函數(shù)的圖像繪制來說,完全能夠滿足電子出現(xiàn)的隨機位置的計算需要。此外,VC++本身自帶GDI(Graphics Device Interface,圖形設(shè)備接口),可以輕松實現(xiàn)平面圖形的繪制。但是對于三維圖形,需要進行坐標系和空間轉(zhuǎn)換,需要進行復(fù)雜的編程。因而一般情況下采用三維底層圖形庫(如Direct X或者OpenGL)簡化三維圖形的繪制[4]。本文在三維繪圖部分直接采用OpenGL.下面給出《氫原子徑向分布圖》繪制實例。
3基于VC++的《氫原子徑向分布圖》繪制實例
3.1繪制算法
(1)分布函數(shù)
這里以氫原子1s軌道為例。其徑向分布函數(shù)由下式給出[5]:
(2)算法設(shè)計:
1) 給定r的值
4) 每一個D(ri)對應(yīng)于ri時的概率值。由概率論中的大數(shù)定理,只要n足夠大,頻率逐漸穩(wěn)定到概率,而頻率是與電子在ri時出現(xiàn)的次數(shù)相對應(yīng)的,因而,如果給定某適當?shù)闹祂,計算mi=[k*D(ri)],就可以將mi作為半徑為ri時電子出現(xiàn)的次數(shù)。因為D(ri)可能比較小,k的取值應(yīng)該使得mi盡可能的離散,亦即需要盡量使得mi≠mi+1,i=0,1,….n-1.
5) 在距離球心ri(i=0,1,….n-1)的球面上,隨機動態(tài)繪制mi個點,這樣就完成了繪制。在繪制效果上,不同時刻mi個點繪制的位置是不同的。
3.2算法實現(xiàn)
(1)VC++隨機數(shù)產(chǎn)生
為了產(chǎn)生動態(tài)的繪制效果,需要在OpenGL的OnInitialUpdate()調(diào)用隨機數(shù)發(fā)生器的初始化函數(shù)srand((unsignedint)time(NULL)),通過使用time函數(shù)來獲得不同的系統(tǒng)時間作為隨機種子[3],在主程序main()中調(diào)用rand(),就會在不同時刻產(chǎn)生不同的隨機數(shù)序列,按此序列繪制圖形,可實現(xiàn)氫原子徑向分布的動態(tài)繪制。每隔一定的時間(這里設(shè)為33ms)強制重繪圖形,由于隨機數(shù)序列不同,每次重繪的結(jié)果就會不同,從而產(chǎn)生動態(tài)效果。
(2)OpenGL繪圖
OpenGL中,點是由空間直角坐標表示的。空間一點P(x,y,z)的直角坐標與球面坐標有如下關(guān)系[6]:
(1)
其中,r以及θ角與φ角的意義如圖3所示。
圖3 直角坐標與球面坐標對應(yīng)關(guān)系
則對于距離球心ri(i=0,1,….n-1)的球面上的點P(x,y,z),由(1)式,有
(2)
(3)半徑為ri的球面上mi個隨機點的坐標
按上述分析,要在半徑為ri的球面上繪制mi個點,首先要計算出這mi個點的坐標。這里采用如下方法:兩次調(diào)用隨機函數(shù)rand()產(chǎn)生[0,2π]之間均勻分布的隨機數(shù),以此作為θ的隨機角度,一次作為φ的隨機角度。這樣就得到一個均勻分布的二維隨機數(shù)對(θ,φ),其中θ,φ∈[0,2π]。將此過程循環(huán)mi次,得到繪制mi個點所需要的mi個數(shù)對(θ,φ)。進一步由(2)式計算出該點的坐標(x,y,z).在此位置繪制點。其部分偽碼如下:
for(int j=1;j<=;j++
{l[j]=3.14* ( (float)rand()/(RAND_MAX) );//產(chǎn)生0-Π之間的隨機數(shù),作為θ的值
m[j]=3.14* ( (float)rand()/(RAND_MAX) ); //產(chǎn)生0-Π之間的隨機數(shù),作為φ的值
glTranslatef(*sin(l[j])*cos(m[j]), *sin(l[j])*sin(m[j]), *cos(l[j]));
//計算(x,y,z),并將坐標系平移到該處
auxSolidSphere(0.1);//這里直接使用OpenGL輔助庫里的球體函數(shù)繪制點}
3.3繪制效果
采用上述算法繪制的效果如圖4所示。為觀察方便,從這里僅繪制了第三第四象限的分布圖,而且從(1,-1,1)的方向觀察圖形。可以看到:(1)電子云是動態(tài)顯示的,不同時刻電子云圖形是不同的;(2)氫原子徑向分布圖反映的是在不同位置出現(xiàn)的概率,可以觀察到在某一薄球殼上概率最大。通過設(shè)置視角,還可以從不同角度觀察,立體把握氫原子徑向分布。
圖4 不同時刻氫原子徑向分布圖
圖5 正面觀察的圖形
3.4功能擴展
基于VC++開發(fā)的高職動態(tài)微課件,圖形真實感強,繪圖效果優(yōu)良;而且很容易通過修改代碼的方法開發(fā)新的課件,以適應(yīng)不同教學(xué)環(huán)境的要求。例如,對于上述的氫原子徑向分布圖,如果將視角改為(1,1,1),就得到正面觀察的圖形(如圖5所示)。教學(xué)中,為了更好地體現(xiàn)在某一薄球殼上概率最大的教學(xué)效果,還可以設(shè)定一定的閾值,對于出現(xiàn)概率位于某一閾值內(nèi)的點進行圖像增強,以取得更好的教學(xué)效果(如圖5所示)。
4總結(jié)和推廣
底層語言比專業(yè)軟件約束少,能開發(fā)出符合特定教學(xué)需要的exe文件,可以實現(xiàn)專業(yè)軟件無法實現(xiàn)的特殊功能,從而最大限度地發(fā)揮計算機的輔助教學(xué)作用。底層語言在高職微課件設(shè)計中的應(yīng)用,可以將教學(xué)難點以可視化的方法表達,使學(xué)生容易理解和接受;同時也為進一步的探究性學(xué)習打下基礎(chǔ)。實踐表明,基于VC++的高職微課件設(shè)計,符合高職學(xué)生的教學(xué)實際,對于促進學(xué)生對于教學(xué)內(nèi)容的理解,加快知識的建構(gòu)和轉(zhuǎn)化具有一定意義。
[參考文獻]
[1]汪武.Matlab在化工原理計算中的應(yīng)用[J].淮南師范學(xué)院學(xué)報,2007,(3).
[2]魏祖期.基礎(chǔ)化學(xué)實驗(第五版)[M].北京:人民衛(wèi)生出版社,2001.
[3]吳文虎.程序設(shè)計基礎(chǔ)[M].北京:清華大學(xué)出版社,2011.
[4]程飛.基于OpenGL的高等數(shù)學(xué)多媒體課件實現(xiàn)[J].洛陽師范學(xué)院學(xué)報,2005,(5):72-74.
[5]翁之望,粟智.用MATLAB語言解氫原子與類氫離子的定態(tài)薛定諤方程[J].新疆師范大學(xué)學(xué)報(自然科學(xué)版), 2000,(4).
[6]陳兆斗.高等數(shù)學(xué)(工本)[M].北京:北京大學(xué)出版社,2006.8.
[責任編輯:江雪]
[收稿日期]2016-01-18
[基金項目]安徽省教育廳2013年自然科學(xué)研究項目《基于OpenGL的CAD仿真系統(tǒng)設(shè)計研究》(編號:KJ2013Z013)。
[作者簡介]陳進(1965-),男,江蘇揚州人,講師,主要從事CAD/計算機仿真研究。
[中圖分類號]TP311.1
[文獻標識碼]A
[文章編號]1671-5330(2016)02-0044-03