平面物理引擎(我們的星星)1 1 準備工作

2021-09-29 00:26:59 字數 1253 閱讀 3871

分析

實現意圖:

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取反.計...