【问题标题】:How to split arbitrary curve into line and arc segments in Python如何在Python中将任意曲线分割成直线和圆弧段
【发布时间】:2020-05-10 19:55:48
【问题描述】:
我有一个近似于路段的 (x, y) 点序列,我想识别它们并将它们分成两种类型的组:
- 直线段
- 非直线段。目前我并不关心这些的参数化。它们可能是恒定曲率弧、变化曲率回旋曲线……任何东西(但最好是简单)
关于如何在 Python 中解决这个问题的任何提示?我可以通过搜索“曲线分解成线和弧”或类似的术语找到一些关于它的学术出版物,但它们没有提供任何示例代码,并且从头开始实现整个方法对我来说是不可行的。任何帮助表示赞赏!
谢谢!
【问题讨论】:
标签:
python
geometry
line
curve
decomposition
【解决方案1】:
使用三元组 P1,P2,P3 或 P3,P4,P5 或 P100,P101,P102 等。
通过三个点,您可以找到穿过它们的圆周。如果它的半径太大(比如 100 公里),它可能是一条直线,尽管它也可能是回旋曲线的开始(R 在回旋曲线与直线连接的地方是无限的)。
所以你还必须测试第四点,判断它是属于那个cicumference还是它在回旋曲线中。这个知道4个点的回旋曲线的参数A可以通过连续迭代计算出来。
如果给定的轴不是道路轴,而是与其平行,请记住平行于回旋曲线的曲线不是另一个回旋曲线。
一旦您定义了所有线段类型,您需要进行微调,以使所有线段在其端点处相切。这项工作可以通过使用三元组、除以旋转中间段的切线误差值或您能想到的其他方法来完成。