程 飛
(安徽電子信息職業(yè)技術(shù)學(xué)院電子工程系,安徽 蚌埠 233000)
當前,科技類場館開展科普工作主要通過三種手段:(1)實物模擬,(2)采用多媒體技術(shù),利用聲光電營造場館環(huán)境,(3)微視頻展示科學(xué)原理,(4)利用虛擬現(xiàn)實技術(shù)。對于第一類,觀眾一般不能觸摸實物模型,第二類技術(shù)對于傳播科技知識作用有限,而對于第三類,觀眾一般情況下僅能通過視頻了解科學(xué)原理和科技知識,被動接受得多,主動參與得少。第四類則依賴于硬件設(shè)備(如VR頭盔等)。總體看來,科普平臺的展示功能較多,而具有交互功能的科普平臺較為少見。如果結(jié)合計算機圖形學(xué)技術(shù),開發(fā)具有交互功能的科普虛擬平臺,可以有效提高科普效果,促進科學(xué)知識的傳播。本文結(jié)合中國科協(xié)科普大賽的命題《輪旋線》為例,結(jié)合軟件工程理論,詳述交互式科普平臺的設(shè)計方法。
一個動圓(圓心為O,半徑為r)在一條定曲線L上滾動時,與動圓圓心O距離為定值c的點P的軌跡稱為輪旋線[1],又稱擺線。OP稱為擺軸,且c=|OP|。一般L為直線或者圓。如果L為直線,稱為普通擺線(如圖1所示)。如果L為定圓,分為兩種情況,稱為內(nèi)圓擺線(如圖2所示)和外圓擺線(如圖3所示)。若c>r,稱為長軸擺線,若c<r,稱為短軸擺線。圖4從左至右顯示了c>r、c=r、c<r三種內(nèi)圓擺線的形成過程。
圖1 普通擺線
圖2 內(nèi)圓擺線
圖3 外圓擺線
圖4 三種內(nèi)圓擺線
從交互式科普角度考慮,虛擬平臺應(yīng)能夠動態(tài)、交互表達:(1)擺線的形成過程(2)擺線的數(shù)學(xué)表達式(3)擺線的特殊性質(zhì)(4)擺線的簡史(5)擺線的應(yīng)用(6)擺線的繪制。由于科普平臺的作用是激發(fā)科學(xué)研究的興趣,對于公式的推導(dǎo)和理論一般不做展開。
基于教育心理學(xué)的理論,人類視覺對于運動的物體比靜止的物體敏感;此外,在立體的場景中多視圖觀察形體,所獲得的信息量遠大于固定視角所獲得的信息量。因而,將擺線的動態(tài)形成過程置于三維場景中,場景的視角可以變換,其效果如圖5所示。這里視角矢量為(1,1,1),即軸側(cè)觀察。該圖顯示了各種擺線的形成過程。
圖5 各種擺線的形成過程
這里采用底層引擎OpenGL作為開發(fā)工具[2]。這是因為:(1)OpenGL具有良好的浮點計算能力,特別適用于數(shù)學(xué)函數(shù)處理;(2)其動態(tài)刷新功能可以保證動畫效果的實現(xiàn);(3)其顯示表功能可以實現(xiàn)場景中的中英文字標注,還可以方便載入圖片說明;(4)合理調(diào)用VC++的sleep函數(shù),可以實現(xiàn)場景的自動變換,可以以微視頻的形式輸出;(5)基于VC++的一檔多視技術(shù)[3],可以增加表單視(FormView),易于實現(xiàn)設(shè)計交互式界面,如圖5左半部分所示。
限于篇幅,本文僅以(1)外擺線的形成(2)等時降線(3)最速降線為例說明詳細設(shè)計的思路和方法。
外擺線如圖3所示,其方程為[1]:
其中,a為定圓半徑,b為動圓半徑,c為動圓圓心O到點P的距離,即c=|OP|,θ對應(yīng)于動圓的自轉(zhuǎn)角度。給定a,b(一般情況下a、b取有理數(shù)),如果a/b可以化為最簡分式m/n(m、n為互質(zhì)整數(shù)),則動圓將會繞定圓公轉(zhuǎn)m圈,同時自轉(zhuǎn)n圈(即共計自轉(zhuǎn)n*2π弧度),回到起點[4]。每自轉(zhuǎn)一圈,形成擺線的一瓣。如圖3所示,a=3,b=1,c=1.5,動圓公轉(zhuǎn)1圈,同時完成三次自轉(zhuǎn),形成擺線的3瓣。OpenGL下,擺線的動畫實現(xiàn)步驟如下:
(1)計算n.給定a,b,計算a/b,化為最簡分式m/n,得到n;
(2)計算曲線上的各個數(shù)據(jù)點。因為θ∈[0,n*2π],將[0,n*2π]均分1 000份,令,代入(1)式,計算各個θi所對應(yīng)的pi(xi,yi)。
(3)繪制圖形,OpenGL用多段直線描繪曲線。給定一個整數(shù)t,繪制直線P0P1,…,Pt-1Pt。t初始化為0,每次OpenGL刷新重繪的時候t增加1,即每次刷新圖形多繪制一段直線,從而實現(xiàn)擺線繪制動畫。當t=1 000時,置t=0,重新繪制。關(guān)鍵代碼如下:
為了增加動畫效果,定圓繪制完成后,還要繪制動圓以及動圓上的擺軸OP的運動,如圖3所示。定圓和動圓圓周的繪制方法參考相關(guān)文獻[5]。只要知道動圓的圓心,就可以通過每次刷新重繪動圓,表現(xiàn)動圓沿定圓圓周滾動。采用下面的語句移動動圓的圓心:
進一步通過動圓的自轉(zhuǎn)實現(xiàn)擺軸OP的運動效果,關(guān)鍵語句如下:
繪制效果如圖3所示,由圖可見,P點的運動形成了外擺線。對于內(nèi)擺線和普通擺線的情形,用同樣的方法繪制,不再贅述。圖1、圖2、圖3顯示了擺軸OP的旋轉(zhuǎn)以及P點的運動產(chǎn)生擺線的過程。
多個小球從擺線的不同高度同時沿擺線下落,會同時到達最低點,這就是擺線的等時降線特性[4]。圖6(a)顯示了位于擺線上不同高度的小球,按下“啟動”按鈕后,各個小球同時沿擺線下滑,圖6(b)顯示了各點同時到達最低點。
圖6 等時降線和最速降線
為了表現(xiàn)具有真實感的小球下滑過程,需要依據(jù)物理學(xué)的原理計算小球沿等時降線下滑的相關(guān)位置數(shù)據(jù)。思路如下:假設(shè)從初始點下滑到最低點的總時間為nt,小球在it時刻的位置即為H(i),(i=0,1,2,3,…,n;特別的,i=0時記為H,i=1時記為H’,i=2時記為H”)。第i次刷新的時候,在位置H(i)繪制小球。每次刷新重繪的時間間隔都是相同的,但是小球移動的距離 d(i)=|H(i)-H(i-1)|不同,這樣就表現(xiàn)出真實感的動畫效果。下面計算H(i)(i=1,2,3,…,n),為簡化問題,這里僅計算H,H’以及H”。
圖7 小球沿擺線下滑位置計算
如圖7所示,|AB|=α,擺線的方程為:
小球初始位置位于H,坐標表示為H(m,h),t時刻位于H’(m’,h’),2t時刻位于H”(m”,h”)。過H作x軸的平行線,交y軸于A1,以O(shè)A1為直徑作輔助圓O1,過H’、H”作x軸的平行線,交輔助圓于A2、A3,則∠A1O1A2=∠A2O1A3=β。即重力作用下小球下落時各個位置點的縱坐標的值等于一個小球沿輔助圓O1勻速轉(zhuǎn)動(角速度為,g為重力加速度)時相應(yīng)位置點的縱坐標的值。這樣,H’點的縱坐標就可以表示為:
代入(2)式的第2式,有
求得
再將(5)式代入(2)式的第1式,求出H點的橫坐標。
而H”點的縱坐標就可以表示為:
采用和上面相同的方法,可以求出H”點的橫坐標,以及所有關(guān)鍵點的位置坐標。
可以證明,小球下落的時間與初始位置無關(guān)[4](證明請參閱相關(guān)文獻)。小球初始位置不同,沿擺線下滑,最終同時下落到最低點。等時降線詳細設(shè)計的思路如下:給定初始位置H’(m’,h’),首先在初始位置繪制小球;OpenGL刷新一次(對應(yīng)于經(jīng)過t時刻),在H”(m”,h”)位置小球;以此類推,計算其余關(guān)鍵點的位置數(shù)據(jù)。小球沿擺線下滑的動畫效果如圖6(a)、(b)所示。小球到達最低點以后,由于其具有水平速度,會沿擺線的左半部分繼續(xù)上升,即動畫的效果是小球沿擺線來回震蕩。關(guān)鍵代碼如下:
如圖6(c)(d)所示,在從起點到終點的所有連線中,小球沿擺線下落速度最快,稱為最速降線性質(zhì)[4]。圖6(c)顯示了小球沿直線和擺線同時下落,圖6(d)顯示小球沿擺線到達最低點的時候,沿直線下落尚未到達最低點。其設(shè)計方法和數(shù)據(jù)計算類似4.2,這里不再贅述。
圖8 載入圖片
圖9 顯示表技術(shù)導(dǎo)入字體
OpenGL性能良好的底層圖形庫,結(jié)合VC++的強大的數(shù)學(xué)處理能力,特別適合于基于物理原理的交互式科普軟件設(shè)計,可以反映真實的物理實驗環(huán)境,給科普參與者以真實的科普體驗。不僅如此,OpenGL還可以導(dǎo)入圖片(如圖8所示,用圖片形式描述擺線簡史),通過顯示表技術(shù)導(dǎo)入不同字體的文字,并可以通過sleep()自動生成科普視頻,滿足特定的科普需求(如圖9所示視頻截圖)?;贠penGL設(shè)計科普交互式軟件,是實現(xiàn)真實感的虛擬科普場景的有效途徑。
西昌學(xué)院學(xué)報(自然科學(xué)版)2018年4期