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

时间:2010-12-08 00:16:52

标签: math

我在使用分离轴定理将矩形投影到不同的轴上时,在本地和全局坐标之间进行转换时遇到问题:http://en.wikipedia.org/wiki/Separating_axis_theorem。最后,我想检查与另一个物体的碰撞。

假设我的全局坐标为顶点的矩形为:

(10,20),(10,10),(20,10),(20,20)

因此本地坐标为:

(-5,5),(-5,-5),(5,-5),(5,5)

这将使4个法线如下:(每个轴1个)

(1,0),(0,1),(-1,0),(0,-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)

我不认为这是对的吗?这是算法应该如何工作的吗?

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

1 个答案:

答案 0 :(得分:0)

你只是没有保持你的坐标框架笔直。 (-20, -10)结果非常一致,当您测试多边形进行分离(沿着该轴)时,它会给出正确的答案。