Math 理解分离轴定理和全局/局部坐标

Math 理解分离轴定理和全局/局部坐标,math,Math,在使用分离轴定理将矩形投影到不同轴上时,在局部坐标和全局坐标之间转换时遇到问题:。最后,我要检查是否与另一个对象发生碰撞 假设有一个矩形,其顶点在全局坐标中为: (10,20),(10,10),(20,10),(20,20) 因此,当地坐标为: (-5,5),(-5,-5),(5,-5),(5,5) 这将使4条法线如下所示:(每个轴1条) 然后,产品的最小/最大点积为: (1,0) . (-5,5) = -5 (1,0) . (-5,-5) = -5 (1,0) . (5,-5)

在使用分离轴定理将矩形投影到不同轴上时,在局部坐标和全局坐标之间转换时遇到问题:。最后,我要检查是否与另一个对象发生碰撞

假设有一个矩形,其顶点在全局坐标中为:

(10,20),(10,10),(20,10),(20,20)
因此,当地坐标为:

(-5,5),(-5,-5),(5,-5),(5,5)
这将使4条法线如下所示:(每个轴1条)

然后,产品的最小/最大点积为:

(1,0) . (-5,5)   = -5
(1,0) . (-5,-5)  = -5
(1,0) . (5,-5)   =  5
(1,0) . (5,5)    =  5
因此,这个法线的最小/最大对是(-5,5),因为对称性,在这个例子中所有其他的对都是一样的

当我想将坐标转换回全局坐标时,问题就出现了。根据我的理解,我需要通过将给定轴投影到全局位置来移动最小/最大对

当使用正单位向量时,这可以正常工作:

unit    center of rect
(1,0) . (15, 15)        = 15
这意味着调整后的最小/最大值为15-5,15+5=10,20,这是正确的

但是,当我对负单位向量执行此操作时,我得到:

(-1,0) . (15, 15)      = -15, meaning that the min,max values are now (-20,-10)
我不认为这是正确的?这就是算法的工作原理吗


注意:我正在尝试使代码适用于所有凸多边形,因此我不能简单地忽略此矩形的负单位向量。

您只是无法保持坐标帧的直线。
(-20,-10)
结果完全一致,当您测试多边形的分离(沿该轴)时,将给出正确答案。

注意:维基百科中的文章非常不精确,该定理的陈述是错误的。在R^2中,取C1={(x,y),y0和y>=1/x}。C1和C2之间没有分隔线,它们是不相交的,并且都是凸的。为了使该定理(文献中称为哈恩-班纳赫定理)为真,C1和C2必须是开的,或者C1和C2必须是闭的,并且至少有一个必须是紧的。
(-1,0) . (15, 15)      = -15, meaning that the min,max values are now (-20,-10)