b-spline python_基于numpy/scipy的快速bspline算法

所以,在我的问题困扰了很多,做了很多研究之后,我终于有了答案。scipy中的所有东西都是可用的,我把我的代码放在这里,希望其他人能发现它有用。在

该函数接受一个N-d点数组、一个曲线阶数、一个周期状态(打开或关闭),并将沿着该曲线返回N个样本。有一些方法可以确保曲线样本是等距的,但目前我将集中讨论这个问题,因为它都是关于速度的。在

值得注意的是:我似乎无法超越20度的曲线。当然,这已经是过火了,但我觉得值得一提。在

同样值得注意的是:在我的机器上,下面的代码可以在0.017s内计算出100000个样本import numpy as np

import scipy.interpolate as si

def bspline(cv, n=100, degree=3, periodic=False):

""" Calculate n samples on a bspline

cv : Array ov control vertices

n : Number of samples to return

degree: Curve degree

periodic: True - Curve is closed

False - Curve is open

"""

# If periodic, extend the point array by count+degree+1

cv = np.asarray(cv)

count = len(cv)

if periodic:

factor, fraction = divmod(c

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值