网格二维三角剖分

Posted

技术标签:

【中文标题】网格二维三角剖分【英文标题】:Mesh 2D triangulation 【发布时间】:2015-05-30 09:05:55 【问题描述】:

我正在尝试编写一个程序,用于在空间中的一个点上找到包含它的网格中的三角形。我有一些中间步骤。 但是我正在尝试寻找另一种方法来做到这一点,因为它效率不高。

第一:

对于 K 一个三角形和 i 这个三角形的一个顶点,能够找到与该顶点相对的相邻三角形。 困难的部分是我的网格中的所有三角形都需要在 O(nt) 或 O(ntlog2(nt)) 中完成。 我想使用无序映射来存储每个三角形的所有边,这样我就可以在 O(1) 中找到我正在寻找的三角形,所以对于 O(nt) 中的所有网格。

但我不知道如何编码我的无序地图,以便在第一个冒号中包含 2 个顶点的值,在第二列和第三列中包含三角形的编号。

我的网格属性是:

 public:
  //attribut
  std::vector<Sommet> m_Sommet; // Sommet's array
  std::vector<Triangle> m_Triangle; //Triangle's array

如果你有任何帮助,那就太好了。

【问题讨论】:

【参考方案1】:

您应该使用与您的网格相关联的分区结构,包围体层次结构计算起来非常简单、轻巧且高效(您可以查看this page 了解各种排序算法)。如果您的网格是静态的,则 kd-tree 应该更快,但构建起来也更复杂。

【讨论】:

以上是关于网格二维三角剖分的主要内容,如果未能解决你的问题,请参考以下文章

具有包裹尺寸的德劳内三角剖分?

用非凸多边形裁剪和三角剖分三角形

用凹域对一组点进行三角剖分

Three.js 加载已经三角剖分的网格是不是比使用四边形的网格更高效?

cloudcompare三角坡分如何显示网格化

WPF用三角形网格构建三维图形