摘要:凸透鏡是光學(xué)虛擬儀器的核心部件。用結(jié)構(gòu)化程序設(shè)計(jì)的思想,利用Authoware的變量和函數(shù)實(shí)現(xiàn)了對(duì)凸透鏡數(shù)字模型的設(shè)計(jì)。
關(guān)鍵詞:數(shù)字模型;設(shè)計(jì);Authoware
中圖分類號(hào):TP311文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-3044(2008)08-10ppp-0c
1 設(shè)計(jì)思路
虛擬儀器(Virtual Instrument,VI)的研究始于美國(guó)的斯坦福大學(xué)和馬里蘭大學(xué)。虛擬儀器的出現(xiàn),克服了以硬件為主的傳統(tǒng)儀器的功能只能由廠家定義而用戶難以改變的缺陷.虛擬儀器是基于計(jì)算機(jī)的儀器,儀器工作時(shí)通過(guò)操縱位于計(jì)算機(jī)屏幕虛擬面板上的“按鈕”來(lái)完成檢測(cè)或者控制任務(wù)[1]。根據(jù)凸透鏡成像原理,通過(guò)Authoware,可以將物體與凸透鏡的距離(物距)和凸透鏡的焦距做為的變量,用程序設(shè)計(jì)構(gòu)建一模擬成像規(guī)律的數(shù)字化虛擬模型。模型設(shè)計(jì)的特點(diǎn)是在程序運(yùn)行時(shí),根據(jù)參數(shù)的設(shè)定,計(jì)算機(jī)自動(dòng)生成成像系統(tǒng),并計(jì)算和標(biāo)識(shí)出系統(tǒng)的項(xiàng)各參數(shù),可控性地動(dòng)態(tài)演示凸透鏡成像規(guī)律。具體設(shè)計(jì)應(yīng)滿足:程序自動(dòng)繪制成像系統(tǒng)平臺(tái);在調(diào)節(jié)物距和改變焦距的時(shí)候,系統(tǒng)平臺(tái)自動(dòng)動(dòng)態(tài)描繪主光軸、透鏡兩邊的焦點(diǎn)及兩倍焦距點(diǎn),同時(shí)繪制出三條特殊光線的成像光路并繪制出所成的像;演義出光路的可逆性;演義出成像的規(guī)律;通過(guò)界面的交互控件實(shí)現(xiàn)與程序的交互。
2 程序的模塊結(jié)構(gòu)設(shè)計(jì)方案
通過(guò)“背景”模塊繪制透鏡和設(shè)定控制界面的文字顯示界面。通過(guò)“初始設(shè)定”模塊設(shè)定系統(tǒng)需要的變量及初始值;通過(guò)“物體”模塊繪制出移動(dòng)物體的控制模塊;通過(guò)“移動(dòng)物體”模塊將物體的控制模塊移動(dòng)到初始位置;用“畫(huà)初始光線和像”模塊繪制出初始成像光路圖;通過(guò)“拖動(dòng)”交互模塊實(shí)現(xiàn)在參數(shù)改變時(shí)的適時(shí)交互控制。“拖動(dòng)”模塊是程序的核心模塊,它內(nèi)含三個(gè)群組,通過(guò)Dragging[2]@\"物體\"群組模塊實(shí)現(xiàn)自動(dòng)繪圖功能;通過(guò)“焦距增加”群組模塊實(shí)現(xiàn)焦距的增大控制,通過(guò)“焦距減小”群組模塊實(shí)現(xiàn)焦距的減小控制。程序模塊結(jié)構(gòu)設(shè)計(jì)如圖1。

圖1 程序模塊結(jié)構(gòu)
3 程序設(shè)計(jì)的關(guān)鍵技術(shù)
3.1 “初始設(shè)置”模塊的程序設(shè)計(jì)
h:=100
a:=30
SetFrame(TRUE,RGB(0,0,0))
SetLine(2)
Line(2,a,231,a,231-h)
SetFrame(TRUE,RGB(255,255,255))
Line(1,0,231,700,231)
3.2 初始化模塊的程序設(shè)計(jì)
Movable@\"背景\":=0
x0:=319
y0:=231
f:=54
SetMode(1)
y1:=y0-h
id:=ChildNumToID(@\"拖動(dòng)\", 1)
GoTo(id)
3.3 核心模塊的程序設(shè)計(jì)
“拖動(dòng)”核心模塊采用按鍵交互響應(yīng)控制[3]模式。“增加焦距”模塊和“減小焦距”模塊的程序設(shè)計(jì)基本上和Dragging@\"物體\"模塊的程序相同,只是在其中增加了對(duì)焦距f的控制。Dragging@\"物體\"模塊的程序設(shè)計(jì)如下:
x1:=DisplayX@\"物體\"
SetFrame(TRUE,RGB(255,0,0))
SetLine(2)
Line(3,x1,229,x1,231-h)
u:=x1-x0
zy:=Test(u>0,1,-1)
u:=ABS(u)
v:=f*u/(u-f)
xs:=Test(v>0,\"實(shí)\",\"虛\")
xx:=x0-zy*v
xh:=h*v/u
xy:=y0+xh
SetFrame(TRUE,RGB(255,255,255))
Line(5,x0-f,y0,x0-f,y0)
Line(5,x0-2*f,y0,x0-2*f,y0)
Line(5,x0+f,y0,x0+f,y0)
Line(5,x0+2*f,y0,x0+2*f,y0)
SetFrame(TRUE,Test(xs=\"實(shí)\",RGB(0,255,0),RGB(0,0,255)))
SetLine(2)
Line(2,xx,y0+2,xx,xy)
Line(1,x1,y1,(x1+x0)/2,y1)
Line(1,x0,y1,(x0+xx)/2,(y1+xy)/2)
Line(1,x1,y1,(x1+xx)/2,(y1+xy)/2)
Line(1,x1,y1,(x1+x0)/2,(y1+xy)/2)
Line(1,x0,xy,(x0+xx)/2,xy)
SetLine(0)
Line(1,x1,y1,x0,y1)
Line(1,x0,y1,xx,xy)
Line(1,x1,y1,xx,xy)
Line(1,x1,y1,x0,xy)
Line(1,x0,xy,xx,xy)
4 結(jié)束語(yǔ)
凸透鏡數(shù)字模型主要利用了Authorware的內(nèi)部變量IconTitle、IconID和Quit()、Goto()、SetFrame()、SetLine()、SetMode()、Line()、ChildNumToID()等內(nèi)部函數(shù)及條件判斷,并利用了其強(qiáng)大的交互功能實(shí)現(xiàn)了程序的控制。程序很好地實(shí)現(xiàn)了物體移動(dòng)和光路繪圖的同步以及焦距調(diào)節(jié)和光路繪圖的同步,也實(shí)現(xiàn)了參數(shù)發(fā)生變化時(shí)的同步顯示和焦點(diǎn)的動(dòng)態(tài)精確描繪。
參考文獻(xiàn):
[1]荊學(xué)東,徐濱士.虛擬儀器技術(shù)及其應(yīng)用[J].陜西科技大學(xué)學(xué)報(bào),2007,(02).
[2]畢廣吉.Authorware多媒體開(kāi)發(fā)[M].人民郵電出版社,2004.
[3]電腦報(bào).Authorware7.0[M].汕頭大學(xué)出版社,2006.