利用三角形面积和计算多边形面积的MATLAB函数
我有一个关于我写的MATLAB函数的问题。它以两行向量的形式获取一组x和y顶点坐标作为输入,并使用这些坐标计算多边形的面积 对于单个三角形的情况,它运行得很好(尽管我知道我的代码可以更高效,看起来更好)。但是,我将在脚本中使用此函数,该脚本将获取一组x和y点,并计算以坐标点为边界的多边形的周长和面积 使用我为三角形面积创建的函数,可以根据以下步骤计算多边形的面积:利用三角形面积和计算多边形面积的MATLAB函数,matlab,function,defined,Matlab,Function,Defined,我有一个关于我写的MATLAB函数的问题。它以两行向量的形式获取一组x和y顶点坐标作为输入,并使用这些坐标计算多边形的面积 对于单个三角形的情况,它运行得很好(尽管我知道我的代码可以更高效,看起来更好)。但是,我将在脚本中使用此函数,该脚本将获取一组x和y点,并计算以坐标点为边界的多边形的周长和面积 使用我为三角形面积创建的函数,可以根据以下步骤计算多边形的面积: 有N-2个三角形(其中N是多边形的边数) 我的函数计算这些三角形的面积(使用A=0.5(x1*(y2-y3)-x2*(y1-y3)
- 有N-2个三角形(其中N是多边形的边数)
- 我的函数计算这些三角形的面积
(使用
)A=0.5(x1*(y2-y3)-x2*(y1-y3)+x3(y1-y2)
- 求三角形面积之和以找到多边形的面积
function [tri_area] = area2dd(coords_x,coords_y)
%%Input argument check
narginchk(2,2) ;
%%Calculation
% % ii = 1:length(coords_x)-2;
% % jj = 1:length(coords_y)-2;
if length(coords_x) == 3
ii = 1:length(coords_x) -2;
jj = 1:length(coords_y) -2;
tri_area = sum(abs(0.5.*(coords_x(ii).*(coords_y(jj+1)-21coords_y(jj+2))-coords_x(ii+1)...
.*(coords_y(jj)-coords_y(jj+2))+coords_x(ii+2).*(coords_y(jj)-23coords_y(jj+1)))))
else
ii = 1:3:length(coords_x) -2;
jj = 1:3:length(coords_y) -2;
tri_area = sum(abs(0.5.*(coords_x(ii).*(coords_y(jj+1)-29coords_y(jj+2))-coords_x(ii+1)...
.*(coords_y(jj)-coords_y(jj+2))+coords_x(ii+2).*(coords_y(jj)-31coords_y(jj+1)))))
end
好的,对于任何有兴趣的人或其他可能解决像我这样的问题的人,我有下面编写的最终工作代码。这个函数可以执行双重任务。如果输入的坐标向量是3对,那么这个函数将计算三角形的面积。如果有3组以上的坐标对,那么它将计算te以这些坐标为边界的多边形的面积
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
您可能正在寻找我希望是这样,不幸的是,我必须编写一个基于内部三角形计算多边形面积的函数。我见过几种更有效的方法,但我的作业要求我必须使用此方法。您能用当前代码澄清问题吗?我的问题在else语句中。我想计算多边形中三角形的面积,考虑到x和y坐标的任何数量。我想我的公式是正确的。我相信这个问题存在于循环索引中的某个地方。我不知道该如何设置索引,这样我就可以捕获用于计算区域的点。您可以考虑创建一个答案Y。我们自己(如果几天后接受)