需要有关圆形碰撞和旋转的帮助? - 游戏物理

时间:2010-01-24 16:11:14

标签: algorithm math physics

好的,所以我有一堆球:

Ignight Balls


我想弄清楚的是如何制作这些圈子:

  • 根据所触及的表面旋转

  • 处理多个触摸对象时,
  • 修复冲突渗透


编辑:这就是我所说的轮换

alt text

  • 球0 将旋转逆时针,因为靠在球3上

  • 球5 将顺时针旋转 ,因为靠球0


即使解决方案是通用的,只是为了记录我使用Javascript和SVG,并且更愿意自己实现它而不是使用库。

非常感谢帮助。谢谢! :)

3 个答案:

答案 0 :(得分:6)

从物理学的角度来看,听起来你想保留线性和角度momentum

作为一个起点,您需要建立ODE矩阵,对两者进行建模,然后执行一些线性代数来解决它们。我个人会使用Numpy / Scipy(可能使用稀疏数组)来解决该问题。但是有许多方法(想到了同情)。你想用什么模块?

您需要熟悉coefficient of restitutioncoefficient of friction并决定是否要保留动能。 (如果他们一直在弹跳和滚动,你想要/关心吗?)(你可能也需要能量矩阵)

你将每隔一段时间解决这些矩阵,同时检查没有两个球中心比两个半径的总和更接近的条件。 (..如果他们这样做,你可以调整碰撞后条件的动量和能量条件)

这只是一个大项目的开始。我可以问你为什么要从头做这个吗?

答案 1 :(得分:6)

以下是一些我认为可以帮助您完成任务的链接:

Box2D

Advanced Character Physics

Javascript Ball Simulation

Box2D有你想要的,我相信它的开源。您可以下载这些文件,看看他们如何做到这一点,以达到您的效果。

让我知道这是否有帮助,试图更好地回答这里的问题。 :)

修改

所以我继续思考这个问题,以便对我如何处理它提供一些见解。看看下面的图片:

基本上,比较一个网格上的角度,如果球落下+30度,它落在球上,然后正面旋转球。如果它落到-30度与球落下,则负面旋转球。我不是说这是正确的解决方案,但只是想一想,这就是我解决问题的方法。

alt text http://img686.imageshack.us/img686/9256/angles.jpg

答案 2 :(得分:3)

我建议查看游戏物理模拟书籍和文章。例如,请参阅O'Reilly的Physics for Game DevelopersGamasutra网站。