利用Authorware动态绘制二次函数曲线图
在中学的数学中,二次函数是最常用的函数,标准式Y=ax*x+bx+c(a<>0),它的图像是以一条直线x=-[b/(2a)]作为对称轴,点{-[b/(2a)],(4ac-b*b)/4a}为顶点的抛物线,如果a>0,那么抛物线开口向上,如果a<0,抛物线向下张开。针对函数性质,现在利用Authorware动态绘制出它的曲线图。(执行界面如插图1所示)

Authorware具有强大的多媒体处理功能,5.1版本的数学函数有二十多个,但没有直接处理二次函数的系统函数,我们可以利用其他的方法绘制出二次曲线,下面就用实际例子去解决这问题。(插图2为第一层的流程线)
先打开Authorware 5.1,新建一文件,取名为“二次函数”。先建立一个计算图标Setwindows,它的内部数据如插图3所示。
ResizeWindow(640, 480)是设置执行窗口的大小,我们选取普通640*480的显示模式。a:=1;b:=0;c:=0是设定二次函数3个系数的初始值。
第二个计算图标(如插图4所示),它主要是设置本软件的背景图。这个计算图标的意图主要是将整个展示窗口分为3个区域,左上区是绘图区,右上区是说明、提示、帮助区,下半部份是输入数值区。ShowTitleBar(Off/On)是隐藏或者展示窗口中的用户菜单,ShowMenuBar(Off/On)--隐藏或展示窗口中的用户标题栏,这里都选取隐藏。这里重复利用了多个绘图函数,函数SetFill(flag [, color])用于设置使用绘图函数时是否填充,并可以设置填充的颜色。Flag 是真,填充;是假,不填充(真可以用1、True、Y等代替,假可以用0、False、N等代替),用RGB函数计算颜色color。RGB(R,G,B)组合R(红色),G(绿色)和B(蓝色)值进入单一的颜色值。每个组成数字介于0和255。如何设定这3个数字呢?其实很简单,你可以利用Windows所带的画笔或者其他的一些绘画软件,在编辑颜色时,选定你需要的颜色,旁边辅助工具显示出那种颜色的RGB数值。SetFill(flag [, color])用于设置使用绘图函数时是否填充,并可以设置填充的颜色。Flag是真,填充;是假,不填充,用 RGB 函数计算颜色color。SetFrame(flag [, color])用于设置使用绘图函数时是否含有边框,并可以设置边框的颜色。Box(pensize, x1, y1, x2, y2)是根据提供的两点坐标(x1,y1)和(x2,y2)画一个矩形,边框的线宽为pensize。画出的矩形边线是黑色里面是白色,除非用SetFrame和SetFill改变。Line(pensize, x1, y1, x2, y2)根据提供的两点坐标(x1,y1)和(x2,y2)使用线宽pensize画一条直线。直线的颜色是黑色,除非在SetFrame 函数中设定可以改变。SetLine(type)用于设置直线的形状:0=无箭头,1=开始有箭头,2=结束有箭头, 3=两端有箭头。这里画XoY坐标时,选择2。对照插图4,我们就可以做出插图1所显示的背景图。这里的表格、坐标等都是单纯用作图函数直接画出,相比用Authorware的作图工具更具有灵活性、准确性、高效性。需要注意的是,由于设定的内容比较多,而这些设定会相互影响,一定要小心,并且要多测试,防止出现漏洞。

插图1的About交互图标采用了按键交互,一个是帮助,用来说明使用软件注意问题等内容,一个是退出程序。里面用到了2个系统函数,Restart()和Quit()。Restart()从文件的初始状态执行,重新运行时所有变量都被初始化,Restart只能用于计算图标,没有任何参数。Quit(option)是退出文件函数,其中0代表离开程序管理器或如果从另一个文件转入则返回文件;1设定退出程序管理器;参数2是重新启动Windows(在 Wind 3.1 中退到 DOS);3是关闭电脑(在Win3.1不能使用)。
屏幕下半部份是用于输入3个系数a、b、c,使用变量直接显示输入的a、b、c的输入值,将这显示图标的Properties(属性)设定为Update Displayed Variables(自动更新显示变量)和Prevent Automatic Erase(防止自动擦除),目的是为了让每次的输入数据可以马上同步出现,并且一直在显示。
在intup_abc群组图标里面,是3个交互图标和6个计算图标(如插图5所示),3个交互图标采用Text Entry(文本输入),用于输入曲线的3个系数abc。

在交互图标属性里面有个Text Field(文本区域),在Layout(版面设计)中可以设置Auto-Entry at Limit(在界限处自动登录),在Character Limit(字符界限)中设定5个就自动登录进去,在Interaction交互属性中选定Ignore Null Entries(忽略空输入),避免没输入字符就继续运行,在Text Mode(文本模式)中选择Transparent(透明),使输入内容和背景和谐。为了可以输入文本,在交互图标下的计算图标设置a:=NumEntry,变量NumEntry表示用户在文本交互中所输入的数字,参数b、c设置方法是相同的。在每个交互图标下都有一个计算图标(如插图6所示)进行输入数值判断,因为坐标的长度有限,我们绘制的二次函数曲线是一个压缩的图标,所以要限制输入的3个参数的取值范围,经过考虑实际情况和尝试,决定a、b限制在正负100,C限制在正负120之间,所以计算图标中加条件语句If...Then...,目的就是限制输入数值,如果超过了设定值,就返回继续输入,直到符合限制要求。
因为二次函数要求二次系数a不能为零,所以在输入数据后,流程线上还加上一个判断if a=0 then GoTo(IconID@"000"),当a=0时,转到执行图标ID为“000”处(插图7),它的作用就是显示输入数据出错,重新输入数值。

输入了数据之后,利用Authorware的系统函数来绘制二次曲线。在主流程线上Show交互图标下有2个群组a>0和a<0,里面的内容样式是一样的(见插图8)。在绘制图形之前,有个判断(插图9),h:=b/a/2;if ABS(h)>23 then GoTo (IconID@"overflow")这里的意思其实就是限制图形要在绘图区内,和前面同样的道理,由于坐标长度限制,当h过大提示重新输入系数a、b(主要是Abs(b/a)>46时进行限制,因为这时图形已经开始超出绘图区),图标ID“overflow”的部分,就是提示出错和重新返回输入系数数值。

整个课件的灵魂在计算图标“Draw”里面(见插图10),这里的repeat with i:= -240 to 240 就是让变量i从-240到240进行全部取值,这个数量段的取值是不定的,一般和显示图形的窗口大小相关,基本上与绘图区像素的点数相近为宜(如现在的绘图区的像素是640*480)。语句y:=-((((a*i*i)/(480*(ABS(a))))+((b)*i/(480*ABS(b+0.001)))))-(c)就是绘制二次函数曲线图形,它分3部分,分别对应函数的二次、一次、常数项,因为Au

