1. 程式人生 > >▷Scratch課堂丨模擬物理演算法:萬有引力、曲線運動,值得您的收藏!

▷Scratch課堂丨模擬物理演算法:萬有引力、曲線運動,值得您的收藏!

Scratch融合卡通、動畫、音效等多媒體的運用和直觀拖拽式的程式設計方式,生動有趣,可以編寫各種型別程式,遊戲、動畫、互動美術、實物模擬、數學模擬等,想象無限。同時蘊含豐富知識,體現現代程式設計思想,涵蓋程式設計、數學、物理、語言、藝術各領域;經過系統學習,程式設計班的孩子的邏輯思維能力將遠遠超過一般的同年齡孩子。事實上,Scratch是種“一朝學會,受益終生”的課程。

現在我就將物理只是與程式程式設計結合起來的scratch演算法作品發出來和大家分享一下!
首先是效果圖:

是不是比較驚訝?
事實上,行星一直受到恆星對他的引力,為什麼能做圓周運動?重力加速度是多大?如何設計指令碼?這是我們要考慮的問題


這裡我們普及一下概念:

其實初中學過的g就是重力的加速度。
為什麼能做圓周運動?

我們將證明步驟省略,有公式g=v^2/r,其中v是行星平拋運動時的初速度(平拋運動的初速度理解為方向與行星和恆心圓心的連線延長線垂直的初速度),r是行星與恆星圓心連線的距離,也就是圓周運動的半徑。
我們將行星放在距離恆星r個畫素的地方,並給予特定方向的初速度,計算出g,就可以實現圓周運動了!
重力加速度是多大?

我設定小球狀態如上圖所示,我們利用公式g=v^2/r,計算出g=0.15625px/幀^2
設計指令碼!

這兩個模組是我們做運動演算法的時候都要使用的,這樣可實現還要初速度不變化就可以做勻速直線運動,若是初速度變化:

當圈圈碰到行星的時候,行星被引力捕獲,獲得重力加速度,這個重力加速度我們是事先計算出來的,


利用相似三角形

其中上面幾個資料都是可以計算出來的,我們目的要將g分解為水平方向的加速度和豎直方向的加速度

解出來豎直方向的加速度=yg/到角色的距離,豎直方向的加速度=xg/到角色的距離,至此,兩個指令碼同時執行,最終實現圓周運動!