趙大田 宗 波
使用Delphi+GLScene,開發出三維場景的多媒體教學輔助軟件。使用該軟件,教師可以根據自己的需要,方便的設定要顯示的三維場景的內容以及運動規律,并在課堂上動態演示出該場景。
隨著信息技術的發展,多媒體在高校物理教學中發揮著越來越大的作用。在課堂上,為了幫助學生理解物體的運動規律和復雜的場景,需要開發出多媒體教學軟件,將其形象的描述出來。對于大多數教師而言,自行開發出符合自己需要的課件是很難的,在網上雖然可以找到大量的資源,但很難找到正好符合自己需要的課件。因此,筆者使用開發工具Delphi+OpenGL 開發出一種用于展示自定義多媒體場景的軟件,教師不需要掌握任何計算機開發技術,只需輸入要顯示的物體的類型、參數和運動規律,即可在屏幕上準確、形象的顯示出教師所想要表現的物理場景。
Delphi是Borland公司開發的可視化軟件開發工具,為我們提供了一種方便、快捷的Windows 應用程序開發工具。擁有簡潔高效的語言,功能強大的控件庫,直觀的開發環境,可以用很少的代碼實現很強大的功能。Delphi程序員們開發出了成千上萬的第三方控件,大幅度擴展了Delphi 的功能。
OpenGL 是行業領域中最為廣泛使用的 2D/3D 圖形接口函數庫,它使用簡便,效率高,可以對二維/三維物體進行建模、變換、顏色設置、光照和材質設置、紋理映射等功能,方便的在屏幕上顯示出各種二維/三維物體的形象。開發者可以使用多種開發工具直接調用OpenGL 的功能,但開發難度較大,Delphi 開發者可以使用GLScene 控件庫來解決問題,它將OpenGL 的功能封裝成一個個簡單易用的組件,你只需要掌握這些基類的簡單操作,就可以迅速地進行程序開發。
大學物理教學中的各種場景,其實絕大部分都是一些常見的物體(或幾何形狀),其位置隨時間不斷變化的過程。對于一個教師而言,知道自己所要設置的物理場景中各個物體的運動規律,但無法將其在計算機上表現出來。筆者可以利用Delphi+OpenGl 的功能,開發出多個多媒體軟件,在屏幕上顯示出各種不同的物理場景。但這些顯示特定場景的多媒體軟件無法滿足廣大教師的教學需求。
因此,筆者開發出的這個軟件,并不是用來顯示某種特定場景的,而是由教師先定制出符合自己要求的場景,并將其具體信息(物體種類、大小、位置函數)輸入到程序中。該軟件則根據這些信息生成相應的圖像,并不斷刷新,形成運動場景。
下面以生成一個圓錐擺運動場景為例來分析介紹該軟件的功能。首先,要輸入圓錐擺運動場景的相關信息,保存為場景文件。其功能界面如圖1 所示,你可以生成一個全新的場景文件,也可以讀取一個已有的場景文件后往里面增加新物體。可選的物體暫時包括:球體、立方體、圓錐、圓柱體、圓盤、直線、平面、圓環、文字。以后還會增加。
一個圓錐擺運動場景由頂、線和小球三個物體組成。其中,線和小球的位置參數是隨時間變化的。
首先輸入頂部的信息:其顏色選擇黃色;中心坐標為x=0,y=0,z=3;長度為1,寬度為1,繞xyz 軸轉動的角度均為0,繞y 軸旋轉180 度。
然后輸入線的信息:顏色為綠色;線寬度為2 個像素;起點坐標為0,0,3;終點坐標為0.8*cos(2*t),0.8*sin(2*t),0。
最后輸入小球的信息:顏色為藍色,中心坐標為x=0.8*cos(2*t),y=0.8*sin(2*t),z=0;小球半徑為0.2。
可以看出,線和小球的位置參數中包含了其位置隨時間變化的規律。
每個物體都有起止時間兩個參數,設置物體顯示的時間范圍。超出時間范圍,物體將不顯示。這是針對一些物體的運動規律發生變化的情況而設置的,比如一個小球在t=2.3s 時與其他物體發生碰撞,運動規律發生變化,這時可以加入兩個小球,其中一個小球的運動起止時間為0~2.3s,另一個小球的起止時間為2.3~20s,這樣就可以顯示出一個小球碰撞的場景。
信息輸入完成后,將其保存為一文本文件,文件名為“圓錐擺.txt”。每一行包含了一個物體的類型和各種相關參數,用分號作為分隔符,內容如下所示:
平 面;0 ;1000;65535;0;0;3;1;1;0;180;0
直 線;0 ;1000;32768;2;0;0;3;0.8*cos(2*t);0.8*sin(2*t);0
球;0;1000;1 6 7 1 1 6 8 0 ;0.8*cos(2*t);0.8*sin(2*t);0;0.2。

圖1 場景設置界面
教師在課前做好圓錐擺的場景文件,在課堂上就可以使用軟件來展示該場景。首先選擇場景文件,程序會分析每一行的信息,將其分解為若干個小字符串。其中第一個字符串是物體的種類,解析后動態生成相應的類實例,后面的字符串則包含了物體的各個參數的信息,有些參數的值是常量,使用strtofloat 函數可將其轉化為數值,有些參數是時間的表達式,需要每次重繪圖像時用控件TcalcExpress 來解析參數,獲得數值。這些數值都保存在Parameters 數組中。部分代碼如下所示:

載入場景文件并解析后,點擊“開始”按鈕,程序開始不斷的計算運動參數,重繪圖像,在屏幕上顯示出物體運動的效果。如圖2 所示。
部分代碼如下:

圖2 動態場景展示效果


可以看出,繪制一個物體所需的代碼很少而且很簡單,基本上只要寫入幾個參數,就可以在屏幕上繪制出相應的三維圖像。
使用該軟件,廣大物理教師可以根據自己的需要,方便的設計出各種三維動態的物理場景,并用多媒體展現出來,使學生能夠直觀的理解物理規律和現象,提高教學效果。