找回密码
 注册会员
查看: 1218|回复: 0

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

[复制链接]
发表于 2010-6-7 09:56:28 | 显示全部楼层 |阅读模式
<p>MATLAB 求一个凸多边形和一个圆的相交部分的面积</p>
<p><img src="http://img.baidu.com/img/iknow/icn_point.gif"> 悬赏分:100 -</p>
<p>解决时间:2010-6-7 09:54</p>
<p>用下图举例我的问题。</p>
<p>比如,直角坐标系内,给定了凸角多边形顶点A、B、C、D、E的坐标(当然也有可能有更多顶点),已知圆2的圆心坐标和圆半径r。求matlab代码,求出该凸角多边形和圆的相交部分的面积(圆心有可能落在多边形的内、边和外部)</p>
<p>提问者: MBoe - 四级</p>
<p>最佳答案</p>
<p>试试我编的这个程序。嘿嘿。思想跟spirit3772的相似,但其实这个比较简单的问题还用不到图形学的理论。</p>
<p>注意查看圆和多边形的显示状况,如果没能完全显示就需要把mesh_range这个参数调大一点。</p>
<p>这个程序对任意多边形都有效,包括凸多边形。</p>
<p>程序中的圆形圆心在(-1,2)半径r=1. 这些参数可以任意改。</p>
<p>网格点越多越精确,计算量也越大。</p>
<p>想要更加严格的完成这个计算,可以定义一个面积差值的收敛值,逐步提高网格点的密度,直到所求面积收敛为一个稳定值。</p>
<p>%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</p>
<p>clear</p>
<p>close all</p>
<p>%Define grid</p>
<p>mesh_range=5;</p>
<p>mesh_density=0.05;</p>
<p>x=-mesh_range:mesh_density:mesh_range;</p>
<p>[X,Y] = meshgrid(x,x);</p>
<p>%Define a circle</p>
<p>r=1;</p>
<p>oa=-1; ob=2;</p>
<p>t=0:0.01:2*pi;</p>
<p>a=r*sin(t)+oa;</p>
<p>b=r*cos(t)+ob;</p>
<p>plot(a,b)</p>
<p>in_circle = inpolygon(X,Y,a,b);</p>
<p>x_polygon = [0 1 -2 -3 4 3 0]; y_polygon = [0 1 2 -1 -4 -3 0];</p>
<p>hold on</p>
<p>plot(x_polygon,y_polygon);</p>
<p>hold off</p>
<p>in_polygon = inpolygon(X,Y,x_polygon,y_polygon);</p>
<p>in_both=in_circle & in_polygon;</p>
<p>figure</p>
<p>imshow(in_both)</p>
<p>figure</p>
<p>imshow(in_polygon)</p>
<p>figure</p>
<p>imshow(in_circle)</p>
<p>Area=sum(sum(in_both))*mesh_density^2</p>
<p>0</p>
<p>回答者:</p>
<p><img src="http://www.baidu.com/search/zhidao/zhuti-5year/image/icon1.gif"></p>
<p>l001d - 八级   2010-6-1 23:24</p>
<p>我来评论>></p>
<p>提问者对于答案的评价:</p>
<p>非常感谢~~</p>
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

QQ|文字版|手机版|小黑屋|襄阳城

GMT+8, 2025-5-18 19:01

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表