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

Related posts about geometry

Related posts about algorithm