c - 对具有已知边界的平面点集进行三角测量

标签 c algorithm triangulation

我有一个平面点集P。我已经知道P中哪些点p属于边界B(p)。所述边界可以是凸的或非凸的。现在,我想找到边界为 B(p) 的 P 的三角剖分。我的问题:

  • 是否有直接实现此目的的算法?一个接近的候选者是约束德劳内三角剖分 (CDT)。但是,我认为 CDT 不适用于此处:我可以将 B(p) 中的所有边作为约束提供,这样所有边都将包含在三角剖分中。然而,这并不一定意味着这将是三角测量的边界。如果我在这里错了,请纠正我。

  • 如果您现在知道这样的算法,您能告诉我一个提供实现的(轻量级)C 库吗?

  • 或者:我当然可以使用来自 GTS 的标准 Delaunay 三角剖分对 P 进行三角剖分。然后我需要修剪所有顶点在 B(p) 之外的面。 GTS 可以吗?

最佳答案

I could feed all the edges in B(p) as a constraint, such that all the edges would be contained in the triangulation. However, this does not necessarily entail that this will be the boundary of the triangulation.

您说得对,受约束的 Delaunay 三角剖分可以填充边界的凹陷。然而,每个三角形要么完全在边界内,要么完全在边界外,因此通过从无限面开始遍历平面直线图的对偶,将边界边视为不可通过,可以很容易地删除边界外的三角形。 Jonathan Shewchuk 的图书馆 Triangle ,例如,这样做。该许可证可能不符合您的喜好,但如果您已经有另一个库来计算受约束的 Delaunay 三角剖分,我们并不是在谈论大量额外的代码。

关于c - 对具有已知边界的平面点集进行三角测量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19055134/

相关文章:

c - do while 循环 C 编码错误

algorithm - 回合制游戏的贪心算法

c++ - 依赖图的设计模式

python - Matplotlib 三色错误?

swift - ARKit – 有没有办法知道物体在与 ARCamera 相关的空间中的位置?

c - 内存对齐 __attribute__( ( aligned ( 8 ) ) )

c - 简单的图像加载库

c++ - 如何在makefile中添加.c、.cc和.so文件来创建另一个.so?

java - 在 Java 中使用随机运算符创建最小值

python - Matplotlib 三角测量停止处理切换坐标