我正在尝试使用“分离轴定理”对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。我相信我错误地检查了重叠部分,但是我无法弄清楚我到底在做什么错。
答案 0 :(得分:0)
因此,事实证明我的实现被p5.js(在这种情况下我正在使用的一个库)撒谎了。
在getAxes
方法中,我使用内置的p1
函数中的p5从p2
中减去p5.Vector.sub
。这没有达到预期的效果。我不确定,但是我相信问题在于,它并没有创建一个新的向量来作为等式的差异。我只是通过自己创建新矢量来解决此问题,例如:createVector(p2.x - p1.x, p2.y - p1.y);