澄清 pymunk 中的碰撞

Clarification of collisions in pymunk

我一直在研究 Pymunk 作为空间化学模拟的可能平台。我天真地认为当两个形状碰撞时会有一个接触点。事实上,最多可以有两个接触点。我还发现每个接触点有两个点,point_a和point_b。 documentation

point_a and point_b are the contact position on the surface of each shape

不知道有没有比我天真的人能解释一下:

谢谢。

我对碰撞算法的了解还不够,无法从数学背景上回答,但我可以在途中提供一些帮助:

  1. 这是使用的碰撞算法。对于简单的(例如圆到圆)碰撞,只找到一个点,如您在此处看到的:https://github.com/slembcke/Chipmunk2D/blob/master/src/cpCollision.c#L526 在更高级的情况下,例如Poly to Poly,然后使用GJK & EPA算法,https://github.com/slembcke/Chipmunk2D/blob/master/src/cpCollision.c#L607这样可以产生一两个点。

  2. 我想原因如下图所示。这些点位于每个形状上,并且由于它们可以重叠,所以每个形状都有一个点很自然。

  1. 我怀疑是这样,但不是 100% 确定。

如果您对 GJK 和 EPA 的实施感兴趣,这里有一个介绍性博客 post 从它首次引入 Chipmunk 时起:http://howlingmoonsoftware.com/wordpress/enhanced-collision-algorithms-for-chipmunk-6-2/