好的,所以我有一堆球:
我想弄清楚的是如何制作这些圈子:
根据所触及的表面旋转
修复冲突渗透。
编辑:这就是我所说的轮换
球0 将旋转逆时针,因为靠在球3上
球5 将顺时针旋转 ,因为靠球0
即使解决方案是通用的,只是为了记录我使用Javascript和SVG,并且更愿意自己实现它而不是使用库。
非常感谢帮助。谢谢! :)
答案 0 :(得分:6)
从物理学的角度来看,听起来你想保留线性和角度momentum。
作为一个起点,您需要建立ODE矩阵,对两者进行建模,然后执行一些线性代数来解决它们。我个人会使用Numpy / Scipy(可能使用稀疏数组)来解决该问题。但是有许多方法(想到了同情)。你想用什么模块?
您需要熟悉coefficient of restitution和coefficient of friction并决定是否要保留动能。 (如果他们一直在弹跳和滚动,你想要/关心吗?)(你可能也需要能量矩阵)
你将每隔一段时间解决这些矩阵,同时检查没有两个球中心比两个半径的总和更接近的条件。 (..如果他们这样做,你可以调整碰撞后条件的动量和能量条件)
这只是一个大项目的开始。我可以问你为什么要从头做这个吗?
答案 1 :(得分:6)
以下是一些我认为可以帮助您完成任务的链接:
Box2D有你想要的,我相信它的开源。您可以下载这些文件,看看他们如何做到这一点,以达到您的效果。
让我知道这是否有帮助,试图更好地回答这里的问题。 :)
修改强>
所以我继续思考这个问题,以便对我如何处理它提供一些见解。看看下面的图片:
基本上,比较一个网格上的角度,如果球落下+30度,它落在球上,然后正面旋转球。如果它落到-30度与球落下,则负面旋转球。我不是说这是正确的解决方案,但只是想一想,这就是我解决问题的方法。
答案 2 :(得分:3)
我建议查看游戏物理模拟书籍和文章。例如,请参阅O'Reilly的Physics for Game Developers和Gamasutra网站。