赞
踩
“牵一发而动全身”:修改单个控制点,会改变整条曲线的形状
【原因分析】
B
e
r
n
s
t
e
i
n
Bernstein
Bernstein多项式
B
j
n
(
t
)
B^n_j(t)
Bjn(t) 对称,并且满足在
t
∈
(
0
,
1
)
t∈(0,1)
t∈(0,1) 时均不为0
(函数值不为0的区间通常叫做该函数的支撑区间)
对称性如下图所示:
Bezier曲线:
b n ( t ) = ∑ j n b j ∗ B j n ( t ) b_n(t)=\sum_{j}^{n}b_j*B^n_j(t) bn(t)=∑jnbj∗Bjn(t)
相当于
B
e
r
n
s
t
e
i
n
Bernstein
Bernstein多项式对控制点
b
j
b_j
bj 的加权和
由于
B
j
n
(
t
)
≠
0
B^n_j(t)≠0
Bjn(t)=0 (在整个区间
[
0
,
1
]
[0,1]
[0,1] 上有支撑),所以每个控制点的改变都会影响整条Bezier曲线
图中7个混合函数
N
i
,
2
N_{i,2}
Ni,2
(
i
=
0
,
1
,
2...6
)
(i=0,1,2...6)
(i=0,1,2...6)
每个混合函数的支撑区间只是
[
0
,
1
]
[0,1]
[0,1] 的一部分,例:
B样条曲线提出:保留全部Bezier曲线优点的同时,克服了其缺点
(样条spline:分段连续多项式!)
整条曲线用一个完整的表达形式(但内在的量是低阶一段一段的)
【Example:三次样条】
现有
n
+
1
n+1
n+1 个点,每两个点之间构造一个多项式,则有
n
n
n 个小区间
B样条曲线数学表达式:
P
(
u
)
=
∑
j
=
0
n
P
i
∗
B
i
,
k
(
u
)
P(u)=\sum_{j=0}^nP_i*B_{i,k}(u)
P(u)=∑j=0nPi∗Bi,k(u)
(
u
∈
[
u
k
−
1
,
u
n
+
1
]
)
(u∈[u_{k-1},u_{n+1}])
(u∈[uk−1,un+1])
Bezier曲线数学表达式:
P
(
u
)
=
∑
j
=
0
n
P
i
∗
B
i
,
n
(
u
)
P(u)=\sum_{j=0}^nP_i*B_{i,n}(u)
P(u)=∑j=0nPi∗Bi,n(u)
(
u
∈
[
0
,
1
]
)
(u∈[0,1])
(u∈[0,1])
不同之处:
(1)B样条基函数与控制点个数 n + 1 n+1 n+1(或阶数 n n n)无关
(2)两者参数 u u u的取值范围不同:
【idea】
构造一种递推公式,由0次构造1次,1次构造2次,2次构造3次…最终构造出k阶(k-1次)的B样条基函数
并且约定
0
/
0
=
0
0/0=0
0/0=0
k阶的B样条基函数由两个k-1阶的B样条基函数线性组合而成
要确定第
i
i
i 个
k
k
k 阶B样条
B
i
,
k
(
u
)
B_{i,k}(u)
Bi,k(u) :
要用到
u
i
,
u
i
+
1
,
.
.
.
,
u
i
+
k
u_i,u_{i+1},...,u_{i+k}
ui,ui+1,...,ui+k 共
k
+
1
k+1
k+1 个节点
↓
[
u
i
,
u
i
+
k
]
[u_i,u_{i+k}]
[ui,ui+k] 称为
B
i
,
k
(
u
)
B_{i,k}(u)
Bi,k(u) 的支撑区间
【推导举例】
1阶0次B样条:
2阶1次B样条:
3阶2次B样条:
【问题Question】
No.1:对 n + 1 n+1 n+1 个顶点, k k k 阶B样条曲线需要多少个节点向量 u i u_i ui 与之匹配?
当 i = n i=n i=n 时,第n段多项式,需要n+k+1个节点向量与之匹配
节点向量个数 n + k + 1 n+k+1 n+k+1 = 阶数 k k k + 顶点数 n + 1 n+1 n+1
No.2 :每个 p i p_i pi 都有一个 B i , k ( u ) B_{i,k}(u) Bi,k(u) 与之匹配,曲线的次数是 k − 1 k-1 k−1 次,这条曲线的定义区间是什么?(Bezier曲线的定义区间是 [ 0 , 1 ] [0,1] [0,1])
函数定义区间合法 → 所有与顶点配对的基函数在该区间内都有定义(都覆盖)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。