MATLAB函数用于使用三角形区域的总和来计算多边形的面积

时间:2017-07-09 19:41:50

标签: matlab function defined

我对我编写的MATLAB函数有疑问。它以两个行向量的形式输入一组x和y顶点坐标,并使用它们来计算多边形的面积。

对于单三角形情况,它运行正常(虽然我知道我的代码可以提高效率和看起来更好)。但是,我将在一个脚本中使用此函数,该脚本采用一组x和y点并计算由坐标点限定的多边形的周长和面积。

使用我为三角形区域创建的函数,可以根据以下步骤计算多边形的面积:

  • 有N-2个三角形(其中N是多边形的边数量)
  • 我的函数计算这些三角形的面积
    (使用$('input').on('keypress', function (e) { var blockSpecialRegex = new RegExp("~`!@#$%^&()_={}\[\]\:;,.\/<>/-+/?"); var key = String.fromCharCode(!e.charCode ? e.which : e.charCode); console.log(key) if(blockSpecialRegex.test(key) || $.isNumeric(key)){ e.preventDefault(); return false; } });
  • 将三角形区域相加以找到多边形的面积。

我的代码写在下面。我的周边功能非常好,但我不知道如何将三角形的面积函数实现到多边形区域程序中。 我相信我的公式是正确的,问题出在循环索引中。

有关如何从以下内容着手的任何建议将不胜感激!

A = 0.5(x1*(y2-y3)-x2*(y1-y3)+x3(y1-y2)

1 个答案:

答案 0 :(得分:0)

好的,所以对于任何有兴趣的人或可能正在解决像我这样的问题的任何人我都有下面写的最终工作代码。这个功能可以做双重任务。如果坐标向量输入为3对,则该函数将计算三角形的面积。如果有超过3组坐标对,那么它将计算由这些坐标限定的多边形的面积。

narginchk(2,2) ;
if length(coords_x) == 3 
ii = 1
jj = 1
area = sum(abs(0.5.*(coords_x(ii).*(coords_y(jj+1)-coords_y(jj+2))- ...
coords_x(ii+1).*(coords_y(jj)-coords_y(jj+2))+coords_x(ii+2).*...       
(coords_y(jj)-coords_y(jj+1))))) ;
else
ii = 1:length(coords_x) -3 ;
jj = 1:length(coords_y) -3 ;
area = sum((abs(0.5.*(coords_x(1).*(coords_y(jj+1)-coords_y(jj+2)) ...
-coords_x(ii+1)... 
.*(coords_y(1)-coords_y(jj+2))+coords_x(ii+2).*(coords_y(1)- ...
coords_y(jj+1)))))) ;
end
end