我正在编写一个程序,该程序需要实现中间轴提取,其中Delaunay三角剖分是其中的一步。不需要外部内轴,因此打算删除相应的外部三角形。幸运的是,我遇到了a page,其中包含许多图表,也暗示了一种确定内部和外部Delaunay三角形的方法(“基于虚线周长”),但这只是一个提示,没有详细说明。有人知道算法吗?
编辑:我忘了提到初始点是从封闭多边形的边界中采样的,我的意图是确定每个Delaunay三角形是否在多边形内部。
最佳答案
此解决方案假定您具有一个数据结构,该数据结构使用CGAL(see details here)的方式使用“虚拟无限Delaunay顶点”表示Delaunay三角剖分。
这个想法是找到边界Delaunay边缘:连接两个连续采样点的边缘;然后通过Delaunay三角剖分进行“泛洪”以对Delaunay的面孔进行分类。人们知道无限顶点是外部的,因此只要一个不跨越边界边缘,就可以将其邻居(和邻居的邻居等)分类为外部。如果一个人到达边界边缘,则可以简单地将相邻三角形标记为内部三角形,然后类似地继续。
输入:密集采样封闭形状边界的点集,该边界甚至可以包含孔
输出:形状内部的Voronoi图(形状中轴的近似值)
将t分类为f
如果两个相邻的Delaunay三角形d1,d2都被分类为INTERIOR,则输出连接d1和d2的外接点的线段。
对于这样的输入
可以计算以下中间轴近似值:
您可以使用Mesecina的免费windows二进制文件检查该中间轴逼近的实际行为。源代码here。