【发布时间】:2017-03-24 09:27:25
【问题描述】:
是否有任何算法允许在 x-y 平面上用有限数量的线段和圆弧(恒定曲率)来近似路径(即由 x 和 y 定义的有序点集)?生成的曲线需要为 C1(斜率连续性)。
最大数量或段和弧可以是一个参数。另一个有趣的约束是防止两个连续的圆弧没有中间线段连接它们。
我没有看到任何方法可以做到这一点,我不认为有任何方法可以做到这一点,但欢迎任何关于这个目标的暗示。
示例:
考虑这条路。它看起来像一条线,但实际上是一组非常接近的点。没有噪音,点序列的顺序是众所周知的。
我想用最少连续的线段和圆弧(比如说 10 条线段和 10 条圆弧)和 C1 连续性来近似这条曲线。段/弧的数量本身并不是一个目标,但我需要任何允许减少/增加该数量的参数,以达到一定的参数化简单性,但会损失精度。
解决方案:
这是我的解决方案,基于 Spektre 的回答。红色曲线是原始数据。黑线是线段,蓝色曲线是圆弧。绿色十字是显示半径的圆弧中心,蓝色十字是线段可能连接的点。
- 根据斜率最大偏差和线段最小长度作为参数检测线段。将新段步长的斜率与现有段的平均步长进行比较。我更喜欢基于优化的方法,但我认为它不适用于数量、位置和长度未知的不相交段。
- 用相切圆弧连接线段。为了关闭系统,选择半径以使段末端的移动最少。为我的目的添加了最小半径约束。我相信,当拐点很远(例如线几乎平行)并与相邻线段相互作用时,会有一些特殊情况需要处理。
【问题讨论】:
-
光栅还是矢量输入?寻找没有样本输入/输出的曲线拟合很难推荐任何东西。我对向量形式的常用方法是将采样点与邻居分组(连接分量分析),然后确定它们是直线还是曲线(基于每个距离的角度变化),然后将直线子段连接在一起并拟合曲线...
-
向量输入:我把问题修改得更清楚了。输入是一组由 x 和 y 定义的点。
标签: algorithm geometry computational-geometry