【问题标题】:How to split arbitrary curve into line and arc segments in Python如何在Python中将任意曲线分割成直线和圆弧段
【发布时间】:2020-05-10 19:55:48
【问题描述】:

我有一个近似于路段的 (x, y) 点序列,我想识别它们并将它们分成两种类型的组:

  1. 直线段
  2. 非直线段。目前我并不关心这些的参数化。它们可能是恒定曲率弧、变化曲率回旋曲线……任何东西(但最好是简单)

关于如何在 Python 中解决这个问题的任何提示?我可以通过搜索“曲线分解成线和弧”或类似的术语找到一些关于它的学术出版物,但它们没有提供任何示例代码,并且从头开始实现整个方法对我来说是不可行的。任何帮助表示赞赏!

谢谢!

【问题讨论】:

  • 看看霍夫变换,我认为openCV中有一个实现。

标签: python geometry line curve decomposition


【解决方案1】:

使用三元组 P1,P2,P3 或 P3,P4,P5 或 P100,P101,P102 等。

通过三个点,您可以找到穿过它们的圆周。如果它的半径太大(比如 100 公里),它可能是一条直线,尽管它也可能是回旋曲线的开始(R 在回旋曲线与直线连接的地方是无限的)。

所以你还必须测试第四点,判断它是属于那个cicumference还是它在回旋曲线中。这个知道4个点的回旋曲线的参数A可以通过连续迭代计算出来。

如果给定的轴不是道路轴,而是与其平行,请记住平行于回旋曲线的曲线不是另一个回旋曲线。

一旦您定义了所有线段类型,您需要进行微调,以使所有线段在其端点处相切。这项工作可以通过使用三元组、除以旋转中间段的切线误差值或您能想到的其他方法来完成。

【讨论】:

    猜你喜欢
    • 2013-01-02
    • 1970-01-01
    • 1970-01-01
    • 2021-05-17
    • 1970-01-01
    • 1970-01-01
    • 2020-01-06
    • 1970-01-01
    • 2018-09-01
    相关资源
    最近更新 更多