胡 海 王 芳
(黃石市第九中學(xué) 湖北 黃石 435000)
模擬仿真課件是指利用計(jì)算機(jī)建模和仿真技術(shù)來(lái)表現(xiàn)某些系統(tǒng)的結(jié)構(gòu)和動(dòng)態(tài),為學(xué)生提供一種可供他們體驗(yàn)和觀測(cè)的環(huán)境,產(chǎn)生各種與現(xiàn)實(shí)世界相類似的現(xiàn)象,供學(xué)生觀察,幫助學(xué)生認(rèn)識(shí)和理解這些規(guī)律與現(xiàn)象的本質(zhì).具有形象直觀、經(jīng)濟(jì)安全、不受條件限制、控制事物的變化速度等特征,能夠激發(fā)學(xué)生的學(xué)習(xí)動(dòng)機(jī),控制學(xué)習(xí)情境的復(fù)雜度和逼真度,有一定的時(shí)效性.而物理是一門(mén)以觀察、實(shí)驗(yàn)為基礎(chǔ)的學(xué)科,由于客觀條件的限制,理想實(shí)驗(yàn)環(huán)境的搭建存在一定的局限性,使實(shí)驗(yàn)效果與預(yù)期存在較大的誤差或難以實(shí)現(xiàn),實(shí)驗(yàn)數(shù)據(jù)的獲取和處理也會(huì)影響結(jié)果的分析.利用計(jì)算機(jī)仿真技術(shù)來(lái)模擬虛擬儀器和實(shí)驗(yàn)平臺(tái)等實(shí)驗(yàn)環(huán)境,演示實(shí)驗(yàn)過(guò)程,并給學(xué)生用自然的交互手段進(jìn)行實(shí)驗(yàn)操作,按照真實(shí)實(shí)驗(yàn)的邏輯,得出實(shí)驗(yàn)結(jié)果,克服實(shí)際操作中同步同時(shí)帶來(lái)的困難和數(shù)據(jù)獲取的即時(shí)性、有效性,利用計(jì)算機(jī)強(qiáng)大的建模和數(shù)據(jù)分析能力,將事物進(jìn)行模型化分析,揭示一定數(shù)量關(guān)系或變化規(guī)律,有助于學(xué)生對(duì)規(guī)律的深刻認(rèn)識(shí),提高物理核心素養(yǎng),有效解決學(xué)習(xí)的難點(diǎn),可以代替或補(bǔ)充傳統(tǒng)的實(shí)驗(yàn)手段.
下面以八年級(jí)物理“測(cè)量平均速度”為例,結(jié)合Box2D引擎,闡述此類仿真課件的設(shè)計(jì)思想和實(shí)現(xiàn)方法.
在物理教學(xué)或?qū)W生學(xué)習(xí)活動(dòng)過(guò)程中,絕大部分內(nèi)容都是以2D平面模型為基礎(chǔ)向?qū)W生傳達(dá)知識(shí)的,旨在引導(dǎo)和培養(yǎng)學(xué)生從抽象中建立精準(zhǔn)物理模型的思維習(xí)慣.Box2D是一個(gè)開(kāi)源、輕量級(jí)、高性能的二維物理仿真引擎,可用來(lái)模擬2D剛體(類似于物體)的運(yùn)動(dòng)和碰撞,結(jié)合語(yǔ)言工具,非常適合用來(lái)開(kāi)發(fā)中學(xué)物理仿真課件,提高制作效率.該引擎集成了大量的物理力學(xué)和運(yùn)動(dòng)學(xué)的計(jì)算,將物理模擬過(guò)程封裝到類對(duì)象中,將對(duì)物體的操作以簡(jiǎn)單友好的接口提供給開(kāi)發(fā)者,物體具有質(zhì)量、體積、密度、摩擦因子等物理屬性,開(kāi)發(fā)時(shí)只需要調(diào)用引擎中相應(yīng)的對(duì)象或方法就可以模擬現(xiàn)實(shí)生活中的加速、減速、拋物線運(yùn)動(dòng)、萬(wàn)有引力、碰撞反彈等等各種真實(shí)的物理運(yùn)動(dòng).廣泛應(yīng)用于PC,Web(HTML5),iOS,Android等平臺(tái)的物理游戲開(kāi)發(fā)中(例如游戲《憤怒的小鳥(niǎo)》),并被廣大的開(kāi)發(fā)者們轉(zhuǎn)譯成C#,Java,JavaScript,ActionScript3.0(以下簡(jiǎn)稱AS3)等多個(gè)語(yǔ)言版本.開(kāi)發(fā)工具使用AnimateCC(原名Flash),是一種集動(dòng)畫(huà)創(chuàng)作與應(yīng)用程序開(kāi)發(fā)于一身的創(chuàng)作軟件,擁有較多的使用人群,使用面向?qū)ο蟮木幊陶Z(yǔ)言AS3,為創(chuàng)建富媒體數(shù)字動(dòng)畫(huà)、高級(jí)交互式Web站點(diǎn)、桌面應(yīng)用程序以及手機(jī)應(yīng)用程序開(kāi)發(fā)提供了功能全面的創(chuàng)作和編輯環(huán)境.將課件編譯成獨(dú)立運(yùn)行的微件,碎片化處理,使用靈活,便于在網(wǎng)絡(luò)、電子白板等其他教學(xué)工具上進(jìn)行傳播學(xué)習(xí),還可以發(fā)布為Android應(yīng)用程序在手機(jī)或平板上學(xué)習(xí).
課件設(shè)計(jì)思想是把解決學(xué)習(xí)問(wèn)題放在第一位,突出重點(diǎn),解決教學(xué)或?qū)W習(xí)中的難點(diǎn)問(wèn)題、關(guān)鍵問(wèn)題,提高學(xué)生學(xué)習(xí)的主動(dòng)性和探究能力,能滿足教師教學(xué)演示和學(xué)生自主學(xué)習(xí)的需求.在課件結(jié)構(gòu)上,采用模塊化思想,變“線性結(jié)構(gòu)”為“非線性結(jié)構(gòu)”,增強(qiáng)課件的交互性和操作的人性化,使課件能夠根據(jù)教與學(xué)的需要隨意調(diào)度.學(xué)習(xí)策略上注重“歸納”和“演繹”的思維方法.界面設(shè)計(jì)盡量簡(jiǎn)潔,突出主體.以“測(cè)平均速度”為例,課件能夠?qū)崿F(xiàn)實(shí)驗(yàn)器材的使用、實(shí)驗(yàn)平臺(tái)的搭建、實(shí)驗(yàn)數(shù)據(jù)的采集與分析、課后練習(xí)與鞏固等.因此具備以下5個(gè)功能:
(1)交互模擬各類物理儀器的使用和實(shí)驗(yàn)平臺(tái)的搭建;
(2)模擬呈現(xiàn)真實(shí)的物理運(yùn)動(dòng)和碰撞;
(3)自然的人機(jī)交互能力,真實(shí)模擬實(shí)驗(yàn)操作過(guò)程;
(4)實(shí)時(shí)獲取相關(guān)數(shù)據(jù)和較強(qiáng)的可視化分析能力,便于歸納得出實(shí)驗(yàn)結(jié)論;
(5)通過(guò)教師引導(dǎo),創(chuàng)造性安排課后拓展實(shí)驗(yàn)練習(xí),鞏固所學(xué)知識(shí).
課件分為基礎(chǔ)知識(shí)準(zhǔn)備部分、情景導(dǎo)入生活中的物理模型、實(shí)驗(yàn)平臺(tái)搭建和調(diào)試、實(shí)時(shí)模擬仿真探究、數(shù)據(jù)記錄與分析、運(yùn)動(dòng)可視化分析和課后練習(xí)鞏固等7部分,結(jié)構(gòu)圖如圖1所示.課件內(nèi)的部分物件采用Animate矢量繪圖功能進(jìn)行建模,物理運(yùn)動(dòng)和碰撞等環(huán)境則采用引擎仿真技術(shù)進(jìn)行建模,其他部分利用AS3的面向?qū)ο缶幊趟枷?,制作成類,便于后續(xù)調(diào)度使用,整個(gè)課件為非線性結(jié)構(gòu),菜單設(shè)計(jì)簡(jiǎn)潔,按需調(diào)用或隱藏,教學(xué)靈活,適合不同的教學(xué)演示和自主探究,展現(xiàn)其獨(dú)有的教學(xué)風(fēng)格和思想,具有一定的開(kāi)放性.
圖1 “測(cè)量平均速度課件”仿真課件功能結(jié)構(gòu)圖
仿真課件的開(kāi)發(fā)遵循軟件開(kāi)發(fā)的一般步驟,依次是需求分析、設(shè)計(jì)、開(kāi)發(fā)、測(cè)試、修改反復(fù)直至最后正式發(fā)布,仿真課件的制作目標(biāo)是構(gòu)建一個(gè)虛擬逼真的物理環(huán)境,其主要開(kāi)發(fā)流程分為物件類的創(chuàng)建、二維平面的建模和場(chǎng)景交互三大部分.其中物件類的建模由AnimateCC結(jié)合AS3語(yǔ)言創(chuàng)建,二維平面物理模型由Box2D AS3版物理引擎創(chuàng)建,并導(dǎo)入先前創(chuàng)建的其他類以備調(diào)用,場(chǎng)景交互利用鼠標(biāo)、鍵盤(pán)、幀頻和時(shí)間類事件進(jìn)行代碼編寫(xiě)完成,最后進(jìn)行貼圖和反復(fù)調(diào)試等.
根據(jù)課件需求,需要用到的物件有刻度尺、停表、數(shù)據(jù)表格和坐標(biāo)系等,分別命名為Ruler.as,StopWatch.as,vTable.as和Axis.as類,此類物件不需要物理引擎,直接在AnimateCC中編寫(xiě)代碼進(jìn)行數(shù)學(xué)建模.類文件應(yīng)該具有良好的類方法和屬性,便于在導(dǎo)入類時(shí)對(duì)其進(jìn)行操作和設(shè)置.
Ruler類用于創(chuàng)建刻度尺.能初始化其分度值和量程屬性,通過(guò)添加鼠標(biāo)事件,可實(shí)現(xiàn)刻度尺隨意拖動(dòng)和旋轉(zhuǎn)的功能.
StopWatch類用于創(chuàng)建停表.具有獲取分鐘、秒鐘、啟動(dòng)或暫停、復(fù)位時(shí)間的方法,目的是后期開(kāi)發(fā)時(shí),能夠通過(guò)調(diào)用相應(yīng)的方法協(xié)同物體運(yùn)動(dòng)工作.給按鈕添加鼠標(biāo)事件實(shí)現(xiàn)交互,實(shí)現(xiàn)獨(dú)立使用.為增加可玩性,還給分針和秒針添加鼠標(biāo)拖動(dòng)旋轉(zhuǎn)事件,手動(dòng)調(diào)時(shí)和隨機(jī)時(shí)間等.
創(chuàng)建Ruler和StopWatch實(shí)例,結(jié)合x(chóng)ml,xmlList類隨機(jī)讀取外部圖片的物體信息,模擬測(cè)量物體的長(zhǎng)度填入文本框,用鼠標(biāo)將停表調(diào)到隨機(jī)指定的時(shí)間,完成課前基礎(chǔ)知識(shí)準(zhǔn)備模塊的制作,系統(tǒng)自動(dòng)判斷結(jié)果,類似于許多網(wǎng)站中的驗(yàn)證碼功能,正確便可進(jìn)入主課程界面的學(xué)習(xí).
vTable類用于制作實(shí)驗(yàn)數(shù)據(jù)記錄表格.將測(cè)量數(shù)據(jù)填入相應(yīng)的文本框,利用鍵盤(pán)輸入事件對(duì)數(shù)據(jù)進(jìn)行校驗(yàn),限制只能輸入精確到兩位小數(shù)的數(shù)字(刻度尺要進(jìn)行估讀的學(xué)習(xí)要求),速度根據(jù)需要自動(dòng)計(jì)算結(jié)果.
Axis類用于創(chuàng)建坐標(biāo)系.屬性有橫軸長(zhǎng)度、縱軸長(zhǎng)度、橫軸刻度、縱軸刻度、橫縱軸標(biāo)注等,方法有繪制坐標(biāo)點(diǎn)、依點(diǎn)連線、點(diǎn)線顏色、是否網(wǎng)格等,用于可視化圖像分析路程與時(shí)間變化.
(1)引擎使用的尺度單位是米,需定義像素轉(zhuǎn)換常量;
(2)定義重力向量和剛體的睡眠狀態(tài);
(3)創(chuàng)建b2World物理世界對(duì)象;
(4)添加幀頻或計(jì)數(shù)器事件,刷新世界讓引擎運(yùn)動(dòng)起來(lái);
(5)調(diào)試視圖渲染剛體.
主要代碼如下:
import Box2D.*;//導(dǎo)入Box2D相關(guān)類
const pixTometer: Number = 30;//定義像素-米轉(zhuǎn)換常量
var world: b2World = new b2World(new b2Vec2(0, 10), true);//定義重力并創(chuàng)建世界
羅扎諾夫在《陀思妥耶夫斯基的一個(gè)卓越想法》(Одна из замичательных идей Достоевского)一文中評(píng)論了《地下室手記》中提出的思想,提出了“瘙癢”的觀念或想法:
stage.addEventListener(Event.ENTER_FRAME, updateWorld); //幀頻事件更新世界
var debugSprite = new Sprite();
addChild(debugSprite);//添加渲染精靈
var debug: b2DebugDraw = new b2DebugDraw();
debug.SetSprite(debugSprite);//顯示繪制剛體
world.SetDebugDraw(debug);
世界創(chuàng)建好后,便可以向世界添加創(chuàng)建剛體,構(gòu)建模擬實(shí)驗(yàn)平臺(tái).根據(jù)實(shí)驗(yàn)需求,需要?jiǎng)?chuàng)建的靜態(tài)剛體有方形地面、三角形斜面、方形靜態(tài)擋板和Box墻面.其中斜面通過(guò)鼠標(biāo)事件可調(diào)整高度和傾角,斜面上的擋板可自動(dòng)調(diào)整位置和角度;墻面的作用是防止誤操作時(shí)使動(dòng)態(tài)物體逃逸實(shí)驗(yàn)平臺(tái);單擊靜態(tài)擋板可使動(dòng)態(tài)物體初速度為零,在重力作用下自由運(yùn)動(dòng)和碰撞.
需要?jiǎng)?chuàng)建的動(dòng)態(tài)剛體有圓形小球、小車、動(dòng)態(tài)擋板,這是實(shí)驗(yàn)研究的主要對(duì)象.其中小車的創(chuàng)建使用到b2RevoluteJoint旋轉(zhuǎn)關(guān)節(jié),將兩個(gè)圓形動(dòng)態(tài)剛體約束到方形動(dòng)態(tài)剛體上,構(gòu)建模擬真實(shí)的小車;動(dòng)態(tài)擋板剛體添加鼠標(biāo)事件可進(jìn)行拖動(dòng)設(shè)置,作用是使物體運(yùn)動(dòng)結(jié)束,結(jié)合Sound類導(dǎo)入外部音頻資源,可模擬物理碰撞的聲音,聲臨其境.
同時(shí)設(shè)置各種剛體的初始位置、動(dòng)/靜態(tài)屬性、夾具形狀、密度、摩擦因子、碰撞彈性恢復(fù)系數(shù)和約束關(guān)節(jié)屬性、運(yùn)動(dòng)阻尼、是否睡眠等,提高引擎運(yùn)行效能.后期利用自定義屬性對(duì)這些物體進(jìn)行貼圖美化,達(dá)到良好的視覺(jué)效果.未貼圖效果如圖2所示.
圖2 “測(cè)量平均速度”仿真課件主界面
交互性是衡量仿真課件的一個(gè)重要指標(biāo).上述每個(gè)物件有其自身交互功能之外,在整個(gè)課件系統(tǒng)中,為完成特定的教學(xué)目標(biāo)和功能,還具有其他可操作功能,接近自然的人機(jī)交互能力,還能夠協(xié)同工作,這得益于AnimateCC強(qiáng)大的事件處理能力.例如,小球、小車、擋板可隨鼠標(biāo)拖動(dòng),物理模擬仿真關(guān)節(jié),刻度尺和停表自帶的交互功能進(jìn)行長(zhǎng)度和時(shí)間的測(cè)量練習(xí)等.單擊鼠標(biāo)撤去擋板,物體即可運(yùn)動(dòng),同時(shí)停表即可開(kāi)始記錄,協(xié)同操作,解決實(shí)際操作過(guò)程中不能同時(shí)操作的現(xiàn)象,影響實(shí)驗(yàn)效果.另外,可視化數(shù)據(jù)分析能力可實(shí)時(shí)將時(shí)間和路程數(shù)據(jù)顯示在坐標(biāo)系中,頻閃攝影通過(guò)繪圖函數(shù)在幀頻事件中按固定時(shí)間顯示繪制物體所在的位置,展現(xiàn)其軌跡,可視化分析物體的運(yùn)動(dòng)特征.
界面交互是非仿真部分,設(shè)計(jì)則較為簡(jiǎn)潔易用,只需單擊復(fù)選框達(dá)到顯示或隱藏的功能,平行化設(shè)計(jì).
Box2D 是一個(gè)非常優(yōu)秀的 2D 開(kāi)源物理引擎,大大降低了仿真課件的制作難度和復(fù)雜程度,結(jié)合AnimateCC高效的生產(chǎn)力工具,可以制作出優(yōu)異的物理仿真課件,盡管Flash插件被許多平臺(tái)所限制,但在教育群體中被許多教師所使用,也很容易轉(zhuǎn)移到其他平臺(tái)繼續(xù)開(kāi)發(fā).在教學(xué)中,利用課件進(jìn)行建模和數(shù)據(jù)可視化分析,培養(yǎng)學(xué)生的科學(xué)思維,自然的人機(jī)交互操作進(jìn)行科學(xué)探究,使學(xué)生形成正確的物理觀念和科學(xué)態(tài)度,提高物理核心素養(yǎng).如果將課件通過(guò)網(wǎng)絡(luò)發(fā)放給學(xué)生,安排一定的實(shí)驗(yàn)練習(xí)(例如測(cè)量小球從斜面下滑的平均速度、小球自由落體的平均速度、指定斜面的傾角測(cè)出小車下滑的平均速度等),將課堂進(jìn)行擴(kuò)展延伸,打破時(shí)間和空間的限制,促進(jìn)課堂教學(xué)的深層次改革,更有利于培養(yǎng)學(xué)生的創(chuàng)新能力.通過(guò)實(shí)踐教學(xué)發(fā)現(xiàn),學(xué)生也非常喜歡.仿真技術(shù)提供生動(dòng)、逼真的物理模擬平臺(tái),解決了學(xué)習(xí)過(guò)程中的實(shí)驗(yàn)操作難點(diǎn),實(shí)現(xiàn)了“以教促學(xué)”的教學(xué)方式向“以學(xué)生為主體”“學(xué)生自主探究學(xué)習(xí)”方式轉(zhuǎn)變,在提高課程核心素養(yǎng)中發(fā)揮著越來(lái)越重要的作用.