查找德劳奈三角形的结果三角形的面积



应用德劳内三角测量后,是否有可能找到形成的每个三角形的面积?matlab 中有什么函数可以做到这一点吗?请澄清我。提前感谢

我面临着同样的疑问,但幸运的是,我能够破解它,试试这个:

tri = delaunay(x,y);
areas = polyarea(x(tri'),y(tri'),2);

这将为您提供形成的每个三角形的区域。

如果您发现任何困难,请告诉我。

附言:tri'表示矩阵的转置。

这可以通过多面积来完成 - 请注意使用dim选项。

tri = delaunay(x,y);
areas = polyarea(tri(x),tri(y),2);

此解决方案有效,但未矢量化。

DT = delaunayTriangulation(X,Y);
NTriangles = size(DT.ConnectivityList,1);
% Triangles' Area Calculation (Try to vectorize)
Areas = zeros(NTriangles,1);
for i = 1:NTriangles
    PointIndexes = DT.ConnectivityList(i,:);
    Areas(i) = polyarea(DT.Points(PointIndexes,1),DT.Points(PointIndexes,2));
end

就我而言,这里的答案接近真实,但不完全正确,所以我在讨论中为未来可能需要它的人发声。

尝试此处给出的解决方案时,出现以下错误:

Error using reshape
Number of elements must not change. Use [] as one of the size inputs to
automatically calculate the appropriate size for that dimension.
Error in polyarea (line 46)
  area = reshape(abs(sum( (x([2:siz(1) 1],:) - x(:,:)).* ...

问题是x(tri')给出了一个向量,而不是一个矩阵。相反,我做了以下工作:

pt = tri.Points;
conn = tri.ConnectivityList;
xmat = reshape(pt(conn,1), [], 2);
ymat = reshape(pt(conn,2), [], 2);
Avec = polyarea(xmat, ymat, 2);

这解决了我的问题,同时仍然是矢量化操作。

相关内容

  • 没有找到相关文章

最新更新