我需要计算两个矩形在特殊x / y网格上的重叠(数量或是/否)。网格为500x500,但边和角连接(连续)。所以499之后的下一个点再次变为0。
在上一个问题中,我问了一种计算此网格中两点之间距离的方法。结果证明是欧几里德距离:
sqrt(min(|x1 - x2|, gridwidth - |x1 - x2|)^2 + min(|y1 - y2|, gridheight - |y1-y2|)^2)
计算两个矩形(由点(x,y),宽度和高度定义)在此网格中是否重叠的好数学方法是什么?
Rectangle-1([x=0,y=0], w=20, h=20
)和Rectangle-2([x=495,y=0], w=10, h=10
)应该有重叠。重叠的矩形(不是真的需要但是)应该是([x=0,y=0], w=5, h=10
)
答案 0 :(得分:3)
首先,计算每个矩形的x和y范围 (因为你有一个圆环几何体,所以它是mod gridsize)。
因此,给定Rectangle-1,计算:
x1 = x = 0, x2 = x + w = 20 y1 = y = 0, y2 = y + h = 20
Rectangle-2相同:
x3 = 495, x4 = 505 mod 500 = 5 y3 = 0, y4 = 10
为每个矩形创建x和y“区域”:
Reactangle-1: x-regions: (0, 20) y-regions: (0, 20) Rectangle-2: x-regions: (495, 500), (0, 5) y-regions: (0, 10)
如果两个矩形之间的任何(两个)x和y区域都具有非空交点,则矩形重叠。 这里,Rectangle-1的(0,20)x区域和Rectangle-2的(0,5)x区域具有非空交集,因此(0,20)和(0,10)y也是如此。 -regions。