Calculate overlap between two rectangles on x / y grid?

I need to calculate the overlap (quantity or yes / no) that two rectangles make on a special x / y grid. The grid is 500x500, but the sides and corners are connected (continuous). So, the next point after 499 again becomes 0.

In the previous question, I asked for a way to calculate the distance between two points in this grid. This turned out to be the Euclidean distance:

sqrt(min(|x1 - x2|, gridwidth - |x1 - x2|)^2 + min(|y1 - y2|, gridheight - |y1-y2|)^2)

What is a good mathematical way to calculate if two rectangles (defined by a point (x, y), width and height) overlap in this grid?

Rectangle-1 ( [x=0,y=0], w=20, h=20) and Rectangle-2 ( [x=495,y=0], w=10, h=10) should overlap. The overlapping rectangle (not necessary) must be ( [x=0,y=0], w=5, h=10)

+3
source share
1 answer

First calculate the x and y range for each rectangle (because you have torus geometry, do this mod gridsize).

So, given your Rectangle-1, calculate:

x1 = x = 0, x2 = x + w = 20
y1 = y = 0, y2 = y + h = 20

The same for Rectangle-2:

x3 = 495, x4 = 505 mod 500 = 5
y3 = 0,   y4 = 10

Create x and y areas for each rectangle:

Reactangle-1: x-regions: (0, 20)
              y-regions: (0, 20)

Rectangle-2:  x-regions: (495, 500), (0, 5)
              y-regions: (0, 10)

If any (both) areas of x and y between two rectangles have a non-empty intersection, your rectangles overlap. Here, the (0, 20) x-region of Rectangle-1 and (0, 5) x-regions of Rectangle-2 have a non-empty intersection, as well as the (0, 20) and (0, 10) y -regions.

+3
source

Source: https://habr.com/ru/post/1729778/


All Articles