曲线曲面基础

Introduction

  由于工作性质的转变,现需要增加一些几何相关知识的储备,虽然算是几何出身,但是涉猎面还是相对不足的。因此,做一下曲线曲面基础相关的笔记

   因为学习资料来源性质不同,这里就不分享链接了。但毕竟是基础相关的知识,网上会有很多优秀的资料!

曲线曲面基本理论

  • 工业产品的形状大致分为两类
    • 初等解析曲面
    • 自由型曲线曲面
      • 无法用初等解析曲面组成

曲线曲面的参数表达

  • 解析曲面表示方法有两种
    • 显示表示
      • 表达方程 z = f ( x , y ) z = f(x, y) z=f(x,y)
      • 优点
        • 计算方便
      • 缺点
        • 无法描述多值面(如球)
    • 隐式表示
      • 方程 f ( x , y , z ) = 0 f(x, y, z) = 0 f(x,y,z)=0
      • 优点
        • 能表达多值于曲面
      • 缺点
        • 不便于计算 z z z
  • 曲线的参数形式表达
    • 空间曲线上一点 p p p 的每个坐标被表示成参数 u u u 的函数
      • X = x ( u ) , Y = y ( u ) , Z = z ( u ) X = x(u), Y = y(u), Z = z(u) X=x(u),Y=y(u),Z=z(u)
    • 曲线被表示为参数 u u u 的矢函数
      • p ( u ) = [ X   Y   Z ] = [ x ( u )   y ( u )   z ( u ) ] p(u) = [X \ Y \ Z] = [ x(u) \ y(u) \ z(u)] p(u)=[X Y Z]=[x(u) y(u) z(u)]
    • 最简单的参数曲线是直线段
      • 端点为 P 1 P1 P1 P 2 P2 P2 的直线段参数方程为
        • P ( t ) = P 1 + ( P 2 − P 1 ) ,   t ∈ [ 0 , 1 ] P(t) = P1 + (P2 - P1), \ t \in [0, 1] P(t)=P1+(P2P1), t[0,1]
  • 矢性函数
    • 常矢
      • 矢量的模和方向都保持不变
    • 变矢
      • 模和方向或其中之一发生变化
    • 标量函数
      • 标量 u u u 随参量 t t t 的变化
      • u = u ( t ) u = u(t) u=u(t)
    • 矢量函数
      • 矢量 A ⃗ \vec{A} A 随参量 t t t 的变化
      • A ⃗ = A ⃗ ( t ) \vec{A} = \vec{A}(t) A =A (t)
    • 矢性函数
      • 设有术数性变量 t t t 和变矢 A ⃗ \vec{A} A ,如果对于 t t t 在某个范围 G G G 内的每一个数值, A ⃗ \vec{A} A 都有一个确定的矢量和它对应,则称 A ⃗ \vec{A} A 为数性变量 t t t 的矢性函数
      • 记作
        • A ⃗ = A ⃗ ( t ) \vec{A} = \vec{A}(t) A =A (t)
      • G G G 为函数 A ⃗ \vec{A} A 的定义域
  • 基本概念
    • 弧长
    • 位置矢
      • P ( t ) = [ x ( t ) ,   y ( t ) ,   z ( t ) ] ,   t ∈ [ 0 , 1 ] P(t) = [x(t), \ y(t), \ z(t)],\ t \in [0,1] P(t)=[x(t), y(t), z(t)], t[0,1]
    • 切矢
      • T ( t ) = p ′ ( t ) = d P d t = [ x ′ ( t ) ,   y ′ ( t ) ,   z ′ ( t ) ] T(t) = p'(t) = \frac{dP}{dt} = [x'(t), \ y'(t), \ z'(t)] T(t)=p(t)=dtdP=[x(t), y(t), z(t)]
    • 主法矢
      • 法线 n n n
    • 副法矢
      • t t t n n n 相互垂直的矢量 b b b
    • 活动标架
      • 数学上,光滑流形上的标架可以理解为从一点到一点变化的标架 [维基百科]
      • 给定一个这样的流形 M 和一个其中的点 P,在 P 点的一个标架表示一个 M 在 P 点的切空间的向量空间基底 [维基百科]
    • 法平面
      • n n n b b b 张成的平面
    • 密切面
      • t t t n n n 张成的平面
    • 从切面
      • t t t b b b 张成的平面
    • 曲率
      • 曲率矢量
        • 以弧长 S S S 为参数,切矢 t ( s ) t(s) t(s) 对弧长 s s s 求导,所得导矢 d t ( s ) / d s dt(s)/ds dt(s)/ds 与切矢相垂直
      • 曲率矢量的模长称为曲线曲率,记作 k ( s ) k(s) k(s)
      • 曲线的曲率半径
        • 曲率的倒数
        • 记作 ρ ( s ) \rho(s) ρ(s)
    • 挠率
      • 在初等三维曲线的微分几何中,一条曲线的挠率(torsion,或译扭率)度量了其扭曲的程度,即偏离平面曲线的程度。空间曲线的曲率和挠率在一起,与平面曲线的曲率类似 [维基百科]
  • 曲面参数形式表示
    • 三维空间曲面通常表示成双参数 u u u v v v 的矢函数
      • P ( u , v ) = [ X , Y , Z ] = [ x ( u , v )   y ( u , v )   z ( u , v ) ] P(u, v) = [X, Y, Z] = [x(u,v) \ y(u,v) \ z(u,v)] P(u,v)=[X,Y,Z]=[x(u,v) y(u,v) z(u,v)]
    • 基本概念
      • 法曲率
        • 曲線在某个点切向量和法向量張成的平面上的投影曲線的曲率
      • 主曲率
        • 最大最小的法曲率为主曲率
      • 主方向
        • 主曲率对应的曲线在这点的切线方向就是主曲率方向
      • 高斯曲率
        • 曲面上一点的高斯曲率是该点主曲率 k 1 k1 k1 k 2 k2 k2 的乘积
      • 平均曲率
        • 主曲率的算術平均
    • 参数表示的优点
      • 易于满足几何不变性要求,可对参数方程进行几何变换,节省计算量
        • 易于规定曲线曲面的范围
        • 几何不变性
          • 旋转平移变化下性质不变
      • 更多自由度控制曲线、曲面形状
      • 易于处理多值问题和曲率无穷大情况
      • 易于计算曲线、曲面上的点
      • 便于把低维空间中的曲线、曲面扩展到高维空间中

Bezier 曲线曲面表达

  • 三次 Bezier 曲线定义
    • 给定 P 0 P_0 P0 P 1 P_1 P1 P 2 P_2 P2 P 3 P_3 P3 四个控制点按以下形式构造的曲线即为三次 Bezier曲线
      P ( u ) = ∑ i = 0 3 P i B i , 3 ( u ) = [ B 0 , 3 ( u )   B 1 , 3 ( u )   B 2 , 3 ( u )   B 3 , 3 ( u ) ] [ P 0   P 1   P 2   P 3 ] T P(u) = \sum_{i=0}^3P_iB_{i,3}(u) = [B_{0,3}(u) \ B_{1,3}(u) \ B_{2,3}(u) \ B_{3,3}(u)][P_0 \ P_1 \ P_2 \ P_3]^T P(u)=i=03PiBi,3(u)=[B0,3(u) B1,3(u) B2,3(u) B3,3(u)][P0 P1 P2 P3]T

= [ u 3   u 2   u 1 ] [ − 1 3 − 3 1 3 − 6 3 0 − 3 3 0 0 1 0 0 0 ] [ P 0 P 1 P 2 P 3 ] = U M P , u ∈ [ 0 , 1 ] = [u^3 \ u^2 \ u 1]\begin{bmatrix}-1&3&-3&1 \\ 3&-6&3&0 \\ -3&3&0&0 \\ 1&0&0&0\end{bmatrix} \begin{bmatrix} P_0 \\ P_1 \\ P_2 \\ P_3 \end{bmatrix} = UMP ,{u \in[0, 1]} =[u3 u2 u1] 1331363033001000 P0P1P2P3 =UMP,u[0,1]

  • 其中, B i , 3 ( u ) B_{i,3}(u) Bi,3(u) 为基函数,也称调和函数。展开表示为
    • B i , 3 ( u ) = C 3 i u i ( 1 − u ) 3 − i , ( i = 0 , 1 , 2 , 3 ) B_{i,3}(u) = C_3^iu^i(1-u)^{3-i}, (i=0, 1, 2, 3) Bi,3(u)=C3iui(1u)3i,(i=0,1,2,3)
  • 三次 Bezier 曲线几何特性
    • 端点特性
      • 曲线过控制顶点的首末顶点
    • 端点切矢性质
      • 三次 Bezier 曲线在首末两点相切于多边形的起、止边
    • 对称性
      • 曲线将控制顶点反序仍可得到同样形状的曲线
    • 凸包性质
      • 三次 Bezier 曲线不会越出特征多边形的顶点所围成的凸包
    • 变差缩减性
      • 若 Bezier 曲线特征多边形是一个平面图形,则平面内任意直线与曲线的交点个数不多于该直线与其特征多边形的交点个数
    • 几何变换不变性
      • Bezier 曲线的位置与形状不随坐标系的变换而改变
  • 三次 Bezier 曲线的分割特性
    • 分割
      • 依次对原始控制多边形每一边执行同样的定比分割
    • 性质
      • 任一三次 Bezier 曲线均可被分割为两段三次Bezier曲线
      • 分割后曲线形状保持不变
  • Bezier 曲线的计算可由线性递推计算得出,即高次计算可转化为线性计算,有利于提高计算速度
    P i k = { P i k = 0 ( 1 − t ) P i k − 1 + t P i + 1 k − 1 k = 1 , 2 , 3 i = 0 , 1 , 2 , 3 } P_i^k = \begin{Bmatrix} P_i & k=0 & \\ (1-t)P_i^{k-1}+tP_{i+1}^{k-1} & k= 1, 2, 3&i= 0, 1, 2, 3 \end{Bmatrix} Pik={Pi(1t)Pik1+tPi+1k1k=0k=1,2,3i=0,1,2,3}
  • 三次 Bezier 曲线的拼接
    • 函数连续性
      • 把组合参数曲线构造成在连接处具有直到 n n n 阶连续阶连续导矢,这类光滑度称之为 C n C^n Cn n n n 阶参数连续性(也称函数连续性)
    • 几何连续性
      • 组合曲线在连接处满足不同于 C n C^n Cn 的某一组约束条件,称为具有 n n n 阶几何连续性,简记为 G n G^n Gn
    • G 0 G^0 G0 几何连续性
      • C 0 C^0 C0 参数连续性的定义相同
      • 几何意义
        • 两曲线在结合处位置连续
    • G 1 G^1 G1 几何连续性
      • 指一阶导数在邻接点处成比例
      • 几何意义
        • 两条曲线在结合处在满足 C 0 C^0 C0 连续的条件下,并有公共的切矢
    • G 2 G^2 G2 几何连续性
      • 指相邻曲线段在邻接点处其一阶导数成比例且曲率相等
      • 几何意义
        • 两条曲线在结合处在满足 G 1 G^1 G1 连续的条件下,需有公共的曲率矢
    • 三次 Bezier 曲线一阶几何连续拼接条件
      • P 3 P_3 P3 Q 0 Q_0 Q0 应重合
      • P 2 P_2 P2 P 3 P_3 P3 Q 0 Q_0 Q0 Q 1 Q_1 Q1要共线

任意阶次 Bezier 曲线定义

  • 插值公式
    P ( t ) = ∑ i = 0 n P i B i , n ( t ) ,    t ∈ [ 0 ,   1 ] P(t) = \sum_{i=0}^nP_iB_{i,n}(t) , \ \ t\in[0, \ 1] P(t)=i=0nPiBi,n(t),  t[0, 1]

  • P i ( i = 0 , . . . , n ) P_i(i = 0,...,n) Pi(i=0,...,n)为特征多边形

  • B i , n ( t ) B_{i,n}(t) Bi,n(t) 为 Bernstein 基函数

    • 也称调和函数
      B i , n ( t ) = C n i t i ( 1 − t ) n − i , ( i = 0 , 1 , . . . , n ) ,    t ∈ [ 0 ,   1 ] B_{i,n}(t) = C_n^it^i(1-t)^{n-i}, (i=0, 1, ..., n), \ \ t \in [0, \ 1] Bi,n(t)=Cniti(1t)ni,(i=0,1,...,n),  t[0, 1]
  • Bernstein 基函数的性质

    • 是二项式 [ t + ( 1 − t ) ] n [t+(1-t)]^n [t+(1t)]n的展开式
    • 性质
      • 正性
      • 端点性质
        • 曲线过控制顶点的首末顶点
      • 权性(保证凸包性)
        • 曲线不会越出特征多边形顶点所围成的凸多边形(由正权性保证)
      • 对称性
        • 曲线将控制顶点反序仍可得到同样形状的曲线
      • 递推特性
      • 切矢与端点切矢
        • 首末两端切矢相切于控制多边形的起止边
      • 分割特性
        • 与三次 Bezier 曲线的分割特性类似,该特性本质上是由基函数的递推特性所决定
      • 升阶与降阶
        • 低次 Bezier 曲线可增加顶点升阶为高次Bezier曲线,且形状不变
        • 升阶可达到统一曲线阶次目的,而降阶是升阶的逆过程
          • 降阶是对原曲线的逼近
      • 几何变换不变性
      • 变差减小性

三次 Bezier 曲面定义

  • 给定 4×4 个网格控制顶点 P i , j ,   ( i = 0 , 1 , 2 , 3 , j = 0 , 1 , 2 , 3 ) P_{i,j}, \ (i=0,1,2,3,j=0,1,2,3) Pi,j, (i=0,1,2,3,j=0,1,2,3),则所构成的 3×3 次 Bezier 曲面表达为

p ( u ,   v ) = ∑ i = 0 3 ∑ j = 0 3 P i , j B i , 3 ( u ) B j , 3 ( v ) ,    ( u , v ) ∈ [ 0 , 1 ] × [ 0 , 1 ] p(u, \ v) = \sum_{i=0}^3 \sum_{j=0}^3 P_{i,j}B_{i,3}(u)B_{j,3}(v), \ \ (u, v) \in [0, 1] \times [0,1] p(u, v)=i=03j=03Pi,jBi,3(u)Bj,3(v),  (u,v)[0,1]×[0,1]

  • 展开上式
    p ( u , v ) = [ ( 1 − u ) 3   3 u ( 1 − u ) 2   3 u 2 ( 1 − u )   u 3 ] P [ ( 1 − v ) 3 3 v ( 1 − v ) 2 3 v 2 ( 1 − v ) v 3 ] = U M P M T V T p(u,v) = [(1-u)^3 \ 3u(1-u)^2 \ 3u^2(1-u) \ u^3]P\begin{bmatrix} (1-v)^3 \\ 3v(1-v)^2 \\ 3v^2(1-v) \\ v^3 \end{bmatrix} = UMPM^TV^T p(u,v)=[(1u)3 3u(1u)2 3u2(1u) u3]P (1v)33v(1v)23v2(1v)v3 =UMPMTVT

  • 其中
    M = [ − 1 3 − 3 1 3 − 6 3 0 − 3 3 0 0 1 0 0 0 ] M = \begin{bmatrix} -1&3&-3&1 \\ 3&-6&3&0 \\ -3&3&0&0 \\ 1&0&0&0 \end{bmatrix} M= 1331363033001000
    P = [ P 0 , 0 P 0 , 1 P 0 , 2 P 0 , 3 P 1 , 0 P 1 , 1 P 1 , 2 P 1 , 3 P 2 , 0 P 2 , 1 P 2 , 2 P 2 , 3 P 3 , 0 P 3 , 1 P 3 , 2 P 3 , 3 ] P = \begin{bmatrix} P_{0,0}&P_{0,1}&P_{0,2}&P_{0,3} \\ P_{1,0}&P_{1,1}&P_{1,2}&P_{1,3} \\ P_{2,0}&P_{2,1}&P_{2,2}&P_{2,3} \\ P_{3,0}&P_{3,1}&P_{3,2}&P_{3,3} \end{bmatrix} P= P0,0P1,0P2,0P3,0P0,1P1,1P2,1P3,1P0,2P1,2P2,2P3,2P0,3P1,3P2,3P3,3
    U = [ u 3 u 2 u 1 ] U = \begin{bmatrix} u^3 & u^2 & u & 1 \end{bmatrix} U=[u3u2u1]
    V = [ v 3 v 2 v 1 ] V = \begin{bmatrix} v^3 & v^2 & v & 1 \end{bmatrix} V=[v3v2v1]

  • Bezier曲面的几何特性

    • 角点特性
      • Bezier 曲面特征网格的四个角点正好是 Bezier 曲面的四个角点
    • 边界特性
      • Bezier 曲面特征网格最外一圈顶点定义 Bezier曲面的四条边界,且每条边界曲线仍为一条 Bezier 曲线
    • 跨界切矢
      • Bezier 曲面边界的跨界一阶切矢只与定义该边界的顶点及相邻一排顶点有关
      • 其跨界二阶导矢只与定义边界的及相邻两排顶点有关
    • Bezier曲面的其他性质与Beizer曲线类似
      • 几何变换不变性
      • 凸包性
      • 对称性
      • 变差减小性
  • 三次 Bezier 曲面的拼接

    • 如果要求两曲面达到 G 0 G^0 G0 连续,则它们有公共的边界
      • 两曲面的首末控制点相同
    • 如果要求沿公共边界达到 G 1 G^1 G1 连续,则两曲面在该边界上有公共的切平面
      • P ( 1 , v ) P(1,v) P(1,v) Q ( 0 , v ) Q(0,v) Q(0,v) 共线
      • P u ( 1 , v ) P_u(1,v) Pu(1,v) P v ( 1 , v ) P_v(1,v) Pv(1,v) Q u ( 0 , v ) Q_u(0,v) Qu(0,v) Q v ( 1 , v ) Q_v(1,v) Qv(1,v)共面
  • 为了构造合成曲面时有更大的灵活性,采用如下条件作为三次Bezier曲面的一阶几何连续的拼接条件

    • Q u ( 0 , v ) = α ( v ) P u ( 1 , v ) + β ( v ) P v ( 1 , v ) Q_u(0,v) = \alpha (v)P_u(1,v)+\beta(v)P_v(1,v) Qu(0,v)=α(v)Pu(1,v)+β(v)Pv(1,v)
    • 几何意义
      • 在边界两端点处,仅需相应顶点满足共面即可
      • 中间点分布不具几何直观性,必须按照关系式给出,但不必要求满足对应点成比例共线

任意阶次 Bezier 曲面定义

  • 定义
    p ( u , v ) = ∑ j = 0 m ∑ i = 0 n P j , i B j , m ( u ) B i , n ( u ) p(u,v) = \sum_{j=0}^m\sum_{i=0}^nP_{j,i}B_{j,m}(u)B_{i,n}(u) p(u,v)=j=0mi=0nPj,iBj,m(u)Bi,n(u)
  • 其中
    { i = 0 , 1... , n j = 0 , 1 , . . . , m u ∈ [ 0 , 1 ] ,   v ∈ [ 0 , 1 ] \begin{cases} i = 0,1...,n \\ j=0,1,...,m u \in [0,1], \ v\in[0,1] \end{cases} {i=0,1...,nj=0,1,...,mu[0,1], v[0,1]
    • B j , m ( u ) = C m j u j ( 1 − u ) m − j ,   B i , n ( v ) = C i , n v i ( 1 − v ) n − i B_{j,m}(u) = C_m^ju^j(1-u)^{m-j}, \ B_{i,n}(v) = C_{i,n}v^i(1-v)^{n-i} Bj,m(u)=Cmjuj(1u)mj, Bi,n(v)=Ci,nvi(1v)ni 是 Bernstein 基函数
    • 依次用线段连接的点列称特征网格
  • Bezier 曲面的矩阵表示
    P ( u , v ) = [ B 0 , m ( u )   B 1 , m ( u )   . . .   B m , m ( u ) ] [ P 00 P 01 . . . P 0 n P 10 P 11 . . . P 1 n . . . . . . . . . . . . P m 0 P m 1 . . . P m n ] [ B 0 , n ( v ) B 1 , n ( v ) . . . B n , n ( v ) ] P(u,v) = [B_{0,m}(u) \ B_{1,m}(u) \ ... \ B_{m,m}(u) ] \begin{bmatrix} P_{00} & P_{01} & ... & P_{0n} \\ P_{10} & P_{11} & ... & P_{1n} \\ ... & ... & ... & ... \\ P_{m0} & P_{m1} & ... & P_{mn} \\ \end{bmatrix} \begin{bmatrix} B_{0,n}(v) \\ B_{1,n}(v) \\ ... \\ B_{n,n}(v) \\ \end{bmatrix} P(u,v)=[B0,m(u) B1,m(u) ... Bm,m(u)] P00P10...Pm0P01P11...Pm1............P0nP1n...Pmn B0,n(v)B1,n(v)...Bn,n(v)
  • 与双三次Bezier曲面完全类似
    • 角点
    • 边界
    • 跨界切矢
    • 对称性
    • 凸包性
    • 几何变换不变性
    • 分割特性
    • 变差减小性
    • 拼接特性等
  • Bezier 曲面分割特性与几何作图
    • 任一 Bezier 曲面可在参数域内 [ u 0 , v 0 ] [u_0, v_0] [u0,v0]处被分割为四块 Bezier 子曲面
    • 二步作图方法
      • 根据 u 0 u_0 u0 参数,利用 Q i = [ B 0 , m ( u 0 ) B 1 , m ( u 0 ) . . . B m , m ( u 0 ) ] [ P 0 , i P 1 , i . . . P m , i ] T Q_i = \begin{bmatrix} B_{0,m}(u_0)&B_{1,m}(u_0)& ... & B_{m,m}(u_0) \end{bmatrix}\begin{bmatrix} P_{0,i}&P_{1,i}& ... &P_{m,i} \end{bmatrix}^T Qi=[B0,m(u0)B1,m(u0)...Bm,m(u0)][P0,iP1,i...Pm,i]T 及 Bezier 曲线作图确定 Q i   ( i = 0 , 1 , … , n ) Q_i \ (i= 0,1, …, n) Qi (i=0,1,,n)
        • 本质上亦为 Bezier 曲面等参数截交线作图方法,并将曲面一分为二
      • 作图法作出 P ( u 0 , v ) = [ Q 0 Q 1 . . . Q n ] [ B 0 , n ( v ) B 1 , n ( v ) . . . B n , n ( v ) ] T P(u_0, v) = \begin{bmatrix} Q_0&Q_1&...&Q_n \end{bmatrix}\begin{bmatrix} B_{0,n}(v)&B_{1,n}(v)& ... &B_{n,n}(v) \end{bmatrix}^T P(u0,v)=[Q0Q1...Qn][B0,n(v)B1,n(v)...Bn,n(v)]T确定的Bezier曲线(参数为 v 0 v_0 v0,控制顶点 Q i Q_i Qi确定)
  • Bezier 表达方法的不足
    • 是一种整体表达方法,不具有局部性,即修改一控制点对曲线产生全局性影响,工程设计中非常不便
    • 特征多边形顶点数决定了它的阶次数,当n较大时,不仅计算量增大,稳定性降低,且控制顶点对曲线的形状控制减弱
    • 为实现 Bezier 曲线和曲面的拼接,需要更多的自由度和更为宽松的条件才可能实现
      • 而且为实现这一目标往往需要更高阶的曲面,对低阶Bezier曲面需通过升阶方法提高曲面的阶次

均匀B样条曲线曲面

均匀三次 B 样条曲线定义

定义

  • 空间 n + 1 n+1 n+1 个控制顶点 P i ( i = 0 , 1 , . . . , n ) P_i(i=0, 1, ..., n) Pi(i=0,1,...,n) 可构造 n − 2 n-2 n2 段三次(四阶) 均匀 B 样条曲线段,每相邻四个顶点 P i P_i Pi P i + 1 P_{i+1} Pi+1 P i + 2 P_{i+2} Pi+2 P i + 3 P_{i+3} Pi+3 可定义一曲线段 Q i + 1 ( u )   ( i = 0 , . . . , n − 3 ) Q_{i+1}(u) \ (i=0, ..., n-3) Qi+1(u) (i=0,...,n3)
    • 四个顶点 P i P_i Pi P i + 1 P_{i+1} Pi+1 P i + 2 P_{i+2} Pi+2 P i + 3 P_{i+3} Pi+3 构成的多边形称为特征多边形
  • 均匀三次 B 样条曲线段的方程 Q i + 1 ( u ) Q_{i+1}(u) Qi+1(u) 表示为
    Q i + 1 ( u ) = ∑ j = 0 3 B j , 3 ( u ) P i + j = [ u 3 u 2 u 1 ] 1 6 [ − 1 3 − 3 1 3 − 6 3 0 − 3 0 3 0 1 4 1 0 ] [ P i P i + 1 P i + 2 P i + 3 ] = U M P Q_{i+1}(u) = \sum_{j=0}^3B_{j,3}(u)P_{i+j} = \begin{bmatrix} u^3 & u^2 & u & 1 \end{bmatrix} \cfrac{1}{6} \begin{bmatrix} -1&3&-3&1 \\ 3&-6&3&0 \\ -3&0&3&0 \\ 1&4&1&0 \end{bmatrix}\begin{bmatrix} P_{i} \\ P_{i+1} \\ P_{i+2} \\ P_{i+3} \\ \end{bmatrix} = UMP Qi+1(u)=j=03Bj,3(u)Pi+j=[u3u2u1]61 1331360433311000 PiPi+1Pi+2Pi+3 =UMP

= 1 3 ! ( 1 − u ) 3 P i + 1 3 ! ( 4 − 6 u 2 + 3 u 3 ) P i + 1 + 1 3 ! ( 1 + 3 u + 3 u 2 − 3 u 3 ) P i + 2 + 1 3 ! u 3 P i + 3 = \cfrac{1}{3!}(1-u)^3P_i+ \cfrac{1}{3!}(4-6u^2+3u^3)P_{i+1}+\cfrac{1}{3!}(1+3u+3u^2-3u^3)P_{i+2}+ \cfrac{1}{3!}u^3P_{i+3} =3!1(1u)3Pi+3!1(46u2+3u3)Pi+1+3!1(1+3u+3u23u3)Pi+2+3!1u3Pi+3

  • 其中 u ∈ [ 0 , 1 ] u \in [0,1] u[0,1]

性质

  • 局部特性

    • 每个曲线段只受 k + 1 k+1 k+1个控制点的影响
      • 改动一个点,仅影响以该点为中心的相关 k + 1 k+1 k+1 段曲线
  • 曲线段首末端点性质

    • 位置矢量
      Q i + 1 ( 0 ) = ∑ j = 0 3 B j , 3 ( 0 ) P i + j = 1 6 ( P i + 4 P i + 1 + P i + 2 ) Q_{i+1}(0) = \sum_{j=0}^3B_{j,3}(0)P_{i+j} = \cfrac{1}{6}(P_i + 4P_{i+1}+P_{i+2}) Qi+1(0)=j=03Bj,3(0)Pi+j=61(Pi+4Pi+1+Pi+2)
      Q i + 1 ( 1 ) = ∑ j = 0 3 B j , 3 ( 1 ) P i + j = 1 6 ( P i + 1 + 4 P i + 2 + P i + 3 ) Q_{i+1}(1) = \sum_{j=0}^3B_{j,3}(1)P_{i+j} = \cfrac{1}{6}(P_{i+1} + 4P_{i+2}+P_{i+3}) Qi+1(1)=j=03Bj,3(1)Pi+j=61(Pi+1+4Pi+2+Pi+3)
    • 一阶导矢
      Q i + 1 ′ ( 0 ) = ∑ j = 0 3 B i , 3 ′ ( 0 ) P i + j = 1 2 ( P i + 2 − P i ) Q_{i+1}^{'}(0) = \sum_{j=0}^3B^{'}_{i,3}(0)P_{i+j} = \cfrac{1}{2}(P_{i+2} - P_{i}) Qi+1(0)=j=03Bi,3(0)Pi+j=21(Pi+2Pi)
      Q i + 1 ′ ( 1 ) = ∑ j = 0 3 B i , 3 ′ ( 1 ) P i + j = 1 2 ( P i + 3 − P i + 1 ) Q_{i+1}^{'}(1) = \sum_{j=0}^3B^{'}_{i,3}(1)P_{i+j} = \cfrac{1}{2}(P_{i+3} - P_{i+1}) Qi+1(1)=j=03Bi,3(1)Pi+j=21(Pi+3Pi+1)
    • 二阶导矢
      Q i + 1 ′ ′ ( 0 ) = ∑ j = 0 3 B j , 3 ′ ′ ( 0 ) P i + j = P i − 2 P i + 1 + P i + 2 Q^{''}_{i+1}(0) = \sum_{j=0}^3B_{j,3}^{''}(0)P_{i+j} = P_i -2P_{i+1} + P_{i+2} Qi+1′′(0)=j=03Bj,3′′(0)Pi+j=Pi2Pi+1+Pi+2
      Q i + 1 ′ ′ ( 1 ) = ∑ j = 0 3 B j , 3 ′ ′ ( 1 ) P i + j = P i + 1 − 2 P i + 2 + P i + 3 Q^{''}_{i+1}(1) = \sum_{j=0}^3B_{j,3}^{''}(1)P_{i+j} = P_{i+1} -2P_{i+2} + P_{i+3} Qi+1′′(1)=j=03Bj,3′′(1)Pi+j=Pi+12Pi+2+Pi+3
  • 几何作图步骤

    • 曲线起点位于以 P i P i + 1 P_iP_{i+1} PiPi+1 P i + 1 P i + 2 P_{i+1}P_{i+2} Pi+1Pi+2 为两邻边的平行四边形对角线的1/6处
    • 起点的切矢与 P i + 2 P i P_{i+2}P_i Pi+2Pi 平行,模为 ∣ ∣ P i + 2 − P i ∣ ∣ / 2 ||P_{i+2}-P_i||/2 ∣∣Pi+2Pi∣∣/2
    • 起点二阶导矢是以 P i P i + 1 P_iP_{i+1} PiPi+1 P i + 1 P i + 2 P_{i+1}P_{i+2} Pi+1Pi+2 为两邻边的平行四边形的对线方向
    • 曲线段末点的情形与上述三点类似,只是向前推移一个顶点
  • 均匀 B 样条曲线不足

    • 曲线一般情况下不经过特征多边形控制顶点
  • 前段曲线的末点与后段曲线首点满足二阶函数连续

    • 采用三次均匀 B 样条曲线直接能够构造光滑的复杂曲线

均匀三次 B 样条曲线的几何特性

  • 几何变换不变性
  • 对称性
  • 凸包性
  • 局部性
  • 连续性
    • C 2 C^2 C2连续性
  • 造型灵活性
    • 只要灵活选用控制点位置,可获得特殊要求的曲线段
      • 直线段
      • 曲线段
      • 尖点

均匀三次 B 样条曲线的控制点反求

  • 矩阵形式
    [ − 1 0 1 0 1 4 1 1 4 1 . . . . . . . . . 0 1 4 1 − 1 0 1 ] [ B 0 B 1 B 2 . . . B n − 1 B n ] = [ 2 P 1 ′ 6 P 1 6 P 2 . . . 6 P n − 1 2 P n − 1 ′ ] \begin{bmatrix} -1 & 0 & 1 & & & 0 \\ 1 & 4 & 1 & & & \\ & 1 & 4 & 1 & & \\ & & ...& ... & ... & \\ 0 & & & 1 & 4 & 1 \\ & & & -1 & 0 & 1 \end{bmatrix} \begin{bmatrix} B_0 \\ B_1 \\ B_2 \\ ... \\ B_{n-1} \\ B_n \end{bmatrix} = \begin{bmatrix} 2P_1^{'} \\ 6P_1 \\ 6P_2 \\ ... \\ 6P_{n-1} \\ 2P_{n-1}^{'} \end{bmatrix} 110041114...1...11...40011 B0B1B2...Bn1Bn = 2P16P16P2...6Pn12Pn1
    • B i B_i Bi 为计算求出的特征多边形顶点
    • 矩阵中的系数矩阵除了第一行和最后一行为(-1,0,1)外,其他都是 (1,4, 1)
    • 注意等号右边列向量首和末尾为一阶导数
      • 首末端点的切矢
      • 切矢可以由下面的方式给出
  • 补充边界条件应注意
    • 对开曲线,首末点边界切矢可由用户随意交互给定(通常取默认值)
    • 对闭曲线,首末位置相同,边界切矢方向相同
  • 边界条件可参考的取值
    • 缺省切矢边界条件
      • P 1 ′ = P 2 − P 1 P_1^{'} = P_2 - P1 P1=P2P1 P n − 1 ′ = P n − 1 − P n − 2 P_{n-1}^{'} = P_{n-1}-P_{n-2} Pn1=Pn1Pn2
    • 用户交互给定切矢边界条件
      • 边界切矢方向易给,但模长要谨慎选取
    • 自由端边界条件
      • 自由端条件是指端点不受弯矩,用零曲率条件代替切矢条件
      • P 1 ′ ′ = B 0 − 2 B 1 + B 2 = 0 P_1^{''} = B_0 - 2B_1 + B_2 = 0 P1′′=B02B1+B2=0 P n − 1 ′ ′ = B n − 2 − 2 B n − 1 + B n = 0 P_{n-1}^{''} = B_{n-2} -2B_{n-1}+B_n = 0 Pn1′′=Bn22Bn1+Bn=0
      • 抛物逼近(或圆弧逼近)边界条件
        • 假定首端由 P 1 P_1 P1 P 2 P_2 P2 P 3 P_3 P3组成抛物线(或圆弧),根据抛物线条
          件给定切矢
        • 末端由 P n − 3 P_{n-3} Pn3 P n − 2 P_{n-2} Pn2 P n − 1 P_{n-1} Pn1组成抛物线(或圆弧),根据抛物线条件给定切矢

任意阶次均匀 B 样条曲线

定义

  • 空间 n + 1 n+1 n+1 个控制顶点 P i ( i = 0 , 1 , . . . , n ) P_i(i=0, 1, ..., n) Pi(i=0,1,...,n),给定次数 k k k,则可唯一构造 ( n − k + 1 ) (n-k+1) (nk+1) k k k 次 (或 k + 1 k+1 k+1阶) 均匀 B 样条曲线段,每相邻 k + 1 k+1 k+1 个顶点 P i P_i Pi P i + 1 P_{i+1} Pi+1 . . . . .... .... P i + k P_{i+k} Pi+k 可定义一曲线段 Q i + 1 ( u )   ( i = 0 , . . . , n − k ) Q_{i+1}(u) \ (i=0, ..., n-k) Qi+1(u) (i=0,...,nk)

均匀 B 样条曲线的不足

  • 优势
    • 天然的函数连续性与局部性
  • 不足
    • 曲线首末端点不经过控制多边形首末顶点
    • 控制点分布均匀性差时,曲线不够光顺甚至自交
    • 采用非均匀 B 样条曲线则可解决这一问题

均匀双三次 B 样条曲面定义

定义

  • 给定 ( m + 1 ) × ( n + 1 ) (m+1) \times (n+1) (m+1)×(n+1) 个网格点 P i , j ( i = 0 , 1 , … , m ;   j = 0 , 1 , … , n ) P_{i,j}(i=0,1,…,m ;\ j=0,1,…,n) Pi,ji=0,1,,m; j=0,1,,n),可
    构造 ( m − 2 ) × ( n − 2 ) (m-2) \times (n-2) (m2)×(n2) 片双三次(四阶)均匀 B 样条曲面
    • 其中任意相邻一组 4 x 4 网格点构造一张双三次均匀B样条曲面
  • 方程表示
    • p i , j ( u , v ) = U M P M T V T p_{i,j}(u,v) = UMPM^TV^T pi,j(u,v)=UMPMTVT
      • 其中, U = [ u 3    u 2    u    1 ] U=[u^3 \ \ u^2 \ \ u \ \ 1] U=[u3  u2  u  1] V = [ v 3    v 2    v    1 ] V = [v^3 \ \ v^2 \ \ v \ \ 1] V=[v3  v2  v  1]
        P = [ P i , j P i , j + 1 P i , j + 2 P i , j + 3 P i + 1 , j P i + 1 , j + 1 P i + 1 , j + 2 P i + 1 , j + 3 P i + 2 , j P i + 2 , j + 1 P i + 2 , j + 2 P i + 2 , j + 3 P i + 3 , j P i + 3 , j + 1 P i + 3 , j + 2 P i + 3 , j + 3 ] ,       M = 1 6 [ − 1 3 − 3 1 3 − 6 3 0 − 3 0 3 0 1 4 1 0 ] P = \begin{bmatrix} P_{i ,j} & P_{i ,j+1} & P_{i ,j+2} & P_{i ,j+3} \\ P_{i+1,j} & P_{i+1,j+1} & P_{i+1,j+2} & P_{i+1,j+3} \\ P_{i+2,j} & P_{i+2,j+1} & P_{i+2,j+2} & P_{i+2,j+3} \\ P_{i+3,j} & P_{i+3,j+1} & P_{i+3,j+2} & P_{i+3,j+3} \\ \end{bmatrix}, \ \ \ \ \ M = \cfrac{1}{6}\begin{bmatrix} -1 & 3 & -3 & 1 \\ 3 & -6 & 3 & 0 \\ -3 & 0 & 3 & 0 \\ 1 & 4 & 1 & 0 \\ \end{bmatrix} P= Pi,jPi+1,jPi+2,jPi+3,jPi,j+1Pi+1,j+1Pi+2,j+1Pi+3,j+1Pi,j+2Pi+1,j+2Pi+2,j+2Pi+3,j+2Pi,j+3Pi+1,j+3Pi+2,j+3Pi+3,j+3 ,     M=61 1331360433311000

均匀三次 B 样条曲面的计算与绘制

  • 给定 ( u , w ) (u, w) (u,w) 值,可按下式进行计算
    S i , j ( u , w ) = [ N 0 , 3 ( u ) N 1 , 3 ( u ) N 2 , 3 ( u ) N 3 , 3 ( u ) ] [ P i , j P i , j + 1 P i , j + 2 P i , j + 3 P i + 1 , j P i + 1 , j + 1 P i + 1 , j + 2 P i + 1 , j + 3 P i + 2 , j P i + 2 , j + 1 P i + 2 , j + 2 P i + 2 , j + 3 P i + 3 , j P i + 3 , j + 1 P i + 3 , j + 2 P i + 3 , j + 3 ] [ N 0 , 3 ( w ) N 1 , 3 ( w ) N 2 , 3 ( w ) N 3 , 3 ( w ) ] S_{i,j}(u,w) = \begin{bmatrix} N_{0,3}(u) & N_{1,3}(u) & N_{2,3}(u) & N_{3,3}(u) \end{bmatrix}\begin{bmatrix} P_{i ,j} & P_{i ,j+1} & P_{i ,j+2} & P_{i ,j+3} \\ P_{i+1,j} & P_{i+1,j+1} & P_{i+1,j+2} & P_{i+1,j+3} \\ P_{i+2,j} & P_{i+2,j+1} & P_{i+2,j+2} & P_{i+2,j+3} \\ P_{i+3,j} & P_{i+3,j+1} & P_{i+3,j+2} & P_{i+3,j+3} \\ \end{bmatrix}\begin{bmatrix} N_{0,3}(w) \\ N_{1,3}(w) \\ N_{2,3}(w) \\ N_{3,3}(w) \end{bmatrix} Si,j(u,w)=[N0,3(u)N1,3(u)N2,3(u)N3,3(u)] Pi,jPi+1,jPi+2,jPi+3,jPi,j+1Pi+1,j+1Pi+2,j+1Pi+3,j+1Pi,j+2Pi+1,j+2Pi+2,j+2Pi+3,j+2Pi,j+3Pi+1,j+3Pi+2,j+3Pi+3,j+3 N0,3(w)N1,3(w)N2,3(w)N3,3(w)

均匀三次 B 样条曲面几何特性

  • B 样条曲具有 B 样条曲线的多种性质
    • 曲面片与片之间具有天然的连续性
  • 特性
    • 均匀双三次 B 样条曲面的顶点不经过任何特征网格顶点,且仅与各角点对应的 9 个特征网格顶点有关
    • 均匀双三次 B 样条曲面的边界曲线仍为 B 样条曲线,该边界 B 样条曲线由对应的三条边界特征网格顶点确定
      • 沿 B 样条曲面任何等参数的截线均为一 B 样条曲线
    • 均匀双三次 B 样条曲面边界的夸界一阶切矢只与该边界的第一排及第三排顶点有关
      • 均匀三次 B 样条曲面具有一阶函数连续性
    • 均匀双三次 B 样条曲面跨界二阶导矢只与定义该边界的及相邻两排顶点 (共三排顶点) 有关
      • 均匀三次 B 样条曲面具有二阶函数连续性
    • 函数连续性
    • 几何不变性
    • 对称性
    • 凸包性等等

均匀 B 样条曲面的反算

  • 方法
    • 先对给定型值点进行 u u u 向反算,反算得到一组控制点,再以此控制点为型值点进行 v v v 向反算
      • U U U 向截面数据点(型值点)及端点 u u u 向切矢,应用 B 样条曲线反算,构造出各截面曲线,求出它们的 B 样条控制顶点
      • 仍以 U U U 向视首末截面数据点处 v v v 向切矢为 “位置矢量” 表示的 “数据点”,又视四角角点扭矢为 “端点v向切矢” ,应用曲线反算,求出定义首末 u u u 参数边界 (即首末截面曲线) 的跨界切矢曲线的控制顶点
      • 然后固定指标 i i i,以第一步求出的 n + 1 n+1 n1 条截面曲线的控制顶点阵列中的第 i i i 排为 “数据点”,以上一步求出的跨界切矢曲线的第 i i i 个顶点为 “端点切矢”,在节点矢量 V V V 上应用曲线反算,分别求出 m + 3 m+3 m3 条插值曲线即控制曲线的 B 样条控制顶点
      • 最后所求即为均匀双三次 B 样条插值曲面的控制顶点

B 样条曲线曲面与 Bezier 曲线曲面的关系

  • B 样条曲线与 Bezier 曲线的关系
    • 相同处
      • 对称性
      • 几何变换不变性
      • 凸包性
      • 分割性
      • 变差减少性
    • 不同处
      • 1
        • 均匀三次 B 样条曲线端点及切矢特性
        • 三次 Bezier 曲线端点及端点切矢特性
      • 2
        • 三次 Bezier 曲线整体性
        • 均匀三次 B 样条曲线局部性
      • 3
        • 均匀三次 B 样条曲线函数连续性
        • 三次 Bezier 曲线几何连续性
  • 三次均匀 B 样条曲线与三次 Bezier 曲线可相互转换
    • 推导
      • P b s p l i n e ( u ) = ∑ j = 0 3 N j , 3 ( u ) P j = U M b s P P_{bspline}(u) = \sum_{j=0}^3N_{j,3}(u)P_j = UM_{bs}P Pbspline(u)=j=03Nj,3(u)Pj=UMbsP
      • Q b e z i e r ( u ) = ∑ j = 0 3 B j , 3 ( u ) Q j = U M b z Q Q_{bezier}(u) = \sum_{j=0}^3B_{j,3}(u)Q_j = UM_{bz}Q Qbezier(u)=j=03Bj,3(u)Qj=UMbzQ
      • P b s p l i n e ( u ) = Q b e z i e r ( t ) P_{bspline}(u) = Q_{bezier}(t) Pbspline(u)=Qbezier(t),则有
      • P = M b s − 1 M b z Q P = M_{bs}^{-1}M_{bz}Q P=Mbs1MbzQ
      • Q = M b z − 1 M b s P Q = M_{bz}^{-1}M_{bs}P Q=Mbz1MbsP
  • 均匀 B 样条曲面与 Bezier 曲面的关系
    • 相同处
      • 对称性
      • 几何变换不变性
      • 凸包性
      • 分割性
      • 变差减少性
    • 不同处
      • 1
        • 均匀双三次 B 样条曲面边界及边界切矢特性
        • 双三次 Bezier 曲面边界及边界切矢特性
      • 2
        • 双三次 Bezier 曲面整体性
        • 均匀双三次 B 样条曲面局部性
      • 3
        • 均匀双三次 B 样条曲面函数连续性
        • 双三次 Bezier 曲线几何连续性
  • 三次均匀 B 样条曲面与三次 Bezier 曲面之间也可相互转换
    • 推导
      • P b s p l i n e ( u , v ) = ∑ i = 0 3 ∑ j = 0 3 P i , j N i , 3 ( u ) N j , 3 ( v ) = U M b s P i j M b s T V T P_{bspline}(u, v) = \sum_{i=0}^3 \sum_{j=0}^3 P_{i,j}N_{i,3}(u)N_{j,3}(v) = UM_{bs}P_{ij}M_{bs}^TV^T Pbspline(u,v)=i=03j=03Pi,jNi,3(u)Nj,3(v)=UMbsPijMbsTVT
      • Q b e z i e r ( u , v ) = ∑ i = 0 3 ∑ j = 0 3 Q i j B i , 3 ( u ) B j , 3 ( v ) = U M b z Q i j M b z T V T Q_{bezier}(u,v) = \sum_{i=0}^3 \sum_{j=0}^3 Q_{ij}B_{i,3}(u)B_{j,3}(v) = UM_{bz}Q_{ij}M_{bz}^TV^T Qbezier(u,v)=i=03j=03QijBi,3(u)Bj,3(v)=UMbzQijMbzTVT
      • 令: P b s p l i n e ( u , v ) = Q b e z i e r ( t , w ) P_{bspline}(u, v) = Q_{bezier}(t, w) Pbspline(u,v)=Qbezier(t,w),则有
      • P i j = M b s − 1 M b z Q i j M b z T ( M b s T ) − 1 P_{ij} = M_{bs}^{-1}M_{bz}Q_{ij}M_{bz}^T(M_{bs}^T)^{-1} Pij=Mbs1MbzQijMbzT(MbsT)1
      • Q i j = M b z − 1 M b s P i j M b s T ( M b z T ) − 1 Q_{ij} = M_{bz}^{-1}M_{bs}P_{ij}M_{bs}^T(M_{bz}^T)^{-1} Qij=Mbz1MbsPijMbsT(MbzT)1

非均匀 B 样条曲线曲面表达

非均匀 B 样条曲线表达定义

定义

  • 给定 n + 1 n+1 n+1 个控制点 P i ( i = 0 , 1 , . . . , n ) P_i(i=0,1, ..., n) Pi(i=0,1,...,n) 构成特征多边形顶点,同时给定次数 K K K 及节点向量 U = [ u 0 ,    u 1 ,    . . . , u n + k ,    u n + k + 1 ] U = [u_0, \ \ u_1, \ \ ..., u_{n+k}, \ \ u_{n+k+1} ] U=[u0,  u1,  ...,un+k,  un+k+1], 则 k k k 次 (k+1阶) 非均匀 B 样条曲线的表达式为:
    p ( u ) = ∑ i = 0 n P i N i , k ( u ) ,         u ∈ [ u k , u n + 1 ] p(u) = \sum_{i=0}^nP_iN_{i,k}(u), \ \ \ \ \ \ \ u\in[u_k, u_{n+1}] p(u)=i=0nPiNi,k(u),       u[uk,un+1]

    • 式中,节点数 = 控制点数 + k + 1 = n + k +2
    • N 1 , k ( u ) N_{1,k}(u) N1,k(u) 是基函数(也称调和函数),其定义如下
      { N i , 0 ( u ) = { 1 若 u i ≤ u < u i + 1 0 其他 N i , k ( u ) = ( u − u i ) N i , k − 1 ( u ) u i + k − u i + ( u i + k + 1 − u ) N i + 1 , k − 1 ( u ) u i + k + 1 − u i + 1        ( k ≥ 1 ) \begin{cases} N_{i,0}(u) = \begin{cases} 1 & 若u_i \le u < u_{i+1} \\ 0 & 其他 \end{cases} \\ N_{i,k}(u) = \cfrac{(u-u_i)N_{i,k-1}(u)}{u_{i+k}-u_i} + \cfrac{(u_{i+k+1}-u)N_{i+1,k-1}(u)}{u_{i+k+1}-u_{i+1}} \ \ \ \ \ \ (k \ge 1) \end{cases} Ni,0(u)={10uiu<ui+1其他Ni,k(u)=ui+kui(uui)Ni,k1(u)+ui+k+1ui+1(ui+k+1u)Ni+1,k1(u)      (k1)
    • 规定 0 0 = 0 \cfrac{0}{0} = 0 00=0
    • 式中: U = [ u 0 ,    u 1 ,    . . . , u n + k ,    u n + k + 1 ] U = [u_0, \ \ u_1, \ \ ..., u_{n+k}, \ \ u_{n+k+1} ] U=[u0,  u1,  ...,un+k,  un+k+1] 称为 B 样条基函数的节点向量
      • u i u_i ui 为节点值
        • 应满足 u i ≤ u i + 1 u_i \le u_{i+1} uiui+1
        • 即节点值满足有序递增(允许有重节点)
    • 由于节点向量间距不必均匀,故称为非均匀 B 样条基函数,所构造的曲线称为非均匀 B 样条曲线
  • B 样条基函数具有局部支撑特性

    • 对任一基函数而言 N i , k ( u ) = { ≤ 0 x ∈ [ u i , u i + k + 1 ] = 0 x ∉ [ u i , u i + k + 1 ] N_{i,k}(u) = \begin{cases} \le 0 & x \in[u_i, u_{i+k+1}] \\ = 0 & x\not\in [u_i, u_{i+k+1}] \end{cases} Ni,k(u)={0=0x[ui,ui+k+1]x[ui,ui+k+1] [ u i ,    u i + k + 1 ] [u_i, \ \ u_{i+k+1}] [ui,  ui+k+1] 区间 (k+2个节点区间) 为基函数 N i , k ( u ) 的支撑区间 N_{i,k}(u)的支撑区间 Ni,k(u)的支撑区间
  • B 样条曲线参数值区间范围为 [ u k , u n + 1 ] [u_k, u_{n+1}] [uk,un+1], 对于任一曲线子段其参数取值区间范围为相邻两节点参数间

    • 如第一段参数取值范围 [ u k , u k + 1 ] [u_k, u_{k+1}] [uk,uk+1],第 j j j 段参数取值范围为 [ U k + j − 1   U k + 1 ] [U_{k+j-1} \ U_{k+1}] [Uk+j1 Uk+1]

B 样条、Bezier 及均匀 B 样条基函数比较

  • 三次 Bezier 基函数
    { B 0 , 3 ( u ) = ( 1 − u ) 3 B 1 , 3 ( u ) = 3 u ( 1 − u ) 2 B 2 , 3 ( u ) = 3 u 2 ( 1 − u ) B 3 , 3 ( u ) = u 3      u ∈ [ 0 , 1 ] \begin{cases} &B_{0,3}(u) = (1-u)^3 \\ &B_{1,3}(u) = 3u(1-u)^2 \\ &B_{2,3}(u) = 3u^2(1-u) \\ &B_{3,3}(u) = u^3 \end{cases} \ \ \ \ u\in[0,1] B0,3(u)=(1u)3B1,3(u)=3u(1u)2B2,3(u)=3u2(1u)B3,3(u)=u3    u[0,1]

  • 均匀三次 B 样条基函数
    { N i , 3 ( u ) = 1 3 ! ( 1 − u ) 3 N i + 1 , 3 ( u ) = 1 3 ! ( 4 − 6 u 2 + 3 u 3 ) N i + 2 , 3 ( u ) = 1 3 ! ( 1 + 3 u + 3 u 2 − 3 u 3 ) N i + 3 , 3 ( u ) = 1 3 ! u 3      u ∈ [ 0 , 1 ] \begin{cases} N_{i,3}(u) = \cfrac{1}{3!}(1-u)^3 \\ N_{i+1,3}(u) = \cfrac{1}{3!}(4-6u^2+3u^3) \\ N_{i+2,3}(u) = \cfrac{1}{3!}(1+3u+3u^2-3u^3) \\ N_{i+3,3}(u) = \cfrac{1}{3!}u^3 \end{cases} \ \ \ \ u\in[0,1] Ni,3(u)=3!1(1u)3Ni+1,3(u)=3!1(46u2+3u3)Ni+2,3(u)=3!1(1+3u+3u23u3)Ni+3,3(u)=3!1u3    u[0,1]

  • B 样条基函数
    { N i , 0 ( u ) = { 1 若 u i ≤ u < u i + 1 0 其他 N i , k ( u ) = ( u − u i ) N i , k − 1 ( u ) u i + k − u i + ( u i + k + 1 − u ) N i + 1 , k − 1 ( u ) ) u i + k + 1 − u i + 1        ( K ≥ 1 ) 规定 0 0 = 0 \begin{cases} N_{i,0}(u) = \begin{cases} 1 & 若u_i \le u < u_{i+1} \\ 0 & 其他 \end{cases} \\ N_{i,k}(u) = \cfrac{(u-u_i)N_{i,k-1}(u)}{u_{i+k}-u_i} + \cfrac{(u_{i+k+1}-u)N_{i+1,k-1}(u))}{u_{i+k+1}-u_{i+1}} \ \ \ \ \ \ (K \ge 1) \\ 规定 \cfrac{0}{0} = 0 \end{cases} Ni,0(u)={10uiu<ui+1其他Ni,k(u)=ui+kui(uui)Ni,k1(u)+ui+k+1ui+1(ui+k+1u)Ni+1,k1(u))      (K1)规定00=0

  • 注意

    • B样条基函数是变化的,由节点决定
    • 而 Bezier、均匀B样条基函数不变

非均匀 B 样条基函数推导计算

  • 非均匀 B 样条基函数推导为 Bezier 基函数
    • 节点向量为 u [ 0 ,    0 ,    0 ,    1 ,    1 ,    1 ] u[0, \ \ 0, \ \ 0, \ \ 1, \ \ 1, \ \ 1] u[0,  0,  0,  1,  1,  1]
  • 非均匀 B 样条基函数推导为均匀三次 B 样条基函数
    • 节点向量为 u [ 0 ,    1 ,    2 ,    3 ,    4 ,    5 ,    6 ,    7 ] u[0, \ \ 1, \ \ 2, \ \ 3, \ \ 4, \ \ 5, \ \ 6, \ \ 7] u[0,  1,  2,  3,  4,  5,  6,  7]
    • 通解 u i − u i 1 = 1 u_i-u_{i_1} = 1 uiui1=1
      • 个人理解就是,等差数列生成的基函数都是均匀三次 B 样条基函数

非均匀 B 样条基函数的性质

  • 正性
    • ∑ i = 0 k N i , k ( u ) ≥ 0 \sum_{i=0}^kN_{i,k}(u) \ge 0 i=0kNi,k(u)0
  • 平移性
    • 所有节点向量平移一个常量,对其基函数值计算没有影响
  • 正权性
    • ∑ i = 0 k N i , k ( u ) = 1 \sum_{i=0}^kN_{i,k}(u) = 1 i=0kNi,k(u)=1
  • 对称性
  • 规一化
    • 所有节点向量进行规一化处理(平移及等比例缩放到[0,1]参数区间),对其基函数值计算没有影响
    • 因此对曲线定义也无影响
  • 递推特性
    • k k k 次基函数是两个 k − 1 k-1 k1 次基函数的线性组合递归计算

重节点对 B 样条基函数的影响

  • 节点重复度每增加1, B 样条基的支撑区间中减少一个非零节点区间,B样
    条在该重节点处的可微性降一次
  • 当非零节点区间长度相同时,在 K K K 重节点处的 K K K 次 B 样条基具有相同形状

非均匀 B 样条曲线计算与绘制

  • 绘制方法
    • 对每一曲线段参数区间 u ∈ [ u i ,   u i + 1 ] u\in[u_i, \ u_{i+1}] u[ui, ui+1] 进行离散,离散方法可采用均匀离散,也可按照误差大小控制进行非均匀离散
    • 将离散节点值代入公式即可得到一系列曲线上的离散点,连接各点即成完整的曲线

非均匀 B 样条曲线的性质

  • 几何不变性
  • 对称性
  • 凸包性
  • 局部性质
    • 修改控制点仅影响邻近相关几个曲线段形状,不对整体曲线形状造成影响
  • 连续性
    • k k k 次 B 样条曲线具有 k − r k-r kr 阶( r r r 为节点重数)函数连续性
    • 当重复控制顶点时,虽然函数连续仍保持,但是曲线几何连续性下降甚至产生尖点
  • 分割特性
  • 升阶与降阶
  • 连接组合
    • 曲线组合
      • 将两条或多条顺序相连的 B 样条曲线用一个统一的 B 样条曲线方程表示

节点对曲线形状影响

  • 节点参数对曲线光顺性影响
    • 节点参数取值直接影响曲线形状
      • 均匀节点参数(即均匀 B 样条曲线)可能导致曲线不光顺以及甚至自相交等现象
      • 可采用累计弦长节点参数改善曲线光顺性
  • 重节点对曲线形状影响
    • 可通过修改节点向量值来改变曲线的形状
    • 在 B 样条曲线定义域内的内重节点,重复度每增加1,曲线段数就减 1
    • 样条曲线在该重节点处的可微性或参数连续阶降 1
  • 节点插入的影响
    • 通过节点插入
      • 可直接求出 B 样条曲线上的点
      • 可分割 B 样条曲线
      • 可构造分段 Bezier 曲线
      • 可连接组合 B 样条曲线
      • 构造曲面时,统一不同的曲线节点矢量
      • 提高 B 样条曲线现状控制的潜在灵活性

非均匀 B 样条表示与 Bezier 、均匀 B 样条、准均匀 B 样条表示的关系

  • Bezier 仅是 B 样条的特例
  • 均匀三次 B 样条曲线也是非均匀 B 样条曲线的特例
  • 准均匀 B 样条曲线
    • 首末端点节点重复定义 k k k 次(即 k + 1 k+1 k+1重节点),且其余内部节点均匀分布
    • 准均匀 B 样条曲线的中间部分曲线段将为均匀 B 样条曲线
    • 但曲线首末端点正好与控制点的首末端点重合

非均匀三次 B 样条曲线的控制点反求

  • 根据非均匀 B 样条曲线的定义
    q ( u ) = ∑ i = 0 n Q i N i , 3 ( u )       u ∈ [ u 3 , u n + 1 ] q(u) = \sum_{i=0}^n Q_iN_{i,3}(u) \ \ \ \ \ u \in [u_3, u_{n+1}] q(u)=i=0nQiNi,3(u)     u[u3,un+1]
    • 由式中可知
      • n − 1 n-1 n1个方程, n + 1 n+1 n+1个未知数
      • 需补充两端边界切矢条件
      • 假设节点给定
        • 方案一(准均匀 B 样条)
          • 起点4重节点为0,终点4重节点为1
          • 中间取均匀节点,间隔为 1 / ( n − 2 ) 1/(n-2) 1/(n2)
        • 方案二(非均匀 B 样条)
          • 起点4重节点为0,终点4重节点为1,
          • 中间按累积弦长
            • d = ∑ k = 2 n − 1 ∣ P k − P k − 1 ∣ d = \sum_{k=2}^{n-1}\sqrt{|P_k-P_{k-1}|} d=k=2n1PkPk1
            • U k + 2 = U k + 1 + ∣ P k − P k − 1 ∣ d     k = 2 , . . . , n − 1 U_{k+2} = U_{k+1}+\cfrac{\sqrt{|P_k-P_{k-1}|}}{d} \ \ \ k=2,...,n-1 Uk+2=Uk+1+dPkPk1    k=2,...,n1
    • 根据上述给定条件,并假定
      • P i = q ( U i + 2 )      i = 1 , 2 , . . . , n − 1 P_i = q(U_{i+2}) \ \ \ \ i=1,2, ..., n-1 Pi=q(Ui+2)    i=1,2,...,n1
    • 补充边界条件
      • P 1 ′ = q ′ ( U 3 ) P_1^{'} = q^{'}(U_3) P1=q(U3)
      • P n − 1 ′ = q ′ ( U n + 1 ) P_{n-1}^{'} = q^{'}(U_{n+1}) Pn1=q(Un+1)
    • 最后求解线性方程组即可

B 样条曲线与 Bezier 曲线的比较

  • 1
    • Bezier 曲线的基函数的次数等于控制顶点数减一
    • 而 B 样条曲线的基函数的次数与控制点数无关
      • 可用任意多的控制点来拟合三次 B 样条曲线
      • B样条曲线构造复杂曲线更方便
  • 2
    • Bezier 曲线的起点和终点正好是控制多边形的首末控制点,控制形状直
      观方便
    • 而 B 样条曲线不经过控制多边形顶点
  • 3
    • 为使B样条曲线经过首末顶点,引入准均匀 B 样条,使节点矢量中两端节点具有 k + 1 k+1 k1 个重复度
  • 4
    • B 样条曲线比 Bezier 曲线具有更紧致的凸包,更加逼近特征多边形

非均匀 B 样条曲面定义

定义

  • 给定 ( m + 1 ) × ( n + 1 ) (m+1) \times (n+1) (m+1)×(n+1) 个网格控制顶点 P i , j    ( i = 0 , 1 , . . . , m ;    j = 0 , 1 , . . . , n ) P_{i,j}\ \ (i=0,1,...,m; \ \ j=0,1,...,n) Pi,j  (i=0,1,...,m;  j=0,1,...,n) 构成特征多边形控制顶点
  • 给定 u u u 向和 v v v 向次数 k k k r r r,以及对应节点向量 U = [ u 0 ,   u 1 ,   . . . ,   u m + k + 1 ] U = [u_0, \ u_1, \ ..., \ u_{m+k+1}] U=[u0, u1, ..., um+k+1] V = [ v 0 ,   v 1 ,   . . . ,   v n + r + 1 ] V = [v_0, \ v_1, \ ..., \ v_{n+r+1}] V=[v0, v1, ..., vn+r+1]
  • 则一张 k × r k \times r k×r 次 B 样条曲面 p ( u , v ) p(u,v) p(u,v) 的表达为
    p ( u , v ) = ∑ i = 0 m ∑ j = 0 n P i , j N i , k ( u ) N j , r ( v )        u k ≤ u ≤ u m + 1 ,    v r ≤ v ≤ v n + 1 p(u,v) = \sum_{i=0}^m\sum_{j=0}^nP_{i,j}N_{i,k}(u)N_{j,r}(v) \ \ \ \ \ \ u_k \le u \le u_{m+1}, \ \ v_r \le v \le v_{n+1} p(u,v)=i=0mj=0nPi,jNi,k(u)Nj,r(v)      ukuum+1,  vrvvn+1
  • 其中 N i , k ( u ) N_{i,k}(u) Ni,k(u) N j , r ( v ) N_{j,r}(v) Nj,r(v) 均为 B 样条基函数
  • 计算方法与 B 样条曲线计算方法相同

非均匀 B 样条曲面性质

  • 均匀双三次 B 样条曲面及 Bezier 曲面是非均匀 B 样条曲面的特例
  • 几何特性
    • 几何不变性
    • 函数连续性
    • 对称性
    • 凸包性
    • 局部性
    • 可分割性
    • 升降阶特性

非均匀 B 样条曲面反求

  • 类似于前面双三次均匀 B 样条曲面反算原理
    • 给定 U U U 向和 V V V 向节点矢量及边界条件
    • 沿 U U U 向反算
    • 沿 V V V 向反算
  • 存在下列问题
    • 每一条线型值点数可能不一致,必须预处理为统一点数
    • 角点扭矢量不直观, V V V 向切矢未精确保证

NURBS 曲线曲面

  • 非均匀有理 B 样条 (Non-Uniform Rational B-Spline)
    • 统一表达 B 样条曲线曲面与圆锥曲线曲面

NURBS 曲线定义

  • 给定 n + 1 n+1 n+1 个控制点 P i    ( i = 0 , 1 , . . . , n ) P_i \ \ (i=0,1,...,n) Pi  (i=0,1,...,n) 构成特征多边形顶点,并给定对应控制点权值 w i    ( i = 0 , 1 , . . . , n ) w_i \ \ (i=0,1,...,n) wi  (i=0,1,...,n) 及节点向量 U = [ u 0 ,   u 1 ,   . . . , u n + k + 1 ] U=[u_0, \ u_1, \ ..., u_{n+k+1}] U=[u0, u1, ...,un+k+1],则 k k k 次( k + 1 k+1 k+1阶) Nurbs 曲线的表达式为
    p ( u ) = ∑ i = 0 n w i P i N i , k ( u ) ∑ i = 0 n w i N i , k ( u ) p(u) = \cfrac{\sum_{i=0}^nw_iP_iN_{i,k}(u)}{\sum_{i=0}^nw_iN_{i,k}(u)} p(u)=i=0nwiNi,k(u)i=0nwiPiNi,k(u)
    • 式中:
      { N i , 0 ( u ) = { 1 若 u i ≤ u < u i + 1 0 其他 N i , k ( u ) = ( u − u i ) N i , k − 1 ( u ) u i + k − u i + ( u i + k + 1 − u ) N i + 1 , k − 1 ( u ) ) u i + k + 1 − u i + 1        ( k ≥ 1 ) 0 0 = 0 \begin{cases} N_{i,0}(u) = \begin{cases} 1 & 若u_i \le u< u_{i+1} \\ 0 & 其他 \end{cases} \\ N_{i,k}(u) = \cfrac{(u-u_i)N_{i,k-1}(u)}{u_{i+k}-u_i} + \cfrac{(u_{i+k+1}-u)N_{i+1,k-1}(u))}{u_{i+k+1}-u_{i+1}} \ \ \ \ \ \ (k \ge 1) \\ \cfrac{0}{0} = 0 \end{cases} Ni,0(u)={10uiu<ui+1其他Ni,k(u)=ui+kui(uui)Ni,k1(u)+ui+k+1ui+1(ui+k+1u)Ni+1,k1(u))      (k1)00=0
    • NURBS 仍采用 B 样条基函数,但采用有理表达,增加权值控制

NURBS曲线权值对曲线的影响

  • 节点权因子 w i w_i wi 影响到 [ u i ,   u i + k + 1 ] [u_i, \ u_{i+k+1}] [ui, ui+k+1] 区间内曲线形状,具有局部性
    • w i = 0 w_i = 0 wi=0 时,该节点的位置对曲线的形状没有影响
    • w i w_i wi 增大时,曲线上的点 p ( u ) p(u) p(u) 将沿直线向控制点 P i P_i Pi 接近
    • w i w_i wi 趋于无穷大时, p ( u ) p(u) p(u) 将与 P i P_i Pi 重合
  • 权因子的增减对曲线段起到了相对于控制点的推拉作用
    • 可以方便用于修改曲线的局部形状
  • 当所有权值取1时,NURBS 曲线就是 B 样条曲线
  • NURBS 精确表达圆锥曲线
    • 抛物线
    • 双曲线
    • 椭圆等

NURBS曲线的几何特性

  • NURBS 曲线具有和 B 样条曲线相同的性质
    • 几何不变形
    • 对称性
    • 凸包性
    • 连续性
    • 分割性
    • 局部性
  • NURBS 方法主要有以下几个优点
    • 不仅可以表示自由曲线曲面, 还可以精确地表示圆锥曲线和曲面
    • 可以设计更为复杂的曲线曲面形状,
    • NURBS 方法是非有理 B 样条方法在四维空间的推广
      • 多数非有理 B 样条曲线曲面的性质及其计算方法可推广到 NURBS 曲
        线曲面
    • 计算稳定且快速
  • NURBS 的缺点
    • 需要额外的存储以定义传统的曲线和曲面
    • 权因子的不合适应用可能导致很坏的参数化,甚至毁掉随后的曲面结构

NURBS曲面定义

  • 给定 ( n + 1 ) × ( m + 1 ) (n+1) \times (m+1) (n+1)×(m+1) 个控制点 P i , j    ( i = 0 , 1 , . . . , m ;    j = 0 , 1 , . . . , n ) P_{i,j} \ \ (i=0,1,...,m; \ \ j=0,1,...,n ) Pi,j  (i=0,1,...,m;  j=0,1,...,n) 构成特征多边形控制顶点及其对应权值 w i , j w_{i,j} wij,并给定参数 u u u v v v 的次数 k k k r r r 以及对应的节点向量 U = [ u 0 ,   u 1 ,   . . . , u m + k + 1 ] U=[u_0, \ u_1, \ ..., u_{m+k+1}] U=[u0, u1, ...,um+k+1] V = [ v 0 ,   v 1 ,   . . . , v n + k + 1 ] V=[v_0, \ v_1, \ ..., v_{n+k+1}] V=[v0, v1, ...,vn+k+1],则可以定义一张 k × r k \times r k×r 次 NURBS 曲面 P ( u , v ) P(u,v) P(u,v),其表达为:
    p ( u , v ) = ∑ i = 0 m ∑ j = 0 n w i , j P i , j N i , k ( u ) N j , k ( v ) ∑ i = 0 m ∑ j = 0 n w i , j N i , k ( u ) N j , k ( v )       u ∈ [ u k , u m + 1 ] ,     v ∈ [ v r , v n + 1 ] p(u,v) = \cfrac{\sum_{i=0}^m\sum_{j=0}^nw_{i,j}P_{i,j}N_{i,k}(u)N_{j,k}(v)}{\sum_{i=0}^m\sum_{j=0}^nw_{i,j}N_{i,k}(u)N_{j,k}(v)} \ \ \ \ \ u\in[u_k,u_{m+1}], \ \ \ v\in[v_r, v_{n+1}] p(u,v)=i=0mj=0nwi,jNi,k(u)Nj,k(v)i=0mj=0nwi,jPi,jNi,k(u)Nj,k(v)     u[uk,um+1],   v[vr,vn+1]
    • 式中 N i , k ( u ) N_{i,k}(u) Ni,k(u) N j , k ( v ) N_{j,k}(v) Nj,k(v) 均为 B 样条基函数
  • 为使 NURBS 曲面具有良好的特性,规定四角顶点处用正权因子
    • w 0 , 0 w_{0,0} w0,0 w 0 , n w_{0,n} w0,n w m , 0 w_{m,0} wm,0 w m , n w_{m,n} wm,n > 0 > 0 >0,其余 w i , j ≥ 0 w_{i,j} \ge 0 wi,j0
  • NURBS 曲面具有和 B 样条曲面相同的性质
  • NURBS 曲面能统一表达圆锥曲面
    • 球面
    • 柱面
    • 圆环面
    • B 样条曲面
    • Bezier 曲面

NURBS 曲线曲面反算

  • NURBS 曲线反算类似于非均匀 B 样条曲线反算
    • 区别在于每个多边形控制点必须给定权值,且调用 NURBS 表达公式
    • 但多数情况下缺省权值为1,即直接用非均匀 B 样条曲线反算
  • NURBS 曲面反算类似于非均匀 B 样条曲面反算
    • 区别在于每个网格控制点必须给定权值,且调用 NURBS 表达公式
    • 但多数情况下缺省权值为1,即直接用非均匀 B 样条曲面反算

NURBS 缺点

  • B 样条 (NURBS) 曲面局部控制性较弱,在实际应用中重构分布不均匀的曲线曲面时,需要产生过多的网格控制点
  • 既浪费空间,又浪费时间效率

T-Spline 曲面

  • T-spline 方法的基函数仍采用 B-spline 基函数,其 T-spline 曲面不在基于严格的张量积网格控制点表示,而是一种基于点的样条表示
  • 该表示方法能够方便表示具有 T 节点的网格,大大减少控制点的数目
  • 但该方法拓扑关系复杂,需额外的存储空间
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值