B样条曲线

B样条曲线

1. Instruction

B样条(B-Spline)是一种曲线拟合方法,相较于Bezier曲线,B-Spline更容易局部调整。

本例程实现原理、符号定义与https://pages.mtu.edu/~shene/COURSES/cs3621/NOTES/ 一致
代码地址:
https://github.com/Christopher6488/BSpline

2. Some Important Points

2.1 Definition:

Where N is the basis function, which is defined below:
We can calculate the basis function, recursively. And the kont vector is defined below:

knot vector = u 0 , u 1 , . . . , u m ( m = n + p + 1 ) {u_0,u_1,...,u_m}(m=n+p+1) u0,u1,...,um(m=n+p+1)

BSpiline上的一个点最多受p+1个点的影响,而一个基函数 N i , p N_{i,p} Ni,p仅在其local support span [ u i , u i + p + 1 ) [u_i, u_{i+p+1}) [ui,ui+p+1) 产生作用

2.2 Recursive Diagram

There are there are at most p+1 degree p non-zero basis functions of degree p on a knot span [ u i , u i + 1 ) [u_i, u_{i+1}) [ui,ui+1)

2.2 Classification

2.2.1 Open Curve

定义在 [ u p , u m − p ] [u_p, u_{m-p}] [up,ump], 因为只有在这些区间上,才有足够多(最多p+1个)的非零基函数对该区间support。

特别地,如果矢量节点均匀分布,则为Uniform BSpline. 如果前p+1个矢量节点重复并且最后p+1个矢量节点重复,则为Clamped BSpline.

Clamped BSpline 经过第一个Control Point和最后一个Control Point,并且和第一个control polyline以及最后一个control polyline相切。本代码是对 Uniform BSplineClamped BSpline的实现。

2.2.2 Closed Curve

3. Result

Uniform BSpline拟合2d点

Uniform BSpline拟合3d点

Clamped BSpline拟合2d点

Clamped BSpline拟合3d点

代码地址:https://github.com/Christopher6488/BSpline
参考资料:https://pages.mtu.edu/~shene/COURSES/cs3621/NOTES/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值