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

Rad*_*Hex 15 algorithm math physics

好的,我有一堆球:

Ignight Balls


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

  • 根据他们接触的表面旋转

  • 处理多个触摸物体时修复碰撞穿透.


编辑:这就是我所说的旋转

替代文字

  • 球0将旋转逆时针,因为它是扶着球3

  • 球5将旋转顺时针方向,因为它是扶着球0


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

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

Pau*_*aul 6

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

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

你要熟悉恢复系数摩擦系数,并决定是否要节省动能过.(如果他们一直在弹跳和滚动,你想要/关心吗?)(你可能也需要能量矩阵)

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

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


alv*_*spo 6

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

Box2D的

高级人物物理学

Javascript球模拟

Box2D有你想要的,我相信它的开源.您可以下载文件并查看他们如何执行操作以实现您的效果.

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

编辑:

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

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

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