分离轴定理实现始终返回true。我究竟做错了什么?

时间:2018-06-19 22:13:34

标签: javascript collision-detection game-physics separating-axis-theorem

我正在尝试使用“分离轴定理”对Javascript / p5.js中的凹多边形实施碰撞检测。我一直在关注以下有关如何使用它的教程:http://www.dyn4j.org/2010/01/sat/

但是,无论两个多边形的位置如何,我的检查总是返回true。这是我的代码:

value.split(',').uniques().join(',')

使用定义的比例尺,旋转和位置,通过以下功能转换顶点:

from collections import OrderedDict
dedup = list(OrderedDict.fromkeys(value.replace(' ','').split(',')))
return ",".join(dedup)

SAT方法始终返回true。我相信我错误地检查了重叠部分,但是我无法弄清楚我到底在做什么错。

1 个答案:

答案 0 :(得分:0)

因此,事实证明我的实现被p5.js(在这种情况下我正在使用的一个库)撒谎了。

getAxes方法中,我使用内置的p1函数中的p5从p2中减去p5.Vector.sub。这没有达到预期的效果。我不确定,但是我相信问题在于,它并没有创建一个新的向量来作为等式的差异。我只是通过自己创建新矢量来解决此问题,例如:createVector(p2.x - p1.x, p2.y - p1.y);