圆形曲线之间的区域

时间:2017-05-09 15:06:56

标签: matlab geometry drawing area curve

我正在尝试计算两条圆形曲线之间的曲面(黄色曲面in this picture作为简化),但由于我没有两条曲线的相同角度值的数据点,所以我不知何故被卡住了。有什么想法吗?

感谢您的帮助!

照片: https://i.stack.imgur.com/w1tI7.jpg

2 个答案:

答案 0 :(得分:2)

我假设您拥有用于绘图的x,y坐标。我使用cp /var/www/docs/web.config.txt在这里获得了它们。我使用imfreehand为每条曲线生成二元模板,然后对它们应用inpolygon以获得所需区域的模板:

xor

enter image description here

答案 1 :(得分:1)

function area = area_between_curves(initial,corrected)

   interval = 0.1;
   x = -80:interval:80;
   y = -80:interval:80;
   [X,Y] = meshgrid(x,y);

   in_initial = inpolygon(X,Y,initial(:,1),initial(:,2));
   in_corrected = inpolygon(X,Y,corrected(:,1),corrected(:,2));
   in_area = xor(in_initial,in_corrected);

   area = interval^2*nnz(in_area);

   % visualization
   figure
   hold on
   plot(X(in_area),Y(in_area),'r.')
   plot(X(~in_area),Y(~in_area),'b.')

end

如果我使用问题的行,这就是结果:

figure

area = 1.989710000000001e+03