B样条曲线曲面介绍

2 篇文章 0 订阅
1 篇文章 0 订阅

B样条基函数

B样条基函数的定义

由de Boor和Cox分别导出B样条基函数的递推定义,B样条基函数可以表示为
N i , 0 ( u ) = { 1 , u i ⩽ u < u i + 1 0 , 其 他 N i , p ( u ) = u − u i u i + p − u i N i , p − 1 ( u ) + u i + p + 1 − u u i + p + 1 − u i + 1 N i + 1 , p − 1 ( u ) , p > 0 \begin{aligned} N_{i,0}(u) &= \begin{cases} 1 ,\quad u_i \leqslant u < u_{i+1} \\ 0 ,\quad 其他 \end{cases} \\ N_{i,p}(u) &= \dfrac{u-u_i}{u_{i+p}-u_i}N_{i,p-1}(u)+\dfrac{u_{i+p+1}-u}{u_{i+p+1}-u_{i+1}}N_{i+1,p-1}(u) ,\quad p > 0 \end{aligned} Ni,0(u)Ni,p(u)={1,uiu<ui+10,=ui+puiuuiNi,p1(u)+ui+p+1ui+1ui+p+1uNi+1,p1(u),p>0
并约定 0 / 0 = 0 0/0=0 0/0=0。式中 p p p表示B样条的幂次, u u u为节点,下标 i i i为B样条的序号。

上式表明,任意 p p p次B样条基函数可由两个相邻的 p − 1 p-1 p1次B样条基函数的线性组合构成。

B样条基函数的性质

  • 如果 u ∉ [ u i , u i + p + 1 ) u\notin\left[u_i,u_{i+p+1}\right) u/[ui,ui+p+1),则 N i , p ( u ) = 0 N_{i,p}(u)=0 Ni,p(u)=0
  • u ∈ [ u i , u i + 1 ) u\in\left[u_i,u_{i+1}\right) u[ui,ui+1)时, ∑ j = i − p i N j , p ( u ) = 1 \sum\limits_{j=i-p}^{i}N_{j,p}(u)=1 j=ipiNj,p(u)=1

B样条基函数的导数

B样条基函数的求导公式为
N i , p ′ ( u ) = p u i + p − u i N i , p − 1 ( u ) − p u i + p + 1 − u i + 1 N i + 1 , p − 1 ( u ) . N^{'}_{i,p}(u)=\dfrac{p}{u_{i+p}-u_i}N_{i,p-1}(u)-\dfrac{p}{u_{i+p+1}-u_{i+1}}N_{i+1,p-1}(u). Ni,p(u)=ui+puipNi,p1(u)ui+p+1ui+1pNi+1,p1(u).
下面通过对 p p p利用数学归纳法来证明求导公式。当 p = 1 p=1 p=1时, N i , p − 1 ( u ) N_{i,p-1}(u) Ni,p1(u) N i + 1 , p − 1 ( u ) N_{i+1,p-1}(u) Ni+1,p1(u) 在每个节点区间内或者为 0 0 0,或者为 1 1 1,因此 N i , p ′ ( u ) N^{'}_{i,p}(u) Ni,p(u) 等于 1 u i + 1 − u i \dfrac{1}{u_{i+1}-u_i} ui+1ui1或者 − 1 u i + 2 − u i + 1 -\dfrac{1}{u_{i+2}-u_{i+1}} ui+2ui+11。我们假设当 p − 1 ( p > 1 ) p-1(p>1) p1(p>1)时求导公式成立。根据求导法则 ( f g ) ′ = f ′ g + f g ′ (fg)^{'}=f^{'}g+fg^{'} (fg)=fg+fg,对基函数
N i , p ( u ) = u − u i u i + p − u i N i , p − 1 ( u ) + u i + p + 1 − u u i + p + 1 − u i + 1 N i + 1 , p − 1 ( u ) N_{i,p}(u)=\dfrac{u-u_i}{u_{i+p}-u_i}N_{i,p-1}(u)+\dfrac{u_{i+p+1}-u}{u_{i+p+1}-u_{i+1}}N_{i+1,p-1}(u) Ni,p(u)=ui+puiuuiNi,p1(u)+ui+p+1ui+1ui+p+1uNi+1,p1(u)
求导,得到
N i , p ′ ( u ) = 1 u i + p − u i N i , p − 1 ( u ) + u − u i u i + p − u i N i , p − 1 ′ ( u ) − 1 u i + p + 1 − u i + 1 N i + 1 , p − 1 ( u ) + u i + p + 1 − u u i + p + 1 − u i + 1 N i + 1 , p − 1 ′ ( u ) = 1 u i + p − u i N i , p − 1 ( u ) − 1 u i + p + 1 − u i + 1 N i + 1 , p − 1 ( u ) + u − u i u i + p − u i ( p − 1 u i + p − 1 − u i N i , p − 2 ( u ) − p − 1 u i + p − u i + 1 N i + 1 , p − 2 ( u ) ) + u i + p + 1 − u u i + p + 1 − u i + 1 ( p − 1 u i + p − u i + 1 N i + 1 , p − 2 ( u ) − p − 1 u i + p + 1 − u i + 2 N i + 2 , p − 2 ( u ) ) = 1 u i + p − u i N i , p − 1 ( u ) − 1 u i + p + 1 − u i + 1 N i + 1 , p − 1 ( u ) + p − 1 u i + p − u i u − u i u i + p − 1 − u i N i , p − 2 ( u ) + p − 1 u i + p − u i + 1 ( u i + p + 1 − u u i + p + 1 − u i + 1 − u − u i u i + p − u i ) N i + 1 , p − 2 ( u ) − p − 1 u i + p + 1 − u i + 1 u i + p + 1 − u u i + p + 1 − u i + 2 N i + 2 , p − 2 ( u ) . \begin{aligned} N^{'}_{i,p}(u)=& \dfrac{1}{u_{i+p}-u_i}N_{i,p-1}(u)+\dfrac{u-u_i}{u_{i+p}-u_i}N^{'}_{i,p-1}(u) \\ &-\dfrac{1}{u_{i+p+1}-u_{i+1}}N_{i+1,p-1}(u)+\dfrac{u_{i+p+1}-u}{u_{i+p+1}-u_{i+1}}N^{'}_{i+1,p-1}(u) \\ =& \dfrac{1}{u_{i+p}-u_i}N_{i,p-1}(u)-\dfrac{1}{u_{i+p+1}-u_{i+1}}N_{i+1,p-1}(u) \\ &+\dfrac{u-u_i}{u_{i+p}-u_i}\left(\dfrac{p-1}{u_{i+p-1}-u_i}N_{i,p-2}(u)-\dfrac{p-1}{u_{i+p}-u_{i+1}}N_{i+1,p-2}(u)\right) \\ &+\dfrac{u_{i+p+1}-u}{u_{i+p+1}-u_{i+1}}\left(\dfrac{p-1}{u_{i+p}-u_{i+1}}N_{i+1,p-2}(u)-\dfrac{p-1}{u_{i+p+1}-u_{i+2}}N_{i+2,p-2}(u)\right) \\ =& \dfrac{1}{u_{i+p}-u_i}N_{i,p-1}(u)-\dfrac{1}{u_{i+p+1}-u_{i+1}}N_{i+1,p-1}(u) \\ &+\dfrac{p-1}{u_{i+p}-u_i}\dfrac{u-u_i}{u_{i+p-1}-u_i}N_{i,p-2}(u) \\ &+\dfrac{p-1}{u_{i+p}-u_{i+1}}\left(\dfrac{u_{i+p+1}-u}{u_{i+p+1}-u_{i+1}}-\dfrac{u-u_i}{u_{i+p}-u_i}\right)N_{i+1,p-2}(u) \\ &-\dfrac{p-1}{u_{i+p+1}-u_{i+1}}\dfrac{u_{i+p+1}-u}{u_{i+p+1}-u_{i+2}}N_{i+2,p-2}(u). \end{aligned} Ni,p(u)===ui+pui1Ni,p1(u)+ui+puiuuiNi,p1(u)ui+p+1ui+11Ni+1,p1(u)+ui+p+1ui+1ui+p+1uNi+1,p1(u)ui+pui1Ni,p1(u)ui+p+1ui+11Ni+1,p1(u)+ui+puiuui(ui+p1uip1Ni,p2(u)ui+pui+1p1Ni+1,p2(u))+ui+p+1ui+1ui+p+1u(ui+pui+1p1Ni+1,p2(u)ui+p+1ui+2p1Ni+2,p2(u))ui+pui1Ni,p1(u)ui+p+1ui+11Ni+1,p1(u)+ui+puip1ui+p1uiuuiNi,p2(u)+ui+pui+1p1(ui+p+1ui+1ui+p+1uui+puiuui)Ni+1,p2(u)ui+p+1ui+1p1ui+p+1ui+2ui+p+1uNi+2,p2(u).
由于
u i + p + 1 − u u i + p + 1 − u i + 1 − u − u i u i + p − u i = − 1 + u i + p + 1 − u u i + p + 1 − u i + 1 + 1 − u − u i u i + p − u i = − u i + p + 1 − u i + 1 u i + p + 1 − u i + 1 + u i + p + 1 − u u i + p + 1 − u i + 1 + u i + p − u i u i + p − u i − u − u i u i + p − u i = u i + p − u u i + p − u i − u − u i + 1 u i + p + 1 − u i + 1 . \begin{aligned} \dfrac{u_{i+p+1}-u}{u_{i+p+1}-u_{i+1}}-\dfrac{u-u_i}{u_{i+p}-u_i}=& -1+\dfrac{u_{i+p+1}-u}{u_{i+p+1}-u_{i+1}}+1-\dfrac{u-u_i}{u_{i+p}-u_i} \\ =& -\dfrac{u_{i+p+1}-u_{i+1}}{u_{i+p+1}-u_{i+1}}+\dfrac{u_{i+p+1}-u}{u_{i+p+1}-u_{i+1}} \\ & +\dfrac{u_{i+p}-u_i}{u_{i+p}-u_i}-\dfrac{u-u_i}{u_{i+p}-u_i} \\ =&\dfrac{u_{i+p}-u}{u_{i+p}-u_i}-\dfrac{u-u_{i+1}}{u_{i+p+1}-u_{i+1}}. \end{aligned} ui+p+1ui+1ui+p+1uui+puiuui===1+ui+p+1ui+1ui+p+1u+1ui+puiuuiui+p+1ui+1ui+p+1ui+1+ui+p+1ui+1ui+p+1u+ui+puiui+puiui+puiuuiui+puiui+puui+p+1ui+1uui+1.
于是得到
N i , p ′ ( u ) = 1 u i + p − u i N i , p − 1 ( u ) − 1 u i + p + 1 − u i + 1 N i + 1 , p − 1 ( u ) + p − 1 u i + p − u i ( u − u i u i + p − 1 − u i N i , p − 2 ( u ) + u i + p − u u i + p − u i + 1 N i + 1 , p − 2 ( u ) ) − p − 1 u i + p + 1 − u i + 1 ( u − u i + 1 u i + p − u i + 1 N i + 1 , p − 2 ( u ) + u i + p + 1 − u u i + p + 1 − u i + 2 N i + 2 , p − 2 ( u ) ) = 1 u i + p − u i N i , p − 1 ( u ) − 1 u i + p + 1 − u i + 1 N i + 1 , p − 1 ( u ) + p − 1 u i + p − u i N i , p − 1 ( u ) − p − 1 u i + p + 1 − u i + 1 N i + 1 , p − 1 ( u ) = p u i + p − u i N i , p − 1 ( u ) − p u i + p + 1 − u i + 1 N i + 1 , p − 1 ( u ) . \begin{aligned} N^{'}_{i,p}(u)=& \dfrac{1}{u_{i+p}-u_i}N_{i,p-1}(u)-\dfrac{1}{u_{i+p+1}-u_{i+1}}N_{i+1,p-1}(u) \\ &+\dfrac{p-1}{u_{i+p}-u_i}\left(\dfrac{u-u_i}{u_{i+p-1}-u_i}N_{i,p-2}(u)+\dfrac{u_{i+p}-u}{u_{i+p}-u_{i+1}}N_{i+1,p-2}(u)\right) \\ &-\dfrac{p-1}{u_{i+p+1}-u_{i+1}}\left(\dfrac{u-u_{i+1}}{u_{i+p}-u_{i+1}}N_{i+1,p-2}(u)+\dfrac{u_{i+p+1}-u}{u_{i+p+1}-u_{i+2}}N_{i+2,p-2}(u)\right) \\ =& \dfrac{1}{u_{i+p}-u_i}N_{i,p-1}(u)-\dfrac{1}{u_{i+p+1}-u_{i+1}}N_{i+1,p-1}(u) \\ &+\dfrac{p-1}{u_{i+p}-u_i}N_{i,p-1}(u)-\dfrac{p-1}{u_{i+p+1}-u_{i+1}}N_{i+1,p-1}(u) \\ =& \dfrac{p}{u_{i+p}-u_i}N_{i,p-1}(u)-\dfrac{p}{u_{i+p+1}-u_{i+1}}N_{i+1,p-1}(u). \end{aligned} Ni,p(u)===ui+pui1Ni,p1(u)ui+p+1ui+11Ni+1,p1(u)+ui+puip1(ui+p1uiuuiNi,p2(u)+ui+pui+1ui+puNi+1,p2(u))ui+p+1ui+1p1(ui+pui+1uui+1Ni+1,p2(u)+ui+p+1ui+2ui+p+1uNi+2,p2(u))ui+pui1Ni,p1(u)ui+p+1ui+11Ni+1,p1(u)+ui+puip1Ni,p1(u)ui+p+1ui+1p1Ni+1,p1(u)ui+puipNi,p1(u)ui+p+1ui+1pNi+1,p1(u).
证毕。

B样条曲线曲面

B样条曲线的定义

p p p次B样条曲线的定义为
P ( u ) = ∑ i = 0 n N i , p ( u ) V i , a ⩽ u ⩽ b P\left(u\right)=\sum\limits_{i=0}^{n}N_{i,p}(u)V_i,\quad a\leqslant u\leqslant b P(u)=i=0nNi,p(u)Vi,aub
这里 { V i } \left\{V_i\right\} {Vi}是控制点, { N i , p ( u ) } \left\{N_{i,p}(u)\right\} {Ni,p(u)}是定义在非周期(并且非均匀)节点矢量
U = { a , ⋯   , a ⏟ p + 1 , u p + 1 , ⋯   , u m − p − 1 , b , ⋯   , b ⏟ p + 1 } U = \left\{ \underbrace{a,\cdots,a}_{p+1}, u_{p+1},\cdots,u_{m-p-1}, \underbrace{b,\cdots,b}_{p+1} \right\} U=p+1 a,,a,up+1,,ump1,p+1 b,,b
(包含 m + 1 m+1 m+1个节点)上的 p p p次B样条基函数。由 { V i } \left\{V_i\right\} {Vi}构成的多边形称为控制多边形。

有理B样条曲线曲面

NURBS曲线的定义

一条 p p p次NURBS曲线的定义为
P ( u ) = ∑ i = 0 n N i , p ( u ) ω i V i ∑ i = 0 n N i , p ( u ) ω i , a ⩽ u ⩽ b P\left(u\right)=\dfrac{\sum\limits_{i=0}^{n}N_{i,p}(u)\omega_iV_i}{\sum\limits_{i=0}^{n}N_{i,p}(u)\omega_i},\quad a\leqslant u\leqslant b P(u)=i=0nNi,p(u)ωii=0nNi,p(u)ωiVi,aub
这里 { V i } \left\{V_i\right\} {Vi}是控制点(它们形成控制多边形), { ω i } \left\{\omega_i\right\} {ωi}是权因子, { N i , p ( u ) } \left\{N_{i,p}(u)\right\} {Ni,p(u)}是定义在非周期(并且非均匀)节点矢量 U U U上的 p p p次B样条基函数。其中
U = { a , ⋯   , a ⏟ p + 1 , u p + 1 , ⋯   , u m − p − 1 , b , ⋯   , b ⏟ p + 1 } U = \left\{ \underbrace{a,\cdots,a}_{p+1}, u_{p+1},\cdots,u_{m-p-1}, \underbrace{b,\cdots,b}_{p+1} \right\} U=p+1 a,,a,up+1,,ump1,p+1 b,,b

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值