matlab 凸多边形面积,MATLAB 求一个凸多边形和一个圆的相交部分的面积

共回答了27个问题采纳率:85.2%

试试我编的这个程序.嘿嘿.思想跟spirit3772的相似,但其实这个比较简单的问题还用不到图形学的理论.

注意查看圆和多边形的显示状况,如果没能完全显示就需要把mesh_range这个参数调大一点.

这个程序对任意多边形都有效,包括凸多边形.

程序中的圆形圆心在(-1,2)半径r=1. 这些参数可以任意改.

网格点越多越精确,计算量也越大.

想要更加严格的完成这个计算,可以定义一个面积差值的收敛值,逐步提高网格点的密度,直到所求面积收敛为一个稳定值.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

clear

close all

%Define grid

mesh_range=5;

mesh_density=0.05;

x=-mesh_range:mesh_density:mesh_range;

[X,Y] = meshgrid(x,x);

%Define a circle

r=1;

oa=-1; ob=2;

t=0:0.01:2*pi;

a=r*sin(t)+oa;

b=r*cos(t)+ob;

plot(a,b)

in_circle = inpolygon(X,Y,a,b);

x_polygon = [0 1 -2 -3 4 3 0]; y_polygon = [0 1 2 -1 -4 -3 0];

hold on

plot(x_polygon,y_polygon);

hold off

in_polygon = inpolygon(X,Y,x_polygon,y_polygon);

in_both=in_circle & in_polygon;

figure

imshow(in_both)

figure

imshow(in_polygon)

figure

imshow(in_circle)

Area=sum(sum(in_both))*mesh_density^2

1年前

1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值