我正嘗試用C++編寫二維物理引擎。到目前爲止,它似乎最受歡迎的是Box2D。不幸的是,Box2D是一個剛體身體物理引擎,這並不能真正幫助我嘗試我想要的東西。用C++編寫的非剛體二維物理引擎
我希望能夠定義一個形狀,其中有許多由彈簧連接的頂點,這樣當這個形狀與剛性或其他非剛性形狀碰撞時,它的形狀將是靈活的。
現在我試圖想到只用剛體在Box2D中這樣做的方法,但似乎總是缺點:
- 使用矩形或線段的靈活形狀的外邊緣。這些將與其他形狀相撞。不幸的是,它們並不富彈性,所以不會看到預期的效果。
- 形狀的每個頂點都可以是一個具有自己小圓形形狀的物體。這些物體可以通過彈簧連接在一起。這在形狀變形方面效果很好,但想象一下,如果形狀落在剛性釘上並且釘穿過頂點之間。然後形狀會卡在尖峯上。
那麼在C++中做這種物理的最好方法是什麼?最好不必編寫完整的物理引擎。也許我只是缺少Box2D的一個功能。也許這不是正確的選擇。那麼什麼是正確的選擇?