python 3d曲线_如何比较Python中的两条3D曲线?

本文探讨了在Python中如何比较两条3D曲线,提出了通过计算沿路径的距离和使用插值方法来评估曲线差异的方法。介绍了normed_distance_along_path函数计算曲线上的累积距离,以及average_distance_between_polylines函数用于计算插值后的节点间距离并求平均值,以量化两条曲线的相似性。
摘要由CSDN通过智能技术生成

“行简化”的一般问题似乎是一个完整的研究领域。我建议您看一下,例如,Ramer–Douglas–Peucker algorithm。有几个python模块,我可以找到:rdp和{a3}(它们也实现了Py-Visvalingam-Whyatt algorithm)。在

总之,我正在尝试用插值来计算两条折线之间的差异。任何曲线都可以比较,即使没有公共点。在

第一个想法是计算两条多段线沿路径的距离。它们被用作从第一条曲线上的一个给定点到另一条曲线上相对接近的点的路标。在

然后,第一条曲线的点可以在另一条曲线上插值。现在可以逐点比较这两个数据集。在

在图上,黑色曲线是xy2在曲线xy1上的插值。因此,可以计算出黑色方块与橙色圆圈之间的距离,并求平均值。在

这给出了一个平均距离测量值,但没有什么可比较的,也无法确定应用的缩减是否足够好。。。在

def normed_distance_along_path( polyline ):

polyline = np.asarray(polyline)

distance = np.cumsum( np.sqrt(np.sum( np.diff(polyline, axis=1)**2, axis=0 )) )

return np.insert(distance, 0, 0)/distance[-1]

def average_distance_between_polylines(xy1, xy2):

s1 = normed_distance_along_path(xy1)

s2 = normed_distance_along_path(xy2)

interp

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值