Algorithm 用有限数量的线段和圆弧近似曲线
是否有任何算法允许在x-y平面(即由x和y定义的有序点集)上近似具有有限数量的线段和圆弧(恒定曲率)的路径?结果曲线需要为C1(坡度的连续性) 最大数量或线段和圆弧可以是一个参数。另一个有趣的约束是防止两个连续的圆弧圆没有中间线段连接它们 我看不出有任何方法可以做到这一点,我也不认为有任何方法可以做到这一点,但任何关于这一目标的暗示都是受欢迎的 示例: 考虑一下这条路。它看起来像一条直线,但实际上是一组非常接近的点。没有噪声,点序列的顺序是众所周知的 我想用最少数量的连续线段和圆弧(比如10条线段和10条圆弧)和C1连续性来近似这条曲线。分段/弧的数量本身不是一个目标,但我需要任何参数来减少/增加该数量,以达到参数化的某种简单性,同时以精度损失为代价 解决方案: 这是我的解决方案,基于Spektre的答案。红色曲线是原始数据。黑色直线是线段,蓝色曲线是圆弧。绿色十字是显示半径的弧中心,蓝色十字是线段可能连接的点Algorithm 用有限数量的线段和圆弧近似曲线,algorithm,geometry,computational-geometry,Algorithm,Geometry,Computational Geometry,是否有任何算法允许在x-y平面(即由x和y定义的有序点集)上近似具有有限数量的线段和圆弧(恒定曲率)的路径?结果曲线需要为C1(坡度的连续性) 最大数量或线段和圆弧可以是一个参数。另一个有趣的约束是防止两个连续的圆弧圆没有中间线段连接它们 我看不出有任何方法可以做到这一点,我也不认为有任何方法可以做到这一点,但任何关于这一目标的暗示都是受欢迎的 示例: 考虑一下这条路。它看起来像一条直线,但实际上是一组非常接近的点。没有噪声,点序列的顺序是众所周知的 我想用最少数量的连续线段和圆弧(比如10
所以你得到了一个点云。。。对于此类情况,通常认为靠近的点是连接的,因此:
- 参见子链接,这里有很多适合的示例
5.0度
角度变化作为线的阈值,并将检测到的线的最小尺寸作为50个样本(太懒了,无法在假设点密度不变的情况下计算长度)。结果如下所示:
点是检测到的线端点,绿线是检测到的线,白色的“线”是曲线,所以我现在看不出这种方法有任何问题
现在的问题是关于左边的点(曲线),我认为也应该有几何方法,因为它只是圆弧,所以类似这样
2考虑直线段固定,并在每个关节处放置一个圆弧。单独处理每个关节,我认为您有一个容易处理的问题,即找到最佳圆弧中心/半径,以满足连续性并改善拟合
3,现在你非常仔细地考虑所有弧中心和半径(由切线定义的段)作为一个全局优化问题。如果N较大,这当然会爆炸。
用其他曲线近似给定曲线时,一个典型的约束是将近似曲线绑定到原始曲线内的ε软管上(用固定半径ε的圆盘表示) 对于G1或C2连续近似(来自CNC/CAD的人喜欢)和BIARC(直线段可以被视为具有无限半径的圆弧),我的前同事开发了一种算法,给出了如下解决方案[点击放大]: 以上图片取自项目网站:该算法速度快,即在O(nlogn)时间内运行,并且基于广义Voronoi图。然而,它没有给出精确的最小元素数的近似值。如果你想寻找理论上的最佳值,我会参考Drysdale等人的一篇论文,CGTA,2008。光栅或矢量输入?寻找没有样本输入/输出的曲线拟合很难推荐任何东西。我通常的向量形式方法是将采样点与邻域(连接组件分析)分组,然后确定它们是直线还是曲线(基于角度变化)