版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第三十九課 物理模擬簡介:還記得高中的物理吧,直線運動,落體運動,彈簧。在這一課里,創(chuàng)造這一切。物理模擬介紹如果你很熟悉物理規(guī)律,并且想實現(xiàn)它,這篇文章很適合你。在這篇里,你會創(chuàng)建一個非常簡單的物理引擎,創(chuàng)建以下類:內(nèi)容:位置類* classVector3D -用來物體的三維坐標的類力和運動* classMass -表示一個物體的物理屬性模擬類* classSimulation -模擬物理規(guī)律模擬勻速運動* class ConstantVelocity: public Simulation -模擬勻速運動模擬在力的作用下運動* class MotionUnderGraviion : publi
2、c Simulation -模擬在引力的作用下運動模擬在彈簧的作用下運動* class MassConnectedWithSpring : public Simulation -class Masspublic: float m; Vector3D Vector3DVector3D/ 質(zhì)量/ 位置/ 速度/ 力;vel; force;Mass(float m)this-m = m;/ 構(gòu)造函數(shù).下面的代碼給物體增加一個力,在初始時這個力為 0void applyForce(Vector3Dthis-force += force;force)/ 增加一個力void init()/ 初始時設為 0
3、force.xforce.y force.z=0;0;0;.下面的步驟完成一個模擬:設置力應用外力根據(jù)力的時間,計算物體的位置和速度void simulate(float dt)vel += (force/ m) * dt;/ 更新速度+= vel *dt;/ 更新位置模擬類怎樣:在一個物理模擬中,按以下規(guī)律進行模擬,設置力,更新物體的位置和速度,按時間一次又一次的進行模擬。下面是它的實現(xiàn)代碼:class Simulationpublic:numOfMasses; Mass* masses;/ 物體的個數(shù)/ 指向物體結(jié)構(gòu)的指針Simulation(numOfMasses,float m)/ 構(gòu)
4、造函數(shù)this-numOfMasses = numOfMasses;masses = new Mass*numOfMasses;for (a = 0; a numOfMasses;+a)massesa = new Mass(m);virtual void release()/所有的物體for (a = 0; a numOfMasses;+a)delete(massesa);massesa = NULL;delete(masses);masses = NULL;Mass* getMass(index)if (index = numOfMasses)return NULL;/ 返回第i 個物體re
5、turn massesindex;.(class Simulation continued)virtual void init()/ 初始化所有的物體for (a = 0; a init();virtual void solve()/虛函數(shù),在具體的應用中設置各個施加給各個物體的力virtual void simulate(float dt)/讓所有的物體模擬一步for (a = 0; a simulate(dt);.整個模擬的部分被封裝到下面的函數(shù)中(class Simulation continued)virtual voidinit();solve();operate(float dt)
6、/完整的模擬過程/ 設置力為 0/ 應用力/ 模擬simulate(dt);現(xiàn)在已經(jīng)有了一個簡單的物理模擬引擎了,它包含有物體和模擬兩個類,下面基于它們創(chuàng)建三個具體的模擬對象:1.2.3.具有恒定速度的物體 具有恒定加速度的物體具有與距離成反比的力的物體在程序中控制一個模擬對象:在寫一個具體的模擬類之前,讓看看如何在程序中模擬一個對象,在這個里,模擬引擎和操作模擬的程序在兩個文件里,在程序中使用如下的函數(shù),操作模擬:void Update (DWORD milliseconds)/ 執(zhí)行模擬這個函數(shù)在每一幀的開始更新,參數(shù)為相隔的時間。void Update (DWORD millisecon
7、ds).float dt = milliseconds/1000.0f;/ 轉(zhuǎn)化為秒dt /= slowMotionRatio;/ 除以模擬系數(shù)timeElapsed += dt;/ 更新流失的時間.在下面的代碼中,定義一個處理間隔,沒隔這么長時間,讓物理引擎模擬一次。.float maxsible_dt = 0.1f;/ 設置模擬間隔numOfIterations = ()(dt / maxsible_dt) + 1;/計算在流失的時間里模擬的次數(shù)if (numOfIterations != 0)dt = dt / numOfIterations;for (a = 0; a operate(
8、dt);motionUnderGraviion-operate(dt);massConnectedWithSpring-operate(dt);下面讓來寫著兩個具體的模擬類:1. 具有恒定速度的物體* class ConstantVelocity : public Simulation-模擬一個勻速運動的物體class ConstantVelocity : public Simulationpublic:ConstantVelocity() : Simulation(1, 1.0f)masses0-= Vector3D(0.0f, 0.0f, 0.0f); masses0-vel = Vect
9、or3D(1.0f, 0.0f, 0.0f);/ 初始位置為 0/ 向右運動下面來創(chuàng)建一個具有恒定加速的物體:class MotionUnderGraviion : publicSimulationVector3D graviion;/加速度MotionUnderGraviion(Vector3D graviion) : Simulation(1, 1.0f)/構(gòu)造函數(shù)this-graviion = graviion;/ 設置加速度masses0-= Vector3D(-10.0f, 0.0f, 0.0f);masses0-vel = Vector3D(10.0f, 15.0f, 0.0f);
10、/設置位置為左邊-10 處設置速度為右上.下面的函數(shù)設置施加給物體的力virtual void solve()/ 設置當前的力for (a = 0; a applyForce(graviion * massesa-m);下面的類創(chuàng)建一個受到與距離成正比的力的物體:class MassConnectedWithSpringpublic:float springConstant;:public Simulation/ 彈性系數(shù)/ 連接方向Vector3D connection;MassConnectedWithSpring(float springConstant) : Simulation(1,this-springConstant = springConstant;1.0f)/構(gòu)造函數(shù)connection= Vector3D(0.0f, -5.0f, 0.0f);masses0-= connection+ Vector3D(10.0f, 0.0f, 0.0f);masses0-vel = Vector3D
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣東理工學院《馬克思主義哲學原著》2023-2024學年第一學期期末試卷
- 廣東科技學院《音樂圖像學》2023-2024學年第一學期期末試卷
- 廣東機電職業(yè)技術(shù)學院《籃球基本技術(shù)與裁判》2023-2024學年第一學期期末試卷
- 廣東行政職業(yè)學院《珠寶首飾設計基礎(chǔ)》2023-2024學年第一學期期末試卷
- 廣東工程職業(yè)技術(shù)學院《化工熱力學實驗》2023-2024學年第一學期期末試卷
- 廣東第二師范學院《國際商務溝通》2023-2024學年第一學期期末試卷
- 廣東財貿(mào)職業(yè)學院《電競解說能力訓練》2023-2024學年第一學期期末試卷
- 幼兒安全頭盔課件下載
- 《報關(guān)與報檢實務》課件
- 廣東白云學院《中國城市發(fā)展與規(guī)劃史》2023-2024學年第一學期期末試卷
- 公路工程質(zhì)量與安全管理課件
- 計算機基礎(chǔ)知識整理課件
- 高一數(shù)學必修2《事件的關(guān)系和運算》課件
- 四年級道德與法治試卷分析范文(通用5篇)
- 封條模板A4直接打印版
- 電解銅箔制造工藝簡介
- 埋針治療評分標準
- 運維服務目錄
- 山東省腫瘤醫(yī)院放療危及器官劑量限值
- T∕CGCC 8-2017 自熱方便菜肴制品
- 軟膠囊研制手冊
評論
0/150
提交評論