MATLAB求多边形交 intersect函数和polyshape函数示例

参考

polyshape文档

代码

MAX_LEN=100000;
poly = polyshape([-1 0.5 1 1 0 -1],[0.5 1 0.5 -0.5 -1 -0.5]);
poly1 = polyshape([0 0 MAX_LEN MAX_LEN],[0 MAX_LEN MAX_LEN 0]);    %一个顶点在原点且位于第一象限的一个大矩形
poly2=polyshape([0 0 -MAX_LEN -MAX_LEN],[0 MAX_LEN MAX_LEN 0]);   %一个顶点在原点且位于第二象限的一个大矩形
poly3=polyshape([0 0 -MAX_LEN -MAX_LEN],[0 -MAX_LEN -MAX_LEN 0]);   %一个顶点在原点且位于第三象限的一个大矩形
poly4=polyshape([0 0 MAX_LEN MAX_LEN],[0 -MAX_LEN -MAX_LEN 0]);     %一个顶点在原点且位于第四象限的一个大矩形


polyout = intersect(poly,poly2);
subplot(221);
plot(poly);hold on;
plot(polyout);
xlim([-2 2]);
ylim([-2 2]);
display(['A2=',num2str(polyout.area)]);
title(['A2=',num2str(polyout.area)]);

polyout = intersect(poly,poly3);
subplot(222);
plot(poly);hold on;
plot(polyout);
xlim([-2 2]);
ylim([-2 2]);
display(['A3=',num2str(polyout.area)]);
title(['A3=',num2str(polyout.area)]);

polyout = intersect(poly,poly4);
subplot(223);
plot(poly);hold on;
plot(polyout);
xlim([-2 2]);
ylim([-2 2]);
display(['A4=',num2str(polyout.area)]);
title(['A4=',num2str(polyout.area)]);

polyout = intersect(poly,poly1);
subplot(224);
plot(poly);hold on;
plot(polyout);
xlim([-2 2]);
ylim([-2 2]);
display(['A1=',num2str(polyout.area)]);
title(['A1=',num2str(polyout.area)]);

display(['OveallArea=',num2str(poly.area)]);
suptitle(['OveallArea=',num2str(poly.area)]);

结果

posted @ 2022-02-28 19:53  yhm138  阅读(1131)  评论(0)    收藏  举报