overall area of intersecting rectangles

Hi all, I have multiple rectangles defined by the rectangle() function, as seen in picture 1. The Hight and Width of the rectangles are variables. The positions of the rectangles are affected by each other, so if if the red rectangle gets bigger, the other rectangles will shift along the x- and y- axes.
I want to calculate the overall Area, so basically as shown in picture 2, the area between the axes and the outermost rectangle boundaries.
Any help is appreciated, thanks!

 Accepted Answer

Matt J
Matt J on 6 Mar 2021
Edited: Matt J on 6 Mar 2021
If you put the rectangles in the form of a polyshape vector, poly, then it is quite easy:
Area= area(union(poly));

7 Comments

So you mean, building 1 polyshape vector from outermost points of the rectangles (from points on the drawn red line)?
No, a vector of polyshape rectangles. E.g.,
poly(1)=polyshape([0,0; 0 1; 1 1 ; 1 0 ]); %first rectangle
poly(2)=polyshape([0.5,0.5; 0.5 2; 2 2 ; 2 0.5 ]); %second rectangle
plot(poly)
Area = area(union(poly))
Area = 3
I didn't know it was possible like that, thanks a lot!
Do you know if there is a simple replacement for polyshape ? MATLAB R2016b doesnt have the function
No, not unless you can find something on the File Exchange. You can't upgrade?
sadly not, it is not my personal version but the one at the institute im working at.
but thanks again for your help! much appreciated!
Ask them to upgrade...

Sign in to comment.

More Answers (0)

Categories

Products

Asked:

on 6 Mar 2021

Commented:

on 7 Mar 2021

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!