分析
實現意圖:
1、根據萬有引力定律模擬計算天體運動軌跡故而需要把所有運動學、動力學的計算通過座標運算來實現。事實上,完成力的座標化後,相關的物理量的座標運算就已經完成了——只需要使用對應座標軸方向上的力算對應的物理量即可。2、匯出行星運動相關資料,使用matlab繪製運動軌跡
支援運算:平面向量的座標運算,盡量使函式可拓展至三維空間向量運算
需要計算的量
計算途徑
力萬有引力計算公式f = gmm/r^2
質量物體固有
加速度fx/m,fy/m
速度ax*δt , ay *δt
時間當前時刻-上次計算前瞬間時刻
位置根據初始位置和位移量計算
位移量xx=vx*δt,yx=vy *δt
注意到運動需要依據時間改變量來計算,而把時間設計進類中使困難的(哈哈哈哈我實在是做不到啊),咱就把它作為傳進的引數處理,在使用這個starx類時再傳入即可。相關的細節咱先不看,這裡只是提到,完成starx開始使用的時候咱們再具體看。
先看看我們的星星(starx)的亞子(標頭檔案)
#ifndef starx_h
#define starx_h
#include
using std::vector;
const vector<
double
>
::size_type x=
0,y=1;
class
starx
;#endif
// starx_h
可以看到在類中的力、速度、加速度、位置(位矢)都是用vector容器構造的向量來表示的,這也為我們後續的座標運算提供了方便。
同樣的理由,注意第六行
const vector<
double
>
::size_type x=
0,y=
1;
這樣的做之後,我們就能在成員函式中用_force[x]的形式獲取星星在x座標軸方向上的受力大小了。這是這一行存在的原因,沒有的話,習慣使用0,1這種數字呼叫vector的值也可以,只是前一種看起來比較直觀。
各個成員函式的功能都在注釋中有說明
下一次我們看看各個成員函式的實現——starx.cpp檔案>
egret p2物理引擎 遇到的坑(1)
typeerror err invalid arg type the to argument must be of type string.received type object at validatestring internal validators.js 125 11 at object.r...
我們的星星點燈(作品展)
我想必須要為我們的作品展寫一篇部落格了。首先感謝公尺老師給我們一次團隊領導的機會,感謝九期師弟師妹們每一次的配合。從二月十六號第一次初見到我的組員,到今天晚上的會議,開了三次會議了。每一次會議都有很多收穫,每一次和我的團隊成員接觸都很快樂,不但找到了自己那時的身影,更是看到他們閃著光芒的心兒和那些令...
HGE引擎學習筆記1 如何模擬物理碰撞
模擬物理碰撞要解決的幾個問題 1.怎樣模擬速度的變化?設定乙個摩擦係數friction 0 2.怎樣模擬碰撞?每個時間片處理過程中,判斷物體的邊緣座標加上dx與dy後有沒有超過螢幕邊緣,如果超過,則採取一定的策略重新設定物體座標讓其在正常範圍內,如x軸超過,則對dx取反 如y軸超過,則對dy取反.計...