好的,我已经深入了解了如何在快速移动的圆和基于基本曲线/直线的形状之间进行碰撞。我还没有全神贯注于检测两个运动的圆之间的碰撞。我一直将它们建模为胶囊,因此虽然我可以轻松找到它们的交点,但是我不确定如何解决一个停下来而另一个开始的地方。
此外,一旦我知道了这些信息,我真的不知道如何解决他们的速度和位置。
情况是,有数百个小圆圈,它们遵循物理定律迅速移动。还有更多的大圆圈跟随鼠标/手指/触摸在移动时的位置并继承手指的速度等。目标是将小圆圈从大圆圈中剔除。这很棘手,因为大圆圈根本不会对碰撞做出反应,而且我能找到的大多数算法都要求这样做。
我什至如何开始考虑并解决这种类型的碰撞情况?我不仅不知道快速移动的小圆圈与快速移动的大圆圈在哪里发生碰撞,而且我不知道如何将手指速度适当地与小圆圈碰撞。
有什么好主意吗?
答案 0 :(得分:1)
让x1
,y1
,vx1
,vy1
为circle1
的x位置,y位置,x速度和y速度。同样,对于x2
,我们有y2
,vx2
,vy2
,circle2
。
由于其中一个圆圈circle1
对碰撞没有反应,因此从这个大个子(也称为参照系)的角度看待碰撞是很有用的。在此参考框架中,circle2
的x速度为vx2 - vx1
,y速度为vy2 - vy1
。 circle2
的x和y位置类似地为x2 - x1
和y2 - y1
。
在此参考框架中,circle1
也没有移动,可以视为静态墙。
然后,您可以像以circle2
的法向向量和(x2-x1 , y2-y1)
的速度向量移动(vx2-vx1 , vy2-vy1)
碰撞墙壁一样处理该问题。
我假设您知道如何解决此问题,因为您说过您了解圆和形状之间的碰撞。
一旦获得了circle2
的最终速度,只需记住通过将vx1
添加到x速度并将vy1
添加到y速度来回到原始透视图。 / p>