无聊之际用C#写了一个弹性物体碰撞模拟玩玩。这个想法源自与前几天上机课有人想我在机房做一个透视投影的程序,于是就立刻写了个投影并弄了个线框球上去跳。结果我就想,如果物体有弹性会怎么样呢?回到宿舍就实践想法。
这个程序是2D的,用C#主要是因为GDI+写起来比较方便,至少比可怜的MFC好用,虽然C#的东西又慢又占用CPU使用率。我发誓.NET的Timer肯定不是用WM_TIMER消息搞的,空转占用CPU都那么高,而且用Sleep还降低不了。过高的CPU占用率持续过久会导致CPU温度升高……
程序现在还有点问题。譬如物理引擎经典问题:浮点误差和碰撞穿透。现在还没100%处理好,虽然绝大多数情况下是没什么事。第二个就是因为弹性超出了我的物理知识范围,所以碰撞的速度更高暂时乱写,等过几天有空解一个三元二次方程组之后再改改代码。
先放截图三张,等程序改好了之后再把代码弄出来。这个东西很好玩的,嘿嘿。考虑了重力哦。
一:创建了两个有弹性7边形
二:左边的对象撞到了墙上
三:右边的对象撞了