计算两点之间一组路径的(非凸)边界

计算科学 算法 C++ 计算几何 近似 凸包
2021-12-14 11:07:05

我在两个固定点之间有一组路径(下面用红色标记)。这些路径中的每一个都由一系列有序的点组成(标记为蓝色)。{x,y}

简单场景

我试图找到构成这些路径边界的有序点集。此边界以灰色显示。请注意,此边界将包含这些线的交点。

我已经实现了凸包算法来尝试解决这个问题,但是,根据定义,它们丢弃了边界的凹入部分。

有没有一种确定性的方法来解决这个问题而无需蛮力计算?如果没有,是否有任何近似算法可以提供更好的性能?


根据@k20 的评论,我意识到有一个我没有考虑过的案例。可以沿路径增加和减少。路径中甚至可能存在循环。这是另一个例子:xy

循环场景

1个回答

如果您将路径集表示为连续点之间的一组单独的线段,那么您想要的集合与线的交点位于最低点和最高点之间包含坐标的区间。S={Lk}x=x0xx0

特别是,您的集合由一组线段界定,其端点仅位于的端点或它们的交点上。Lk

因此,获得线段的这些底点和顶点之间的线构成了您的集合的边界。x