连线并计算距离
fo:=sx-c
ft:=sx+c
pointx:=clickx
pointy:=clicky
setframe(1,rgb(255,0,0))
line(1,fo,sy,pointx,pointy)
line(1,pointx,pointy,ft,sy)
js:=js+35
mf:=int(int((((clickx-fo)**2+(clicky-sy)**2)**0.5+
((clickx-ft)**2+(clicky-sy)**2)**0.5)*100)/100+0.5)
if mf=321 | mf=319 then
mf:=320
end if
ms:=ms+1
其中:clickx、clicky-------鼠标指针到左边界及上边界的像素点数目;int()----取整函数。
在显示图标中输入下列内容:“|m{ms}f1|+|m{ms}f2|={mf}”,并显示适当区域,这样程序运行时,只要在界面上任意点击一些点,计算机会自动连接该点到两定点的连线段,并计算该点到两定点f1、f2的距离。学生可自己动手任意点击,通过计算机演示比较,引导学生寻找规律,由学生总结发现规律,然后教师归纳,从而得出椭圆的定义:把平面内与两个定点f1、f2的距离的和等于常数(大于|f1f2|)的点的轨迹叫做椭圆。这两个定点叫做椭圆的焦点 ,焦点间距离叫做焦距。上述定值常数常用2a表示。焦距用2c表示,因此有2a>2c。
同时针对定义进一步提出问题:为什么2a一定要大于2c呢?如果a取不同的值,会得到什么样的轨迹呢?接下去可利用authorware良好的交互性,继续这样设计:通过计算机提示用户:“已知两定点间距离2c=240,即c=120,接下来出现文本框让你输入a的任意值,计算机将依据你的值画轨迹,但不一定是椭圆,如入不同的值将产生不同的响应。a可能大于120或等于120或小于120。程序设计
如下:
其中“numentry>=120&numentry<=240”群组图标是限制画轨迹的范围,以防画出的椭圆超出界面,“numentry<120” 群组图标里放的是显示图标表示2a<2c时不能画椭圆。在“numentry>=120&numentry<=240”群组图标里放的是计算图标其中内容如下:
画椭圆
sx:=360
sy:=200
c:=120
a:=numentry
b:=(a*a-c*c)**0.5
j1:=0
ds:=0
x1:=0
y1:=0
setline(0)
setframe(1,rgb(0,0,200))
repeat with j1:=0 to 1257
ds:=j1/200
y2:=b*cos(ds)
x2:=a*sin(ds)
line(1,sx+x1,sy-y1,sx+x2,sy-y2)
x1:=x2
y1:=y2
end repeat
当a<c时,不能画椭圆,a=c时,只能得到一条直线,a>c时,会得到一个椭圆。通过交互从而强调定义中两长度的和必须大于焦距的长,即a必须大于焦距c的长,加深对椭圆定义的理解。
二、authorware函数作图原理延伸
通上所述,authorware画轨迹的原理是通过描点法,就是按照预定的方程去描点,就能得到所需的轨迹图,比如抛物线的画法和椭圆画法原理一样,程序如下:
设 置 初 值
sx:=360
sy:=200
x1:=-80
y1:=-0.016*(2*x1**2-5*x1+2)
setline(0)
setframe(1,rgb(0,0,200))
画 线
x2:==x1+0.2
y2:=-0.016*(2*x2**2-5*x2+2)
line(3,sx+x1,sy+y1,sx+x2,sy+y2)
x1:=x2
y1:=y2
再 画 线
if x2<80 then
goto(iconid@"画线")
else
end if
再有:设a、b是线段的两端点,其在坐标轴上移动,可以用line函数画出所有的ab线段,用eraseicon函数擦除当前线段外的所有线段,使得在演示窗口只显示当前线段。可以在authorware上放三个计算图标,内容如下:
设 置 初 值
sx:=360
sy:=200
t1:=0
y1:=0
setline(2) --带箭头坐标
setframe(1,rgb(0,0,200))
line(3,360,350,360,20)
line(3,250,200,650,200)
setline(0)
setframe(1,rgb(0,0,255))
画 线
1:=260-27*t1
x2:=0
y2:=-50*t1
line(3,sx+x1,sy+y1,sx+x2,sy+y2)
t2:=t1+0.0013
t1:=t2
擦 除
eraseicon(iconid@"s")
if t1<2.8 then
goto(iconid@"s")
else
end if
同理双曲线运动轨迹的画法一样,请感兴趣的朋友试试。
三、利用authorware制作转动的立方体
只要你深入研究authorware还可画更为复杂的函数图像,只要你熟练掌握authorware函数功能和良好的数学功底。下面利用authorware制作转动的立方体,整个程序流程图如下:
其中“赋值”计算图标内容为:
setframe(3, rgb(0,0,250))
x0:=400
y0:=1000
a:=5
b:=260
判断图标属性设置如下:
“作图”计算图标内容为:
x:=x+1
x1:=200*cos(x/50)
y1:=200*sin(x/50)
x2:=200*cos(x/50+pi/2)
y2:=200*sin(x/50+pi/2)
x3:=200*cos(x/50+pi)
y3:=200*sin(x/50+pi)
x4:=200*cos(x/50+3*pi/2)
y4:=200*sin(x/50+3*pi/2)
line(3,x0+x1,(y0-y1)/a,x0+x2,(y0-y2)/a)
line(3,x0+x2,(y0-y2)/a,x0+x3,(y0-y3)/a)
line(3,x0+x3,(y0-y3)/a,x0+x4,(y0-y4)/a)
line(3,x0+x4,(y0-y4)/a,x0+x1,(y0-y1)/a)
line(3,x0+x1,(y0-y1)/a,x0+x1,b+(y0-y1)/a)
line(3,x0+x2,(y0-y2)/a,x0+x2,b+(y0-y2)/a)
line(3,x0+x3,(y0-y3)/a,x0+x3,b+(y0-y3)/a)
line(3,x0+x4,(y0-y4)/a,x0+x4,b+(y0-y4)/a)
line(3,x0+x1,b+(y0-y1)/a,x0+x2,b+(y0-y2)/a)
line(3,x0+x2,b+(y0-y2)/a,x0+x3,b+(y0-y3)/a)
line(3,x0+x3,b+(y0-y3)/a,x0+x4,b+(y0-y4)/a)
line(3,x0+x4,b+(y0-y4)/a,x0+x1,b+(y0-y1)/a)
接下来你可以运行一下看看效果,一个旋转的立方体就展现在你面前了,虽然“作图”计算图标内容较多,但原理很简单,相信大家都能看懂。
authorware函数功能强大,只要你善于挖掘,完全可以画出更为复杂的轨迹图形,这里我也不再赘述,希望本文对你有所启发,挖掘authorware强大的函数功能,开发出交互性更好、更科学、更准确的教学软件。
注:以上程序在计算机上调试过,请放心使用。
新闻热点
疑难解答