制作简单的2D物理引擎(零)
生活随笔
收集整理的這篇文章主要介紹了
制作简单的2D物理引擎(零)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
最近發現了Github上的開源物理引擎項目Matter.js,對它很感興趣,發現源碼并不算長,算上注釋大約1萬行左右,值得剖析一番。Matter.js實現一個最小化的2D物理引擎,性能不錯,故打算用C#重寫并學習之。
由于JS是弱類型,而C#是強類型的,所以不得不還原相應的類型。在重寫過程中,我也發現了源碼中的一些問題,以及代碼冗余,不過都無關緊要。在一萬行之內實現一個簡單的物理引擎本來就很令人激動了,這樣可以以最小的工作量來熟悉物理引擎。
重寫過程中,渲染用自帶GDI實現,所以只需考慮物理引擎中的代碼邏輯即可。因需要最簡化代碼,故有些內容如Sleep等就略過了,只考慮核心部分,即力的仿真和碰撞檢測。
最終,我們的物理引擎有下列幾個部分:
- 幾何體樹
- 物理學意義上的基本對象(如點、點集、邊界等)
- 簡單的碰撞檢測(寬、窄)
- 位置修正
- 速度修正
代碼在Github上:https://github.com/bajdcc/PhysicsEngine
不過,在這之前,需要好好復習一下牛頓力學,包括平動和轉動。
本章為目錄,將不斷更新。
- 第一章——動力學基礎
轉載于:https://www.cnblogs.com/bajdcc/p/5925837.html
總結
以上是生活随笔為你收集整理的制作简单的2D物理引擎(零)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Gradient Boost Decis
- 下一篇: 51nod1179【思维】