【问题标题】:How to create arcs on boundary points of voronoi?如何在 voronoi 的边界点上创建弧?
【发布时间】:2016-02-06 13:30:30
【问题描述】:
我正在编写一些 2D 图形软件。在我的项目中,我使用了 Voronoi 算法。结果和我预期的一样正确(图1)。然后我想在边界点上添加一些特征,就像(图 2)一样。所以我认为我需要在边界点上实现凹壳,然后在其上创建弧。
图 1。
但由于凹面参数,我的凹面船体无法正常工作。将我的软件结果转换为图 2 的最佳方法和最佳算法是什么。
图 2。
【问题讨论】:
标签:
graphics2d
convex-hull
delaunay
voronoi
concave-hull
【解决方案2】:
您应该能够绕着 voronoi 走一圈,寻找只有一条相邻边的顶点(从只有一条相邻边的顶点开始不是一个坏主意)。找到第一个,走到下一个,然后用弧线连接边缘,重复直到你的背在第一个边缘。如果 voronoi 被结构化为图形,该算法应该是相当有效的O(N)。
步行:
步行是通过对边缘进行角度排序并将下一个顺时针边缘移到您开始的边缘来完成的。
例如:
如果角度(以度为单位)是 40、50、60、70,并且之前的边缘在 50 的方向上,那么您将沿着 60 或 40 的边缘(取决于您是否决定去顺时针或逆时针),但您不会跟随 70,因为它会导致内部而不是坚持外部。