area of intersection between a circle and polygon

18 views (last 30 days)
x = 0;y = 0; r = 0.5;
th = 0:pi/50:2*pi;
xunit = r * cos(th) + x;
yunit = r * sin(th) + y;
h = plot(xunit, yunit);
poly1 = polyshape([0 0 1 1],[1 0 0 1]);
plot(poly1)
I want to find the area of intersection (in units) between a circle and polygon as given above. Any help would be greatly appreciated. TIA.

Accepted Answer

Akira Agata
Akira Agata on 3 Sep 2018
One possible way is generating intersection by intersect function, and calculate it's area by area function. The following is an example.
x = 0; y = 0; r = 0.5;
th = 0:pi/50:2*pi;
xunit = r * cos(th) + x;
yunit = r * sin(th) + y;
poly0 = polyshape(xunit(1:end-1),yunit(1:end-1));
poly1 = polyshape([0 0 1 1],[1 0 0 1]);
poly2 = intersect(poly0,poly1);
area(poly2)
The result is:
>> area(poly2)
ans =
0.1962
  4 Comments
Adam Fleetwood
Adam Fleetwood on 6 Dec 2020
I have tried using something similar for a project, but am getting an error that states, "unable to use a value of type polyshape as an index'. I tried using this exact code shown above, and still got that error. Any idea why?

Sign in to comment.

More Answers (0)

Categories

Find more on Elementary Polygons in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!