物理引擎是如何解決重力使物體塌陷的問題的?

時間 2021-06-21 14:11:54

1樓:

自問自答系列

又擱置了大半年, 最近問了下老師這東西正好能拿來應付畢設就又翻出來看, 終於搞懂了 (.....)

把兩個盒子堆起來會產生如下的4個碰撞點, 如果順序的對每個點都計算碰撞產生的衝量J並立即在該點施加J的話, 就會出現明顯的塌陷, 因為在點3和4對下面的盒子施加的衝量的計算沒有考慮到"施加這個衝量後地面對下方盒子還會有乙個支援力", 於是在點1和2對盒子施加的向上的衝量實際上是偏小的, 或者說在點3和4對盒子施加的衝量是偏大的

可以通過求每個剛體的合力來解決這個問題, 最後要求整個系統的碰撞後速度就變成求解乙個方程組

更簡單的方法是在用速度更新位置前直接重複上面的逐個碰撞點求解的過程, 期待迭代很多次之後每個點施加過的累積的碰撞衝量會接近實際衝量, 像下面這樣:

for (i = 0; i < iterLimit; ++i)

仔細看求碰撞衝量的公式是J = -vr (e + 1) / ( 1/m1 + 1/m2 + n * ((r1 × n) / I1) × r1 + n * ((r2 × n) / I2) × r2 )

其中vr = v1 - v2是兩個剛體的相對速度, 當兩個剛體的運動方向是"相向"時求得的J就是正的, 當運動方向是"相離"時J就是負的, 在迭代很多次之後每次計算出的J就會越來越趨近於0因為整個系統取向平衡

區塊鏈真的能解決信任問題了 是如何解決的?

BTW錢包君 你不信任乙個沒有足夠信用度的單獨個體,但你會信任一堆個體或者有足夠信用度的單獨個體。在現實社會中,銀行就是這個有足夠信用度的個體 中心 但以銀行等作為信用中介是需要成本的,而我們普通大眾就要為這龐大的信用成本買單。所以才會造就金融業是最賺錢的行業。要去除銀行類等中心機構的信用背書?那就...

你們是如何解決練習吉他擾民的問題的?

Alan Wang 輕點彈,原聲結他,北京,我跟別人合租的,程式設計師每天下班都挺晚的,到家都快10點了吧,想練習的時候就輕點彈,還好大家應該都是夜貓子,暫時也沒人來敲門 不過我也知道肯定還是會打擾大家休息,所以一般10點半之後就不會再練了 不二哥 沒錢的解決方案 1,木結他 原聲結他 拿塊布,從音...

國外是如何解決應試教育問題的?

元認知 國外有專門研究學生評估問題的,理論這塊首先要解決。應試教育可以從三個層次分析,評估與教學,或者評估如何促進教學 大規模橫向對比評估 招生與評估 標準化考試 每一層次都有機會加以改進。理想的話這三者能夠達成一致,這似乎也有可能。 李小薊 嗯,沒人願意讓娃去做乙個技術工人.雖然藍翔現在很紅。另外...