What is an Efficient algorithm to find Area of Overlapping Rectangles
Posted
by namenlos
on Stack Overflow
See other posts from Stack Overflow
or by namenlos
Published on 2008-10-28T19:10:45Z
Indexed on
2010/04/13
4:53 UTC
Read the original article
Hit count: 776
My situation
- Input: a set of rectangles
- each rect is comprised of 4 doubles like this: (x0,y0,x1,y1)
- they are not "rotated" at any angle, all they are "normal" rectangles that go "up/down" and "left/right" with respect to the screen
- they are randomly placed - they may be touching at the edges, overlapping , or not have any contact
- I will have several hundred rectangles
- this is implemented in C#
I need to find
- The area that is formed by their overlap - all the area in the canvas that more than one rectangle "covers" (for example with two rectangles, it would be the intersection)
- I don't need the geometry of the overlap - just the area (example: 4 sq inches)
- Overlaps shouldn't be counted multiple times - so for example imagine 3 rects that have the same size and position - they are right on top of each other - this area should be counted once (not three times)
Example
- The image below contains thre rectangles: A,B,C
- A and B overlap (as indicated by dashes)
- B and C overlap (as indicated by dashes)
- What I am looking for is the area where the dashes are shown
-
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAA--------------BBB
AAAAAAAAAAAAAAAA--------------BBB
AAAAAAAAAAAAAAAA--------------BBB
AAAAAAAAAAAAAAAA--------------BBB
BBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBB
BBBBBB-----------CCCCCCCC
BBBBBB-----------CCCCCCCC
BBBBBB-----------CCCCCCCC
CCCCCCCCCCCCCCCCCCC
CCCCCCCCCCCCCCCCCCC
CCCCCCCCCCCCCCCCCCC
CCCCCCCCCCCCCCCCCCC
© Stack Overflow or respective owner