卞龍寶 王洪根
摘要:本文簡要介紹了通過Flash交互動畫演示力的動態(tài)平衡過程的意義和方法。
關(guān)鍵詞:Flash;動畫;動態(tài)平衡;過程
中圖分類號:G633.7 文獻(xiàn)標(biāo)識碼:A文章編號:1003-6148(2009)11(S)-0055-2
高中物理教學(xué)中常用圖解法來分析、解決力的動態(tài)平衡問題,其基本思路是選擇物體處在動態(tài)變化過程中的幾個不同典型位置,依據(jù)平衡條件采用同一標(biāo)度作出物體受力圖并疊加在一起,然后據(jù)圖比較確定動態(tài)平衡過程中各力的變化情況及變化趨勢。圖解法解決力的動態(tài)平衡問題具有形象、直觀的特點(diǎn)。然而,不難看出圖解法中所謂的“過程”是通過幾個分立、間斷的平衡狀態(tài)來構(gòu)成的,并不具有連續(xù)性。因此,圖解法并不能讓學(xué)生真正“見證”完整連續(xù)的力的動態(tài)平衡過程及具體細(xì)節(jié)。實(shí)際教學(xué)中,筆者利用Flash MX 2004制作“力的動態(tài)平衡過程動畫演示”教學(xué)軟件(界面如圖1所示),發(fā)揮編程優(yōu)勢通過交互動畫實(shí)時演示,化靜為動,變間斷為連續(xù),讓學(xué)生"觀察"到了力的動態(tài)平衡完整變化過程及具體細(xì)節(jié),輔助力的動態(tài)平衡問題教學(xué),收到了良好的效果。下面以圖1中實(shí)例為例簡要介紹軟件的制作思路以及核心功能語法的實(shí)現(xiàn)。
1 制作思路
圖1中實(shí)例原題為:如圖用一檔板將小球夾在檔板和光滑斜面之間,若緩慢轉(zhuǎn)動擋板,使其逆時針轉(zhuǎn)至水平,試確定此過程中球?qū)醢宓膲毫扒驅(qū)π泵鎵毫Φ淖兓闆r。
可以分析,因動態(tài)平衡過程中涉及擋板的轉(zhuǎn)動及球的移動,在軟件場景中應(yīng)將球及擋板設(shè)置成獨(dú)立的影片剪輯。因物體所受各力(重力、斜面支持力、擋板彈力)及合力在動態(tài)平衡過程中存在變化,表示這些力的圖示也應(yīng)設(shè)置成單獨(dú)的影片剪輯。另因物體所受各力是作用在物體上的,所以這些影片剪輯必需內(nèi)嵌在物體影片剪輯之中。此外,動畫中還應(yīng)有一個能交互改變角度參量的按鈕(或拖動條),見圖1下方。
2 核心功能語法實(shí)現(xiàn)
軟件設(shè)計的關(guān)鍵是構(gòu)建兩函數(shù):一是作圖函數(shù),二是刷新函數(shù)。前者的功能是確定球體位置及畫受力圖,后者的作用是在進(jìn)行交互操作時對作圖函數(shù)實(shí)現(xiàn)同步更新。
在本例中,由物體間幾何關(guān)系及力的平行四邊形法則可構(gòu)建如下作圖函數(shù):
function zt(θ) {
radians = θ*Math.PI/180;//將弧度換成角度,θ為擋板與斜面夾角(角度),是本過程中的控制變量
bo = (radius/2)/Math.sin(radians/2);
//計算bo間距離,radius為球半徑
od = w*Math.sin(5*Math.PI/6-radians)/Math.sin(radians);
oe = w*Math.sin(Math.PI/6)/Math.sin(radians);
//依據(jù)正弦定理計算兩分力大小,w為球自身重力大小
b._rotation = -1*θ-30; //設(shè)置擋板(b)轉(zhuǎn)動后角度值,30是斜面傾角
with (qiu) {
_x = b._x0+bo*Math.cos(radians/2+Math.PI/6);
_y = b._y0-bo*Math.sin(radians/2+Math.PI/6);
//計算并設(shè)置球的位置,b._x0、 b._y0為b點(diǎn)橫、縱坐標(biāo)值
fod._rotation = -30;
foe._rotation = -1*θ+150;
//設(shè)置兩分力轉(zhuǎn)動后角度值
fod._yscale = od;
foe._yscale = oe;
//設(shè)置兩分力垂直縮放比例,同比對應(yīng)力大小
}
x1 = b._x0+bo*Math.cos(radians/2+Math.PI/6);
y1 = b._y0-bo*Math.sin(radians/2+Math.PI/6)-w;
//獲取點(diǎn)A坐標(biāo)
x2 = b._x0+bo*Math.cos(radians/2+Math.PI/6)-od*Math.sin(Math.PI/6);
y2 = b._y0-bo*Math.sin(radians/2+Math.PI/6)-od*Math.cos(Math.PI/6);
//獲取點(diǎn)D坐標(biāo)
x3 = b._x0+bo*Math.cos(radians/2+Math.PI/6)-oe*Math.sin(-radians-Math.PI/6);
y3 = b._y0-bo*Math.sin(radians/2+Math.PI/6)+oe*Math.cos(-radians-Math.PI/6);
//獲取點(diǎn)E坐標(biāo)
drawLine(x1, y1, x2, y2, 1);
drawLine(x1, y1, x3, y3, 2);
//借助drawLine ( )函數(shù)在AD及AE間畫連接虛線
}
對作圖函數(shù)的刷新是通過以影片剪輯幀頻不斷觸發(fā)的事件處理函數(shù)onEnterFrame來實(shí)現(xiàn)的。交互按鈕的語句具體如下:
on (Press) {
pressed = true
startDrag("",true ,left ,top ,right , top )
this.onEnterFrame = function() {
//執(zhí)行onEnterFrame事件處理函數(shù)
if (pressed) {
varθ= (this._x-left)/( right - left)*105+45;
zt(θ)
// 獲取θ并執(zhí)行zt(θ),45為θ初始值
}
}
on (Release) {
pressed = false
stopDrag()
delete this.onEnterFrame
//刪除onEnterFrame,釋放內(nèi)存和CPU占有率
}
在中學(xué)物理教學(xué)中,凡是具有定量關(guān)系的變化規(guī)律,都可以將其中一變量設(shè)置成控制變量,采用上面的模式通過交互動畫來形象、直觀地演示相應(yīng)規(guī)律隨控制變量變化的完整動態(tài)變化過程及具體細(xì)節(jié)。
(欄目編輯王柏廬)