C#模擬試驗:實(shí)現(xiàn)的彈性物體碰撞
無聊之際用C#寫了一個彈性物體碰撞模擬玩玩。這個想法源自與前幾天上機(jī)課有人想我在機(jī)房做一個透視投影的程序,于是就立刻寫了個投影并弄了個線框球上去跳。結(jié)果我就想,如果物體有彈性會怎么樣呢?回到宿舍就實(shí)踐想法。
這個程序是2D的,用C#主要是因為GDI+寫起來比較方便,至少比可憐的MFC好用,雖然C#的東西又慢又占用CPU使用率。我發(fā)誓.NET的Timer肯定不是用WM_TIMER消息搞的,空轉(zhuǎn)占用CPU都那么高,而且用Sleep還降低不了。過高的CPU占用率持續(xù)過久會導(dǎo)致CPU溫度升高……
程序現(xiàn)在還有點(diǎn)問題。譬如物理引擎經(jīng)典問題:浮點(diǎn)誤差和碰撞穿透。現(xiàn)在還沒100%處理好,雖然絕大多數(shù)情況下是沒什么事。第二個就是因為彈性超出了我的物理知識范圍,所以碰撞的速度更高暫時亂寫,等過幾天有空解一個三元二次方程組之后再改改代碼。
先放截圖三張,等程序改好了之后再把代碼弄出來。這個東西很好玩的,嘿嘿。考慮了重力哦。
C#模擬(1):創(chuàng)建了兩個有彈性7邊形
C#模擬(2):左邊的對象撞到了墻上
C#模擬(3):右邊的對象撞了地面
我曾經(jīng)把彈性調(diào)的很小,邊數(shù)調(diào)得很大,結(jié)果出現(xiàn)了類似充水氣球的東西……
【編輯推薦】