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)]);

結果


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM