連線并計(jì)算距離
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-------鼠標(biāo)指針到左邊界及上邊界的像素點(diǎn)數(shù)目;int()----取整函數(shù)。
在顯示圖標(biāo)中輸入下列內(nèi)容:“|m{ms}f1|+|m{ms}f2|={mf}”,并顯示適當(dāng)區(qū)域,這樣程序運(yùn)行時(shí),只要在界面上任意點(diǎn)擊一些點(diǎn),計(jì)算機(jī)會(huì)自動(dòng)連接該點(diǎn)到兩定點(diǎn)的連線段,并計(jì)算該點(diǎn)到兩定點(diǎn)f1、f2的距離。學(xué)生可自己動(dòng)手任意點(diǎn)擊,通過計(jì)算機(jī)演示比較,引導(dǎo)學(xué)生尋找規(guī)律,由學(xué)生總結(jié)發(fā)現(xiàn)規(guī)律,然后教師歸納,從而得出橢圓的定義:把平面內(nèi)與兩個(gè)定點(diǎn)f1、f2的距離的和等于常數(shù)(大于|f1f2|)的點(diǎn)的軌跡叫做橢圓。這兩個(gè)定點(diǎn)叫做橢圓的焦點(diǎn) ,焦點(diǎn)間距離叫做焦距。上述定值常數(shù)常用2a表示。焦距用2c表示,因此有2a>2c。
同時(shí)針對(duì)定義進(jìn)一步提出問題:為什么2a一定要大于2c呢?如果a取不同的值,會(huì)得到什么樣的軌跡呢?接下去可利用authorware良好的交互性,繼續(xù)這樣設(shè)計(jì):通過計(jì)算機(jī)提示用戶:“已知兩定點(diǎn)間距離2c=240,即c=120,接下來出現(xiàn)文本框讓你輸入a的任意值,計(jì)算機(jī)將依據(jù)你的值畫軌跡,但不一定是橢圓,如入不同的值將產(chǎn)生不同的響應(yīng)。a可能大于120或等于120或小于120。程序設(shè)計(jì)
如下:
其中“numentry>=120&numentry<=240”群組圖標(biāo)是限制畫軌跡的范圍,以防畫出的橢圓超出界面,“numentry<120” 群組圖標(biāo)里放的是顯示圖標(biāo)表示2a<2c時(shí)不能畫橢圓。在“numentry>=120&numentry<=240”群組圖標(biāo)里放的是計(jì)算圖標(biāo)其中內(nèi)容如下:
畫橢圓
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
當(dāng)a<c時(shí),不能畫橢圓,a=c時(shí),只能得到一條直線,a>c時(shí),會(huì)得到一個(gè)橢圓。通過交互從而強(qiáng)調(diào)定義中兩長(zhǎng)度的和必須大于焦距的長(zhǎng),即a必須大于焦距c的長(zhǎng),加深對(duì)橢圓定義的理解。
二、authorware函數(shù)作圖原理延伸
通上所述,authorware畫軌跡的原理是通過描點(diǎn)法,就是按照預(yù)定的方程去描點(diǎn),就能得到所需的軌跡圖,比如拋物線的畫法和橢圓畫法原理一樣,程序如下:
設(shè) 置 初 值
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
再有:設(shè)a、b是線段的兩端點(diǎn),其在坐標(biāo)軸上移動(dòng),可以用line函數(shù)畫出所有的ab線段,用eraseicon函數(shù)擦除當(dāng)前線段外的所有線段,使得在演示窗口只顯示當(dāng)前線段。可以在authorware上放三個(gè)計(jì)算圖標(biāo),內(nèi)容如下:
設(shè) 置 初 值
sx:=360
sy:=200
t1:=0
y1:=0
setline(2) --帶箭頭坐標(biāo)
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
同理雙曲線運(yùn)動(dòng)軌跡的畫法一樣,請(qǐng)感興趣的朋友試試。
三、利用authorware制作轉(zhuǎn)動(dòng)的立方體
只要你深入研究authorware還可畫更為復(fù)雜的函數(shù)圖像,只要你熟練掌握authorware函數(shù)功能和良好的數(shù)學(xué)功底。下面利用authorware制作轉(zhuǎn)動(dòng)的立方體,整個(gè)程序流程圖如下:
其中“賦值”計(jì)算圖標(biāo)內(nèi)容為:
setframe(3, rgb(0,0,250))
x0:=400
y0:=1000
a:=5
b:=260
判斷圖標(biāo)屬性設(shè)置如下:
“作圖”計(jì)算圖標(biāo)內(nèi)容為:
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)
接下來你可以運(yùn)行一下看看效果,一個(gè)旋轉(zhuǎn)的立方體就展現(xiàn)在你面前了,雖然“作圖”計(jì)算圖標(biāo)內(nèi)容較多,但原理很簡(jiǎn)單,相信大家都能看懂。
authorware函數(shù)功能強(qiáng)大,只要你善于挖掘,完全可以畫出更為復(fù)雜的軌跡圖形,這里我也不再贅述,希望本文對(duì)你有所啟發(fā),挖掘authorware強(qiáng)大的函數(shù)功能,開發(fā)出交互性更好、更科學(xué)、更準(zhǔn)確的教學(xué)軟件。
注:以上程序在計(jì)算機(jī)上調(diào)試過,請(qǐng)放心使用。
新聞熱點(diǎn)
疑難解答