1. B样条曲面的构建方法
给定以下信息:
- m + 1 m+1 m+1行, n + 1 n+1 n+1列的控制点 p i , j p_{i,j} pi,j,其中, 0 < = i < = m 0 <= i <= m 0<=i<=m, 0 < = j < = n 0 <= j <= n 0<=j<=n
- u u u方向的节点向量, U U U={ u 0 , u 1 , . . . , u h u_0, u_1, ..., u_h u0,u1,...,uh }
- v v v方向的节点向量, V V V={ v 0 , v 1 , . . . , u k v_0, v_1, ..., u_k v0,v1,...,uk }
- u u u方向的次数 p p p
- v v v方向的次数 q q q
B样条曲面的定义为:
效果图:
二维B样条基函数:
Clamped, Closed, Open B样条曲面:
- 如果B样条曲线在两个方向上Clamped,则该曲面通过控制点 p 0 , 0 , p m , 0 , p 0 , n 和 p m , n p_{0,0},p_{m,0},p_{0,n}和p_{m,n} p0,0,pm,0,p0,n和pm,n,并在这四个控制点处与控制网的相切.
- 如果B样条曲线曲面在某个方向上是closed,则该方向上的所有等参曲线都是闭合曲线,该曲面将成为一个管状体.
- 如果B样条曲面在两个方向上都是open,则该曲面不会通过控制点 p 0 , 0 , p m , 0 , p 0 , n 和 p m , n p_{0,0},p_{m,0},p_{0,n}和p_{m,n} p0,0,pm,0,p0,n和pm,n.
Clamped
Closed
Open
2. 性质
-
非负性:对于所有的 p , q , i , j p,q,i,j p,q,i,j,以及0到1范围内的所有 u 和 v u和v u和v, N i , p ( u ) , N j , q ( v ) N_{i,p}(u),N_{j,q}(v) Ni,p(u),Nj,q(v)都是非负的.
-
对0到1范围内的任意一对 u 和 v u和v u和v,均有:
-
强凸包性:如果 ( u , v ) 在 [ u i , u i + 1 ) (u,v)在[u_i,u_{i+1}) (u,v)在[ui,ui+1)x [ v j , v j + 1 ) [v_j,v_{j+1}) [vj,vj+1)内,则 p ( u , v ) p(u,v) p(u,v)位于由控制点 p h , k p_{h,k} ph,k定义的凸包内,其中, i − p < = h < = i i-p<=h<=i i−p<=h<=i, j − q < = k < = j j-q<=k<=j j−q<=k<=j.
-
局部修改特性:如果 ( u , v ) 不 在 [ u i , u i + 1 ) (u,v)不在[u_i,u_{i+1}) (u,v)不在[ui,ui+1)x [ v j , v j + 1 ) [v_j,v_{j+1}) [vj,vj+1)定义的矩形框内,则 N i , p ( u ) , N j , q ( v ) N_{i,p}(u),N_{j,q}(v) Ni,p(u),Nj,q(v)为0.
-
如果 u ( r e s p . , v ) u(resp.,v) u(resp.,v)为 s ( r e s p . , t ) s(resp.,t) s(resp.,t)重节点,则 p ( u , v ) p(u,v) p(u,v)在 u ( r e s p . , v ) u(resp.,v) u(resp.,v)方向上 C p − s ( r e s p . , C p − t ) C_{p-s}(resp.,C_{p-t}) Cp−s(resp.,Cp−t)连续.
-
仿射不变性
-
变差递减性
-
如果 m = p , n = q m=p,n=q m=p,n=q, U U U={0,0,…,0,1,…,1},则B样条曲面退化成贝塞尔曲面.
3. De Boor’s Algorithm
1.推导计算:
2.过程示意图:
假设 v v v在 [ v d , v d + 1 ) [v_d,v_{d+1}) [vd,vd+1)之间, u u u在 [ u c , u c + 1 ) [u_c,u_{c+1}) [uc,uc+1)之间.
3.算法流程:
4.效果图: