非均匀有理B-样条(Non-Uniform Rational B-Splines, NURBS)基础知识

非均匀有理B-样条(NURBS)是一种用于精确表示复杂几何形状的技术,包括有理曲线和曲面。NURBS通过在高维空间的B样条曲线投影得到,其控制顶点包含权重,允许更灵活的形状表示。基函数、结点插入和导数计算都有特定的数学表达式。NURBS在几何和代数角度的特性使得它们在计算机图形学和CAD系统中广泛应用。

B样条是无理的,组成无理B样条曲线或曲面。有理曲线或曲面可以精确地表示圆锥截面。非均匀有理B样条(Non-Uniform Rational B-Splines, NURBS)就是为了表达更精确的曲面引入的,其控制顶点包含权重。NURBS的基函数与B样条不同,但结点向量、张量积的性质和细分规则是不变的。

1 几何角度

Rd\mathbb{R}^dRd空间的NURBS实体通过在Rd+1\mathbb{R}^{d+1}Rd+1空间的B样条实体投影得到,其中ddd是维数。图1说明了一个在R2\mathbb{R}^2R2空间的半圆C(ξ)C(\xi)C(ξ)是如何通过在R3\mathbb{R}^3R3空间的二次B样条曲线Cw(ξ)C^w(\xi)Cw(ξ)得到的。

控制顶点Pi\mathbf{P}_iPi的表示如下
(Pi)j=(Piw)jwij=1,…,d(1) (\mathbf{P}_i)_j=\frac{(\mathbf{P}_i^w)_j}{w_i} \quad j=1,\dots,d \tag{1} (Pi)j=wi(Piw)jj=1,,d(1)
其中wi=(Piw)d+1w_i=(\mathbf{P}_i^w)_{d+1}wi=(Piw)d+1Piw\mathbf{P}_i^wPiw是“投影控制顶点”。权重wiw_iwi在几何上是“投影控制顶点”的“高”,见图1。也就是说Rd\mathbb{R}^{d}Rd维的NURBS实体中的控制顶点,是维的B样条控制顶点前几维分量除以最后一维分量得到的。

image-20210310103405887

图1     B样条曲线投影到z=1平面,得到NURBS半圆

从几何上来讲,在NURBS中进行结点插入首先要将NURBS中的控制顶点投影到Rd+1\mathbb{R}^{d+1}Rd+1维空间,之后使用B样条结点插入公式计算插入后的控制顶点,最后再将其投影到Rd\mathbb{R}^dRd维空间得到新的NURBS控制顶点。

2 代数角度

NURBS曲线的基函数表示为
Rip(ξ)=Ni,p(ξ)wiW(ξ)=Ni,p(ξ)wi∑i^=1nNi^,p(ξ)wi(2) R_{i}^{p}(\xi)=\frac{N_{i, p}(\xi) w_{i}}{W(\xi)}=\frac{N_{i, p}(\xi) w_{i}}{\sum_{\hat{i}=1}^{n} N_{\hat{i}, p}(\xi) w_{i}} \tag{2} Rip(ξ)=W(ξ)Ni,p(ξ)wi=i^=1nNi^,p(ξ)wiNi,p(ξ)wi(2)
其中,W(ξ)=∑i^=1nNi^,p(ξ)wi^W(\xi)=\sum_{\hat{i}=1}^{n} N_{\hat{i}, p}(\xi) w_{\hat{i}}W(ξ)=i^=1nNi^,p(ξ)wi^是权重函数,Ni,p(ξ)wiN_{i, p}(\xi) w_{i}Ni,p(ξ)wi是B样条基函数。

定义权重的对角矩阵
W=[w1w2⋱wn](3) \mathbf{W}=\left[\begin{array}{llll} w_{1} & & & \\ & w_{2} & & \\ & & \ddots & \\ & & & w_{n} \end{array}\right] \tag{3} W=w1w2wn(3)
N(ξ)\mathbf{N}(\xi)N(ξ)是表示B样条基函数的列向量,则式(2)可以写成矩阵形式
R(ξ)=1W(ξ)WN(ξ)(4) \mathbf{R}(\xi)=\frac{1}{W(\xi)}\mathbf{W}\mathbf{N}(\xi) \tag{4} R(ξ)=W(ξ)1WN(ξ)(4)
NURBS曲面的基函数可以表示为
Ri,jp,q(ξ,η)=Ni,p(ξ)Mi,p(ξ)wi,j∑i^=1n∑j^=1mNi^,p(ξ)Mj^,q(ξ)wi=1W(ξ,η)WN(ξ,η)(5) R_{i,j}^{p,q}(\xi,\eta)=\frac{N_{i, p}(\xi)M_{i, p}(\xi) w_{i,j}}{\sum_{\hat{i}=1}^{n} \sum_{\hat{j}=1}^{m} N_{\hat{i}, p}(\xi) M_{\hat{j}, q}(\xi) w_{i}}=\frac{1}{W(\xi,\eta)} \mathbf{W}\mathbf{N}(\xi,\eta) \tag{5} Ri,jp,q(ξ,η)=i^=1nj^=1mNi^,p(ξ)Mj^,q(ξ)wiNi,p(ξ)Mi,p(ξ)wi,j=W(ξ,η)1WN(ξ,η)(5)
NURBS基函数与B样条基函数有相同的性质。

NURBS基函数的一阶导数
ddξRip(ξ)=wiW(ξ)Ni,p′(ξ)−W′(ξ)Ni,p(ξ)W2(ξ)(6) \frac{d}{d \xi} R_{i}^{p}(\xi)=w_{i} \frac{W(\xi) N_{i, p}^{\prime}(\xi)-W^{\prime}(\xi) N_{i, p}(\xi)}{W^{2}(\xi)} \tag{6} dξdRip(ξ)=wiW2(ξ)W(ξ)Ni,p(ξ)W(ξ)Ni,p(ξ)(6)
其中Ni,p′(ξ)=ddξNi,p(ξ)N_{i, p}^{\prime}(\xi)=\frac{d}{d\xi}N_{i,p}(\xi)Ni,p(ξ)=dξdNi,p(ξ)W′(ξ)=∑i^=1nNi^,p′(ξ)wi^W^{\prime}(\xi)=\sum_{\hat{i}=1}^{n} N_{\hat{i}, p}^ {\prime}(\xi) w_{\hat{i}}W(ξ)=i^=1nNi^,p(ξ)wi^

在NURBS基函数确定之后,NURBS曲面便可以使用与B样条曲面类似的形式表示
C(ξ)=∑i=1nRip(ξ)Pi(7) \mathbf{C(\xi)}=\sum^n_{i=1} R_i^p(\xi) \mathbf{P}_i \tag{7} C(ξ)=i=1nRip(ξ)Pi(7)
NURBS曲面
S(ξ,η)=∑i=1n∑j=1mRi,jp,q(ξ,η)Pi,j(8) \mathbf{S(\xi,\eta)}=\sum^n_{i=1} \sum^m_{j=1} R_{i,j}^{p,q}(\xi,\eta) \mathbf{P}_{i,j} \tag{8} S(ξ,η)=i=1nj=1mRi,jp,q(ξ,η)Pi,j(8)

3 一些例子

这里,我们将画一个半圆。我们使用二次NURBS基函数,控制顶点和权重如下
P=[x1y1x2y2x3y3x4y4]=[−10−111110]andw=[w1w2w3w4]=[11/21/21](9) \mathbf{P}=\left[\begin{array}{ll} x_{1} & y_1 \\ x_{2} & y_2 \\ x_{3} & y_3 \\ x_{4} & y_4 \end{array}\right]= \left[\begin{array}{ll} -1 & 0 \\ -1 & 1 \\ 1 & 1 \\ 1 & 0 \end{array}\right] \quad\quad\quad\quad and \quad\quad\quad\quad \mathbf{w}=\left[\begin{array}{ll} w_{1} \\ w_{2} \\ w_{3} \\ w_{4} \end{array}\right]= \left[\begin{array}{ll} 1 \\ 1/2 \\ 1/2 \\ 1 \end{array}\right] \tag{9} P=x1x2x3x4y1y2y3y4=11110110andw=w1w2w3w4=11/21/21(9)
假设NURBS基函数和曲线在点ξ=3/2\xi=3/2ξ=3/2求值,则根据B样条基函数的表达式可以算出

image-20210310160119952

再根据式(2)计算出权函数在ξ=3/2\xi=3/2ξ=3/2时的值为
W(ξ=32)=∑i=14Ni,2(ξ=32)wi=0⋅1+18⋅12+58⋅12+14⋅1=58(10) W(\xi=\frac{3}{2})=\sum_{i=1}^4N_{i,2}(\xi=\frac{3}{2})w_i=0\cdot1+\frac{1}{8}\cdot\frac{1}{2}+\frac{5}{8}\cdot\frac{1}{2}+\frac{1}{4}\cdot1=\frac{5}{8} \tag{10} W(ξ=23)=i=14Ni,2(ξ=23)wi=01+8121+8521+411=85(10)
于是,可以得到NURBS基函数在ξ=3/2\xi=3/2ξ=3/2处的值

image-20210310160804118

当计算足够多个ξ\xiξ的值时,就可以画出NURBS基函数的图像,如图2所示

image-20210310161209708

图2     NURBS和B样条基函数,结点向量为{0,0,0,1,2,2,2}

可以看出,权重w2,w3w_2,w_3w2,w3不仅仅影响基函数R22,R32R_2^2,R_3^2R22,R32也影响R12,R42R_1^2,R_4^2R12,R42

之后我们就可以使用给定的节点向量计算NURBS曲线上的点

image-20210310162333150

作为比较,B样条曲线在同样的参数域的坐标计算结果如下

image-20210310162454194

当计算足够多ξ\xiξ的值之后,就可以画出NURBS曲线和B样条曲线的图像。由于B样条曲线不包含权重(所有权重为1),所以控制点(−1,1)和(1,1)的比例会变得很大,使圆弧呈方形。
image-20210310162800665

图3     使用NURBS构造的半圆和B样条构造的180度弧

注意,这里使用4个控制顶点构造的半圆在顶点(0,1)(0,1)(0,1)处有C1C^1C1连续性。使用结点向量Ξ={0,0,0,1,1,2,2,2}\Xi=\{0,0,0,1,1,2,2,2\}Ξ={0,0,0,1,1,2,2,2},5个基函数和控制顶点,构造的半圆拥有C0C^0C0连续性。在图1中的半圆就是使用上述的节点向量构造的,其C0C^0C0连续性可以在与其对应的B样条中看出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值