安徽 崔北元 李德川
拋體運動知識是高中物理運動學板塊的基礎內容,也是后續學生研究更為復雜運動的基礎。對拋體運動的研究,可以從重力場拓展至電磁場,以提高學生對知識運用的遷移能力。作為高中階段物理教學核心的知識點,如何能讓學生形象直觀的理解拋體運動過程是教學的關鍵。拋體運動過程可以借助理論推導,計算出物體運行的基本規律,也可以借助數值分析軟件對物體運動過程進行解析、還可以借助專業儀器,用傳感器實時采集物體的狀態,記錄物體運動過程;通過對拋體過程的理解,我們可以用拋體理論指導實踐活動,例如在體育運動中,利用最大速度下的最優化拋射角度提高投擲和跳躍成績;利用數值仿真預測足球的運行軌跡,分析足球的狀態。因此,在高中物理教學中,拋體運動的講授至關重要。
在物體運動狀態的分析中,利用公式可以推導出運動過程中的物體運動規律,數值模擬可以得到物體的運動參數,仿真模擬可實時再現物體的運動過程。傳統的書本教學難以用語言、公式和文字描述物體運動的動態過程,現場實驗又因物體的運動速度較快無法準確地捕捉運動過程。因此,我們擬采用Visual C++ 6.0對物體的狀態進行模擬仿真,用數值、曲線和動畫形象地再現物體的運動軌跡。該軟件生成的可執行exe文件,不需要安裝軟件運行環境,可以在常規電腦上運行,可移植性和便攜性強。而且,仿真系統可以任意設置物體拋射的初速度、物體的初始高度和物體的拋射角度,并且能顯示物體位置的實時參數,將抽象概念具體化,有助于學生逐幀理解和吸收,實現物理過程的高效理解。
平拋運動、豎直上拋運動、斜拋運動均屬于拋體運動,除了豎直上拋運動只是在豎直方向上有位置的變化,其他兩種運動均在水平與豎直兩個方向上移動位置。平拋運動:水平方向勻速直線運動,豎直方向上自由落體運動;斜拋運動:水平方向勻速直線運動,豎直方向為豎直上拋運動。這部分運動學知識在課本上主要以實驗的形式呈現,通過實驗加深學生對運動過程的理解,讓學生熟練掌握運動合成與分解的方法和技巧,將復雜運動轉化為簡單運動進行分析。可見,拋體運動是高中物理運動學中重要的運動類型,居物理教學中核心地位,貫穿整個高中物理學習。
在各個版本的高中物理教材中,對拋體運動的教學思維方式與側重點在一定層面上不盡相同,但是同樣又各有不足之處。人教版中在“質點在平面內的運動”一節中,“運動的合成與分解”并沒有明確提出研究物體運動的方法與過程,而對“拋體運動”內容也只是做了運動軌跡的簡單闡述,并沒有進行深入的剖析與運動過程的深刻描述。滬科版教材中體現了對“運動的合成與分解”的研究方法,并著重強調了運動的軌跡在實際與理想中的差異,更加符合教學思維與教學目的,但是對于物體做曲線運動時速度的方向、運動性質沒有進行講解。魯科版教材中各個章節相對獨立,對于方法的邏輯構架不夠明顯,在“運動的合成與分解”與“平拋,斜拋運動”之間可以有更多銜接,比如“運動的合成和分解”的研究方法同樣適用于拋體運動,而不僅僅局限于相互垂直的方向上。
拋體運動是高中物理學習中重要的運動形式,也是歷年來考查的重點,從生活的角度出發結合電場、磁場、機械能守恒定律等各個方向來進行考查。不僅要求學生對物理概念熟練掌握,同時還要對數學理論進行深入的了解,比如討論速度的合成與分解會用到數學向量的相關知識,平拋運動還需要學生具有一定的空間想象能力。因此對拋體運動的教學從各個角度進行剖析十分重要,為之后物體運動問題中的重難點打基礎。
拋體運動是一個大類,學生易將拋體運動下意識地認為是平拋運動或者斜拋運動,忽略其他特殊情況,如豎直上拋運動等,因思維定式陷入理解誤區。再加上拋體運動是一個全新的概念,學生一時間無法精準了解該定義的內涵,可能與學過的知識混淆,導致后期學習的障礙。
由于拋體運動是一種復雜的運動,學生可能會無法將運動正確分解,無法進一步分析。探究拋體運動,主要是通過實驗進行理解與分析,實驗過程中若處理不當,很有可能產生較大誤差導致實驗失敗。或者實驗數據統計后,無法正確處理數據,分析運動的具體過程。總的來說,需要學生們齊心協力、團隊合作,設計合適的實驗方案,選擇合適的實驗器材,準確記錄、分析數據,以物理思維去思考。
在高中物理課本中,進行平拋運動的實驗裝置有明顯不足,一是整個實驗過程所用時間很短,用肉眼很難觀察到小球的運動,只能通過兩小球的落地聲判斷其是否同時落地,這樣會大大增加實驗的誤差。二是此裝置無法準確描繪出小球做平拋運動的運動軌跡,不能直觀地呈現在學生面前。所以,我們可以選擇一種能夠精準展示出拋體運動過程的實驗裝置,比如Visual C++ 6.0編譯系統。此系統能夠完全按照人們的意愿設計拋體運動的初始速度、拋出的角度和所在的高度,計算物體的實時位置,模擬運動并展示出運動軌跡,將三維空間運動降維,以便于學生直觀地觀察與理解。
在物體拋體運動狀態模擬仿真系統中,我們通過創建C++程序,加載graphics.h頭文件,實現對系統矩形框及背景、文本的字體及大小、物體的形狀及顏色、實時數據顯示等可視化界面的設計。
如圖1所示,利用void initgraph (int width,int height)函數,建立一個初始化的繪圖窗口。在該窗口中,其坐標像素點共有width×height個,點數分布樣式為矩形點陣。在該矩形點陣中,我們利用坐標像素點精確設計文本及框圖出現的位置。例如,利用void setfillcolor[RGB(x,y,z)]設置背景顏色,其中x、y和z為0~255之間的數值,通過改變x、y和z的數值,能夠得到任意填充顏色;利用void fillrectangle (int left,int top,int right,int bottom)函數畫出有邊框的填充矩形。當物體形狀設置為小球時,利用void fillcircle(intx,inty,int radius)函數畫出小球的位置及大小。

圖1 可視化界面
利用outtextxy()和sprint()函數實現靜態和動態文本顯示。在靜態文本中,利用outtextxy(intx,inty,"string")在坐標(x,y)處輸出特定文本。當需要輸出變量的值時,需要利用sprint()函數把變量值轉化為字符串,然后輸出。輸出的文本會一直顯示在指定區域,不會自動消失。因此,在動態文本的設計中,我們采用覆蓋和再輸出的方法實現文本的動態顯示。利用填充函數setfillcolor()設定填充色,確保填充色和覆蓋區域的背景色一致,實現文本的清除效果;然后,利用文本的再輸出,實現動態顯示效果。
利用該系統,改變拋射小球的發射角度、初始高度和初始速度,觀察小球的實時數據和運動軌跡。在模擬系統的左邊,可以通過點擊初始參數按鈕,改變小球的初始數據;在模擬系統的右邊,顯示小球最近一次的實時狀態數據,x代表小球的橫向位移,y代表小球的縱向位移,t代表小球運動過程中的某一時刻,其中,x和y的值進行取整。
圖2給出的是當小球的初始發射角度發生變化時,小球的運動軌跡圖。圖中小球拋射的初速度為40 m/s、初始高度為0 m、初始角度分別為90°、60°、0°和-60°。當小球初始角度為90°時,模擬的是豎直上拋運動;當小球的初始角度為0°時,模擬小球的平拋運動;當小球的拋射角度為60°時,模擬小球的斜上拋運動;圖2右側的實時數據一欄,給出的是最后一次小球的拋射角度為-60°時,小球的斜下拋運動的實時數據。從這四次小球的運動狀態模擬來看,該模擬系統可以模擬小球的拋體運動,實時給出小球的運動數據。

圖2 小球的發射角度變化時的運動路線圖
圖3給出的是當小球的初始速度發生變化時,小球的運動軌跡圖。圖中小球拋射的角度為60°、初始高度為0 m、初始速度分別為10 m/s、20 m/s、30 m/s和40 m/s。從圖中可以看出,小球初始速度越大,小球能達到的高度越高,拋射的水平距離越遠。圖3右側給出的是小球拋射速度為40 m/s時的實時數據。

圖3 小球的初速度變化時的運動路線圖
圖4給出的是當小球的初始高度發生變化時,小球的運動軌跡圖。圖中小球拋射的角度為0°、初始速度為30 m/s。從圖中可以看出,當小球的初始高度變化時,只要初始速度和拋射角度不變,小球的運動路線就會完全重合,變化的只是小球所處的高度數值。

圖4 小球的初始高度變化時的實時高度數據變化圖
