java 三次贝塞尔曲线算法_用多段三次贝塞尔曲线和距离以及曲率约束逼近数据...

本文介绍了如何使用Python的scipy和FITPACK库通过B样条找到数据点的近似曲线,并将其转换为多段贝塞尔曲线。通过对`splprep`的`s`参数进行调整,可以控制曲线的平滑度和与数据点的接近程度。最后,展示了Zachary Pincus的算法将B样条转换为等效的贝塞尔曲线系列。
摘要由CSDN通过智能技术生成

我找到了满足我的criterea的解决方案 . 解决方案是首先找到近似于最小二乘意义的点的B样条,然后将该样条转换为多段贝塞尔曲线 . B样条确实具有以下优点:与贝塞尔曲线相比,它们不会通过控制点提供一种指定近似曲线的所需"smoothness"的方法 . 生成这样的样条线所需的功能在FITPACK库中实现,scipy为其提供了python绑定 . 让我假设我将我的数据读入列表 x 和 y ,然后我可以这样做:

import matplotlib.pyplot as plt

import numpy as np

from scipy import interpolate

tck,u = interpolate.splprep([x,y],s=3)

unew = np.arange(0,1.01,0.01)

out = interpolate.splev(unew,tck)

plt.figure()

plt.plot(x,y,out[0],out[1])

plt.show()

结果如下所示:

4f3f2da0-aa68-44b8-863a-0e7037cea045.png

如果我希望曲线更平滑,那么我可以将 s 参数增加到 splprep . 如果我希望近似值更接近数据,我可以减少 s 参数,以减少平滑度 . 通过以编程方式查看多个 s 参数,我可以找到符合给定要求的良好参数 .

但问题是如何将该结果转换为贝塞尔曲线 . Zachary Pincus

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值