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