贝塞尔曲线
公式
P
(
t
)
=
∑
i
=
0
n
−
1
P
i
B
i
,
n
(
t
)
(1)
\mathbf{P}(t) = \sum_{i=0}^{n-1}\mathbf{P}_{i}B_{i,n}(t) \tag{1}
P(t)=i=0∑n−1PiBi,n(t)(1)
其中:
B
i
,
n
(
t
)
=
C
n
i
t
i
(
1
−
t
)
n
−
i
(2)
B_{i,n}(t) = C_{n}^{i}t^{i}(1-t)^{n-i} \tag{2}
Bi,n(t)=Cniti(1−t)n−i(2)
B-Spline曲线
产生的背景: 贝塞尔曲线两大缺点1.阶次随着控制点数增加而线性增加,2.改变单个控制点会影响整个曲线
公式
P
(
t
)
=
∑
i
=
0
n
−
1
P
i
B
i
,
d
(
t
)
(3)
\mathbf{P}(t) = \sum_{i=0}^{n-1}\mathbf{P}_{i}B_{i,d}(t) \tag{3}
P(t)=i=0∑n−1PiBi,d(t)(3)
其中:
B
i
,
d
(
t
)
=
u
−
u
i
u
i
+
d
−
1
−
u
i
B
i
,
d
−
1
(
t
)
+
u
i
+
d
−
u
u
i
+
d
−
u
i
+
1
B
i
+
1
,
d
−
1
(
t
)
(4)
B_{i,d}(t) = \frac{u-u_{i}}{u_{i+d-1}-u_{i}}B_{i,d-1}(t) + \frac{u_{i+d}-u}{u_{i+d}-u_{i+1}}B_{i+1,d-1}(t) \tag{4}
Bi,d(t)=ui+d−1−uiu−uiBi,d−1(t)+ui+d−ui+1ui+d−uBi+1,d−1(t)(4)
式(4)中的
B
i
,
d
(
t
)
B_{i,d}(t)
Bi,d(t) 的初值由下式(5)计算:
B
i
,
0
(
t
)
=
{
1
t
i
⩽
t
⩽
t
i
+
1
0
o
t
h
e
r
(5)
B_{i,0}(t) = \left\{\begin{matrix} 1 && t_{i} \leqslant t \leqslant t_{i+1}\\ 0 && other \end{matrix}\right. \tag{5}
Bi,0(t)={10ti⩽t⩽ti+1other(5)
上式(5)中的
[
t
i
,
t
i
+
1
]
[t_{i},t_{i+1}]
[ti,ti+1] 为相邻节点区间,根据该区间是否是相同的可将B样条曲线分为均匀样条和非均匀样条。
性质
说明: 下面图像中
N
N
N 指代上面公式中的
B
B
B,
u
u
u 指代上面公式中的
t
t
t ,假设阶次
d
=
3
d=3
d=3 ,由公式(4)和(5)的递推关系可得下图
从左图中可以看出
N
1
,
3
N_{1,3}
N1,3在节点区间
[
u
1
,
u
5
)
[u1, u5)
[u1,u5)中非零,基函数
N
1
,
3
N_{1,3}
N1,3最后是要与控制点
P
1
\mathbf{P}_{1}
P1相乘,因此可知控制点只在区间
[
u
1
,
u
5
)
[u1, u5)
[u1,u5)内有效,于是可获得性质1: 基函数
N
i
,
p
N_{i,p}
Ni,p只在节点区间
[
u
i
,
u
i
+
p
+
1
)
[u_{i},u_{i+p+1})
[ui,ui+p+1)不为0,通俗解释就是控制点
P
i
\mathbf{P}_{i}
Pi只在节点区间
[
u
i
,
u
i
+
d
+
1
)
[u_{i},u_{i+d+1})
[ui,ui+d+1)内被用上。
从右图可以看出在节点区间
[
u
3
,
u
4
)
[u_{3},u_{4})
[u3,u4)上有
N
0
,
3
,
N
1
,
3
,
N
2
,
3
,
N
3
,
3
N_{0,3},N_{1,3},N_{2,3},N_{3,3}
N0,3,N1,3,N2,3,N3,3 四个基函数非零,于是可获得性质2: 在区间
[
u
i
,
u
i
+
1
]
[u_{i},u_{i+1}]
[ui,ui+1]上最多有
(
d
+
1
)
(d+1)
(d+1)个
d
d
d次基函数非零,通俗解释就是在区间
[
u
i
,
u
i
+
1
]
[u_{i},u_{i+1}]
[ui,ui+1]上只有
P
i
−
d
,
.
.
.
.
.
.
P
i
\mathbf{P}_{i-d},......\mathbf{P}_{i}
Pi−d,......Pi这些控制点被用上。
优点:
1.可指定阶次d
2.改变单个控制点只影响局部曲线段
参考
上面内容只是做了个简单的笔记,详细内容可参考下面的链接:
详解样条曲线(上)(包含贝塞尔曲线)
深入理解B样条曲线
贝塞尔曲线
在B-spline中,如何理解knot和breakpoint?彼此之间联系和区别是什么?
Toeplitz Matrix 表达 B 样条的 basis functions