凸透镜数字模型设计

时间:2022-10-23 05:14:28

凸透镜数字模型设计

摘要:凸透镜是光学虚拟仪器的核心部件。用结构化程序设计的思想,利用Authoware的变量和函数实现了对凸透镜数字模型的设计。

关键词:数字模型;设计;Authoware

中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)08-10ppp-0c

1 设计思路

虚拟仪器(Virtual Instrument,VI)的研究始于美国的斯坦福大学和马里兰大学。虚拟仪器的出现,克服了以硬件为主的传统仪器的功能只能由厂家定义而用户难以改变的缺陷.虚拟仪器是基于计算机的仪器,仪器工作时通过操纵位于计算机屏幕虚拟面板上的“按钮”来完成检测或者控制任务[1]。根据凸透镜成像原理,通过Authoware,可以将物体与凸透镜的距离(物距)和凸透镜的焦距做为的变量,用程序设计构建一模拟成像规律的数字化虚拟模型。模型设计的特点是在程序运行时,根据参数的设定,计算机自动生成成像系统,并计算和标识出系统的项各参数,可控性地动态演示凸透镜成像规律。具体设计应满足:程序自动绘制成像系统平台;在调节物距和改变焦距的时候,系统平台自动动态描绘主光轴、透镜两边的焦点及两倍焦距点,同时绘制出三条特殊光线的成像光路并绘制出所成的像;演义出光路的可逆性;演义出成像的规律;通过界面的交互控件实现与程序的交互。

2 程序的模块结构设计方案

通过“背景”模块绘制透镜和设定控制界面的文字显示界面。通过“初始设定”模块设定系统需要的变量及初始值;通过“物体”模块绘制出移动物体的控制模块;通过“移动物体”模块将物体的控制模块移动到初始位置;用“画初始光线和像”模块绘制出初始成像光路图;通过“拖动”交互模块实现在参数改变时的适时交互控制。“拖动”模块是程序的核心模块,它内含三个群组,通过Dragging[2]@"物体"群组模块实现自动绘图功能;通过“焦距增加”群组模块实现焦距的增大控制,通过“焦距减小”群组模块实现焦距的减小控制。程序模块结构设计如图1。

图1 程序模块结构

3 程序设计的关键技术

3.1 “初始设置”模块的程序设计

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 初始化模块的程序设计

Movable@"背景":=0

x0:=319

y0:=231

f:=54

SetMode(1)

y1:=y0-h

id:=ChildNumToID(@"拖动", 1)

GoTo(id)

3.3 核心模块的程序设计

“拖动”核心模块采用按键交互响应控制[3]模式。“增加焦距”模块和“减小焦距”模块的程序设计基本上和Dragging@"物体"模块的程序相同,只是在其中增加了对焦距f的控制。Dragging@"物体"模块的程序设计如下:

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,"实","虚")

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="实",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 结束语

凸透镜数字模型主要利用了Authorware的内部变量IconTitle、IconID和Quit()、Goto()、SetFrame()、SetLine()、SetMode()、Line()、ChildNumToID()等内部函数及条件判断,并利用了其强大的交互功能实现了程序的控制。程序很好地实现了物体移动和光路绘图的同步以及焦距调节和光路绘图的同步,也实现了参数发生变化时的同步显示和焦点的动态精确描绘。

参考文献:

[1]荆学东,徐滨士.虚拟仪器技术及其应用[J].陕西科技大学学报,2007,(02).

[2]毕广吉.Authorware多媒体开发[M].人民邮电出版社,2004.

[3]电脑报.Authorware7.0[M].汕头大学出版社,2006.

上一篇:ATA平台与高职院校教学考试改革 下一篇:Linux下视频流多播速率控制方法的设计与实现