我在使用分离轴定理将矩形投影到不同的轴上时,在本地和全局坐标之间进行转换时遇到问题: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)
我不认为这是对的吗?这是算法应该如何工作的吗?
注意:我正在尝试使代码适用于所有凸多边形,因此我不能简单地忽略此矩形的负单位向量。
答案 0 :(得分:0)
你只是没有保持你的坐标框架笔直。 (-20, -10)
结果非常一致,当您测试多边形进行分离(沿着该轴)时,它会给出正确的答案。