5.3 B 样条曲线与曲面

B 样条曲线方程的定义

Bezier曲线的不足:阶次较大时特征多边形对曲线的控制将会减弱;没有局部性、不能做局部修改;拼接较复杂

B 样条曲线方程: P ( t ) = ∑ i = 0 n P i N i , k ( t ) P(t)=\sum\limits_{i=0}^nP_iN_{i,k}(t) P(t)=i=0∑n​Pi​Ni,k​(t) ,其中:

  • P i ( i = 0 , 1 , . . . , n ) P_i\,(i=0,1,...,n) Pi​(i=0,1,...,n) 是控制多边形的顶点
  • 给定参数 t t t 轴上的一个分割 T = { t i : t 0 ≤ t i ≤ . . . ≤ t n + k } T=\{t_i:\,t_0\le t_i\le...\le t_{n+k}\} T={ti​:t0​≤ti​≤...≤tn+k​} , T T T 称为节点矢量
  • N i , k ( t ) N_{i,k}(t) Ni,k​(t) 称为 T T T 的 k k k 阶 B 样条基函数(调和函数),是一个 k k k 阶( k − 1 k-1 k−1 次)分段多项式样条。其中每一个称为 B 样条,定义为:

N i , 1 ( t ) = { 1 t i ≤ x ≤ t i + 1 0 e l s e N i , k ( t ) = t − t i t i + k − 1 − t i N i , k − 1 ( t ) + t i + k − t t i + k − t i + 1 N i + 1 , k − 1 ( t ) N_{i,1}(t)= \left\{ \begin{array}{ll} 1 & t_i\le x\le t_{i+1} \\ 0 & else \end{array} \right. \\ N_{i,k}(t)=\frac{t-t_i}{t_{i+k-1}-t_i}N_{i,k-1}(t)+\frac{t_{i+k}-t}{t_{i+k}-t_{i+1}}N_{i+1,k-1}(t) Ni,1​(t)={10​ti​≤x≤ti+1​else​Ni,k​(t)=ti+k−1​−ti​t−ti​​Ni,k−1​(t)+ti+k​−ti+1​ti+k​−t​Ni+1,k−1​(t)

欲确定第 i i i 个 k k k 阶 B 样条 N i , k ( t ) N_{i,k}(t) Ni,k​(t) ,需要用到 t i , t i + 1 , . . . , t i + k t_i,t_{i+1},...,t_{i+k} ti​,ti+1​,...,ti+k​ 共 k + 1 k+1 k+1 个节点,称区间 [ t i , t i + k ] [t_i, t_{i+k}] [ti​,ti+k​] 为 N i , k ( t ) N_{i,k}(t) Ni,k​(t) 的支撑区间;

曲线方程中, n + 1 n+1 n+1 个控制顶点 P i ( i = 0 , 1 , . . . , n ) P_i\,(i=0,1,...,n) Pi​(i=0,1,...,n) ,要用到 n + 1 n+1 n+1 个 k k k 阶B样条 N i , k ( t ) N_{i,k}(t) Ni,k​(t) ,它们支撑区间的并集定义了这一组B样条基的节点矢量 T = [ t 0 , t 1 , . . . , t n + k ] T=[t_0,t_1,...,t_{n+k}] T=[t0​,t1​,...,tn+k​] ;

B 样条基函数的性质

局部支撑性是最重要的性质

局部支撑性: N i , k ( t ) = { ≥ 0 t ∈ [ t i , t i + k ] = 0 e l s e N_{i,k}(t)=\left\{\begin{array}{ll}\ge0 & t\in[t_i,t_{i+k}] \\=0 & else \end{array}\right. Ni,k​(t)={≥0=0​t∈[ti​,ti+k​]else​

权性: ∑ i = 0 n N i , k ( t ) = 1 \sum\limits_{i=0}^nN_{i,k}(t)=1 i=0∑n​Ni,k​(t)=1 , t ∈ [ t k − 1 , t n + 1 ] t\in[t_{k-1},t_{n+1}] t∈[tk−1​,tn+1​]

微分公式: N i , k ′ ( t ) = k − 1 t i + k − 1 − t i N i , k − 1 ( t ) − k − 1 t i + k − t i + 1 N i + 1 , k − 1 ( t ) N'_{i,k}(t)=\frac{k-1}{t_{i+k-1}-t_i}N_{i,k-1}(t)-\frac{k-1}{t_{i+k}-t_{i+1}}N_{i+1,k-1}(t) Ni,k′​(t)=ti+k−1​−ti​k−1​Ni,k−1​(t)−ti+k​−ti+1​k−1​Ni+1,k−1​(t)

次数:

  • N i , k ( t ) N_{i,k}(t) Ni,k​(t) 在每一段 [ t i , t i + k ] [t_i,\,t_{i+k}] [ti​,ti+k​] 上都是次数不高于 k − 1 k-1 k−1 的多项式
  • N i , k ( t ) N_{i,k}(t) Ni,k​(t) 在 l l l 重结点处的连续阶不低于 k − 1 − l k-1-l k−1−l 阶: t i − 1 < t i = t i + 1 = . . . = t i + l − 1 < t i + l t_{i-1}\lt t_i=t_{i+1}=...=t_{i+l-1}\lt t_{i+l} ti−1​<ti​=ti+1​=...=ti+l−1​<ti+l​

B 样条曲线的类型划分

① 按照首末端点是否重合,分为闭曲线和开曲线;闭曲线又区分为周期和非周期两种情形:

  • 周期闭曲线在首末端点是 C 2 C^2 C2 连续的,而非周期闭曲线一般是 C 0 C^0 C0 连续的
  • 非周期闭曲线可以认为是开曲线的特例,按开曲线处理

② 按照节点矢量中节点的分布情况,分为四种类型:

  • 均匀 B 样条曲线:节点矢量中节点沿参数轴均匀或等距分布
  • 准均匀 B 样条曲线:与均匀 B 样条曲线差别在于两端节点具有重复度 k
  • 分段 Bezier 曲线:节点矢量中,两端点节点具有重复度 k,所有内节点重复度为 k - 1
  • 非均匀 B 样条曲线:节点矢量中的节点任意分布

(重复度就是指节点矢量中连续相等的节点数,比如某段区间有 t j − 1 < t j = t j + 1 = . . . = t j + l − 1 < t j + l t_{j-1}\lt t_j=t_{j+1}=...=t_{j+l-1}\lt t_{j+l} tj−1​<tj​=tj+1​=...=tj+l−1​<tj+l​ ,则中间相等的节点称为 T T T 的 l l l 重节点 )

B 样条曲线的性质

局部性是最重要的性质,要记住下标

局部性:

  • B 样条曲线上参数为 t ∈ [ t i , t i + 1 ] t\in[t_i,\,t_{i+1}] t∈[ti​,ti+1​] 的点 P ( t ) P(t) P(t) 至多与 k k k 个控制顶点 P j ( i − k + 1 , . . . , i ) P_j\,(i-k+1,...,i) Pj​(i−k+1,...,i) 有关,而与其他控制顶点无关;
  • 移动点该曲线第 i i i 个控制顶点 P i P_i Pi​ 至多影响到定义在区间 ( t i , t i + k ) (t_i,\,t_{i+k}) (ti​,ti+k​) 上(即 N i , k ( t ) N_{i,k}(t) Ni,k​(t) 支撑区间上)那部分曲线的形状,对曲线其余部分不发生影响

连续性:

分段参数多项式、导数公式:

凸包性、变差缩减性、几何不变性、仿射不变性: 与 Bezier 曲线相同

直线保持性: 控制顶点形成一条直线时,构成的 B 样条曲线也是一条直线

造型灵活性: 可以构造直线段、尖点、切线、过定点等特殊情况

B 样条曲线的矩阵表示

(这里只研究一次、二次和三次的均匀 B 样条曲线的矩阵表示;一次没有考过,都是考二次和三次;给出矩阵,写出代数形式,然后推导一阶、二阶的位置矢量和导数矢量,可能会画图)

一次 B 样条曲线

每相邻两个点可构造出一段一次 B 样条曲线

二次 B 样条曲线

每相邻三个点可构造出一段一次 B 样条曲线

三次 B 样条曲线

每相邻四个点可构造出一段一次 B 样条曲线

de Boor 算法

写出顶点的递推关系;注意下标;只需要画示意图,不需要精确作图

类似于 Bezier 曲线的 de Casteljau 算法,不用带入方程去求出曲线上的某一点,而是采用递归的方式求出:
P i [ r ] ( t ) = { P i r = 0 , i = j − k + 1 , . . . , j t − t i t i + k − r − t i P i [ r − 1 ] ( t ) + t i + k − r − t t i + k − r − t i P i − 1 [ r − 1 ] ( t ) e l s e r = 1 , 2 , . . . , k − 1 ; i = j − k + r + 1 , . . . , j P_i^{[r]}(t)= \left\{ \begin{array}{ll} P_i & r=0,\,i=j-k+1,...,j \\ \frac{t-t_i}{t_{i+k-r}-t_i}P_i^{[r-1]}(t)+\frac{t_{i+k-r}-t}{t_{i+k-r}-t_i}P_{i-1}^{[r-1]}(t) & else \end{array} \right. \\\\ r=1,2,...,k-1;\quad i=j-k+r+1,...,j Pi[r]​(t)={Pi​ti+k−r​−ti​t−ti​​Pi[r−1]​(t)+ti+k−r​−ti​ti+k−r​−t​Pi−1[r−1]​(t)​r=0,i=j−k+1,...,jelse​r=1,2,...,k−1;i=j−k+r+1,...,j
最终迭代 k k k 次,得到 P ( t ) = P j [ k − 1 ] ( t ) P(t)=P_j^{[k-1]}(t) P(t)=Pj[k−1]​(t)

节点插入算法

一般不会考的

B 样条曲面

一般不会考的

5.4 NURBS曲线与曲面

NURBS 曲线的定义

记住NURBS的全称

NURBS(non-uniform rational B-spline):非均匀有理 B 样条方法

(有理曲线就是,比如在平面上用参数方程表示曲线时, x ( t ) x(t) x(t) 和 y ( t ) y(t) y(t) 都是有理函数)

优点: NURBS 既与描述自由型曲线、曲面形状的 B 样条方法相统一,又能精确表示二次胡与二次曲面(初等曲线、曲面)

定义: NURBS 曲线是由分段有理 B 样条多项式基函数定义的,给每个控制顶点加上了加上了权重因子(在 B 样条的基础上增加了一个吸引力权重,权重反映了控制顶点对曲线的吸引程度):
P ( t ) = ∑ i = 0 n ω i P i N i , k ( t ) ∑ j = 0 n ω j N j , k ( t ) = ∑ i = 0 n P i R i , k ( t ) R i , k = ω i N i , k ( t ) ∑ j = 0 n ω j N j , k ( t ) P(t)=\frac{\sum\limits_{i=0}^n\omega_iP_iN_{i,k}(t)}{\sum\limits_{j=0}^n\omega_jN_{j,k}(t)}=\sum\limits_{i=0}^nP_iR_{i,k}(t) \quad\quad\quad R_{i,k}=\frac{\omega_iN_{i,k}(t)}{\sum\limits_{j=0}^n\omega_jN_{j,k}(t)} P(t)=j=0∑n​ωj​Nj,k​(t)i=0∑n​ωi​Pi​Ni,k​(t)​=i=0∑n​Pi​Ri,k​(t)Ri,k​=j=0∑n​ωj​Nj,k​(t)ωi​Ni,k​(t)​
R i , k ( t ) ( i = 0 , . . . , n ) R_{i,k}(t)\,(i=0,...,n) Ri,k​(t)(i=0,...,n) 称为 k k k 阶有理基函数

NURBS 曲线的性质

最重要的还是局部性

① NURBS 基函数的性质:

局部支撑性: R i , k ( t ) = 0 , t ∉ [ t i , t i + k ] R_{i,k}(t)=0,\quad t\notin[t_i,\,t_{i+k}] Ri,k​(t)=0,t∈/[ti​,ti+k​]

权性: ∑ i = 0 n R i , k ( u ) = 1 \sum\limits_{i=0}^nR_{i,\,k}(u)=1 i=0∑n​Ri,k​(u)=1

可微性: 若分母不为零,

  • 在节点区间内无限次连续可微;
  • 在节点处 ( k − 1 − r ) (k-1-r) (k−1−r) 次连续可微, r r r 是该节点的重复度;

② NURBS 曲线的性质:

局部性质:

  • k k k 阶 NURBS 曲线上参数为 t ∈ [ t i , t i + k ] ⊂ [ t k − 1 , t n + 1 ] t\in[t_i,\,t_{i+k}]\sub[t_{k-1},\,t_{n+1}] t∈[ti​,ti+k​]⊂[tk−1​,tn+1​] 的一点 P ( t ) P(t) P(t) 至多与 k k k 个控制顶点 P j P_j Pj​ 及权因子 ω j ( j = i − k + 1 , . . . , i ) \omega_j\,(j=i-k+1,...,i) ωj​(j=i−k+1,...,i) 有关,与其他顶点和权因子无关;
  • 若移动 k k k 次 NURBS 曲线的一个控制顶点 P i P_i Pi​ 或改变其对应的权因子 ω i \omega_i ωi​ ,则仅仅影响定义在区间 [ t i , t i + k ] ⊂ [ t k − 1 , t n + 1 ] [t_i,\,t_{i+k}]\sub[t_{k-1},\,t_{n+1}] [ti​,ti+k​]⊂[tk−1​,tn+1​] 那部分曲线的形状

变差缩减性、凸包性、仿射与透射变换不变性: 与 Bezier 曲线相同

权因子的几何意义

要记住形状因子和权因子对曲线的影响表现在图上的样子

记 B B B 、 N N N 、 B i B_i Bi​ 分别为 ω i = 0 \omega_i=0 ωi​=0 、 ω i = 1 \omega_i=1 ωi​=1 和 ω i ≠ 0 , 1 \omega_i\not=0,\,1 ωi​=0,1 对应曲线上的点,即: B = P ( t ; ω i = 0 ) B=P(t;\,\omega_i=0) B=P(t;ωi​=0) , N = P ( t ; ω i = 1 ) N=P(t;\,\omega_i=1) N=P(t;ωi​=1) , B i = P ( t ; ω i ≠ 0 , 1 ) B_i=P(t;\,\omega_i\not=0,\,1) Bi​=P(t;ωi​=0,1) , P i = P ( t ; ω i → ∞ ) P_i=P(t;\,\omega_i\to\infin) Pi​=P(t;ωi​→∞)

( B B B 代表 P i P_i Pi​ 完全没有影响时曲线的形状; N N N 代表 P i P_i Pi​ 的影响力和在 B 样条曲线中影响力一样时曲线的形状; B i B_i Bi​ 代表在 B 样条曲线的基础上对 P i P_i Pi​ 增加或减少影响力时曲线的形状)

令 α = R i , k ( t ; ω i = 1 ) \alpha=R_{i,k}(t;\,\omega_i=1) α=Ri,k​(t;ωi​=1) , β = R i , k ( t ) \beta=R_{i,k}(t) β=Ri,k​(t) ,则:
N = ( 1 − α ) B + α P i B i = ( 1 − β ) B + β P i N − B = α ( P i − B ) B i − B = β ( P i − B ) N=(1-\alpha)B+\alpha P_i \quad\quad B_i=(1-\beta)B+\beta P_i \\ N-B=\alpha(P_i-B) \quad\quad B_i-B=\beta(P_i-B) N=(1−α)B+αPi​Bi​=(1−β)B+βPi​N−B=α(Pi​−B)Bi​−B=β(Pi​−B)
( P i , B i , N , B ) (P_i,\,B_i,\,N,\,B) (Pi​,Bi​,N,B) 四点的交比为:
1 − α α : 1 − β β = P i N B N : P i B i B B i = ω i \frac{1-\alpha}{\alpha}:\frac{1-\beta}{\beta}=\frac{P_iN}{BN}:\frac{P_iB_i}{BB_i}=\omega_i α1−α​:β1−β​=BNPi​N​:BBi​Pi​Bi​​=ωi​

  • 若 ω i \omega_i ωi​ 增大或减小,则 β \beta β 页增大或减小,所以曲线被拉向或者推离开 P i P_i Pi​ 点
  • 若 ω i \omega_i ωi​ 增大或减小,则曲线被推离开或者拉向 P j ( j ≠ i ) P_j\,(j\not=i) Pj​(j=i) 点
  • 随着 B i B_i Bi​ 的运动,它扫描出一条直线 B P i BP_i BPi​
  • 若 B i B_i Bi​ 趋向 P i P_i Pi​ ,则 β \beta β 去向 1, ω j \omega_j ωj​ 趋向正无穷

圆锥曲线的 NURBS 表示

取节点向量为 T = [ 0 , 0 , 0 , 1 , 1 , 1 ] T=[0,0,0,1,1,1] T=[0,0,0,1,1,1] ,则 NURBS 曲线退化为二次 Bezier 曲线,可以证明这是圆锥曲线弧方程:
P ( t ) = ( 1 − t 2 ) ω 0 P 0 + 2 t ( 1 − t ) ω 1 P 1 + t 2 ω 2 P 2 ( 1 − t 2 ) ω 0 + 2 t ( 1 − t ) ω 1 + t 2 ω 2 P(t)=\frac{(1-t^2)\omega_0P_0+2t(1-t)\omega_1P_1+t^2\omega_2P_2}{(1-t^2)\omega_0+2t(1-t)\omega_1+t^2\omega_2} P(t)=(1−t2)ω0​+2t(1−t)ω1​+t2ω2​(1−t2)ω0​P0​+2t(1−t)ω1​P1​+t2ω2​P2​​

形状因子: C s f = ω 1 2 ω 0 ω 2 C s f 0 ( 0 , 1 ) 1 ( 1 , + ∞ ) → + ∞ 曲线 P 0 P 2 椭圆 抛物线 双曲线 P 0 P 1 和 P 1 P 2 C_{sf}=\frac{\omega_1^2}{\omega_0\omega_2} \quad\quad \begin{array}{|c|c|c|c|c|c|} \hline C_{sf} & 0 & (0,\,1) & 1 & (1,\,+\infin) & \to+\infin \\ \hline 曲线 & P_0P_2 & 椭圆 & 抛物线 & 双曲线 & P_0P_1和P_1P_2 \\ \hline \end{array} Csf​=ω0​ω2​ω12​​Csf​曲线​0P0​P2​​(0,1)椭圆​1抛物线​(1,+∞)双曲线​→+∞P0​P1​和P1​P2​​​

NURBS曲线的修改

常用方法:修改权因子、修改控制点、反插节点

NURBS曲面

一般不会考的 注意这里权因子的下标变成了 ω i j \omega_{ij} ωij​

5.5 Coons曲面

Coons 曲面的定义

属于构造插值曲面的方法,用于构造通过给定型值点的曲面

基本概念: 假定参数曲面方程为 P ( u , v ) ( u , v ∈ [ 0 , 1 ] ) P(u,\,v)\,(u,\,v\in[0,\,1]) P(u,v)(u,v∈[0,1])

  • 曲面片的四条边界: P ( u , 0 ) P(u,\,0) P(u,0) , P ( u , 1 ) P(u,\,1) P(u,1) , P ( 0 , v ) P(0,\,v) P(0,v) , P ( 1 , v ) P(1,\,v) P(1,v)
  • 曲面片的四个角点: P ( 0 , 0 ) P(0,\,0) P(0,0) , P ( 0 , 1 ) P(0,\,1) P(0,1) , P ( 1 , 0 ) P(1,\,0) P(1,0) , P ( 1 , 1 ) P(1,\,1) P(1,1)

要解决的问题: 给定四条在空间中围成封闭曲边四边形的参数曲线 P ( u , 0 ) P(u,\,0) P(u,0) , P ( u , 1 ) P(u,\,1) P(u,1) , P ( 0 , v ) P(0,\,v) P(0,v) , P ( 1 , v ) P(1,\,v) P(1,v) ,构造一张参数曲面 P ( u , v ) ( u , v ∈ [ 0 , 1 ] ) P(u,\,v)\,(u,\,v\in[0,\,1]) P(u,v)(u,v∈[0,1])

方法: 双线性 Coons 曲面和双三次 Coons 曲面

双线性 Coons 曲面

这些内容都要记住,给出图形,写出双线性构造的算法;双三次计算量较大,不太可能会考

① 首先,在 u u u 向进行线性插值,得到以 P ( 0 , v ) P(0,\,v) P(0,v) 和 P ( 1 , v ) P(1,\,v) P(1,v) 为边界的直纹面(如图 (b) ):
P 1 ( u , v ) = ( 1 − u ) P ( 0 , v ) + u P ( 1 , v ) P_1(u,\,v)=(1-u)P(0,\,v)+uP(1,\,v) P1​(u,v)=(1−u)P(0,v)+uP(1,v)
② 接着,在 v v v 向进行线性插值,得到以 P ( u , 0 ) P(u,\,0) P(u,0) 和 P ( u , 1 ) P(u,\,1) P(u,1) 为边界的直纹面(如图 (a) ):
P 2 ( u , v ) = ( 1 − v ) P ( u , 0 ) + v P ( u , 1 ) P_2(u,\,v)=(1-v)P(u,\,0)+vP(u,\,1) P2​(u,v)=(1−v)P(u,0)+vP(u,1)
③ 再构造两条 v v v 向的连接端点的直线段:
( 1 − v ) P ( 0 , 0 ) + v P ( 0 , 1 ) ( 1 − v ) P ( 1 , 0 ) + v P ( 0 , 1 ) (1-v)P(0,\,0)+vP(0,\,1) \\ (1-v)P(1,\,0)+vP(0,\,1) (1−v)P(0,0)+vP(0,1)(1−v)P(1,0)+vP(0,1)
以这两条直线段为边界,构造直纹面 P 3 ( u , v ) P_3(u,\,v) P3​(u,v) :
P 3 ( u , v ) = ( 1 − u ) [ ( 1 − v ) P ( 0 , 0 ) + v P ( 0 , 0 ) ] + u [ ( 1 − v ) P ( 1 , 0 ) + v P ( 1 , 1 ) ] = [ 1 − u u ] [ P ( 0 , 0 ) P ( 0 , 1 ) P ( 1 , 0 ) P ( 1 , 1 ) ] [ 1 − v v ] u , v ∈ [ 0 , 1 ] P_3(u,\,v)=(1-u)[(1-v)P(0,\,0)+vP(0,\,0)]+u[(1-v)P(1,\,0)+vP(1,\,1)] \\= \begin{bmatrix} 1-u & u \end{bmatrix} \begin{bmatrix} P(0,0) & P(0,1) \\ P(1,0) & P(1,1) \end{bmatrix} \begin{bmatrix} 1-v \\ v \end{bmatrix} \quad\quad u,\,v\in[0,\,1] P3​(u,v)=(1−u)[(1−v)P(0,0)+vP(0,0)]+u[(1−v)P(1,0)+vP(1,1)]=[1−u​u​][P(0,0)P(1,0)​P(0,1)P(1,1)​][1−vv​]u,v∈[0,1]
④ P ( u , v ) = P 1 ( u , v ) + P 2 ( u , v ) − P 3 ( u , v ) P(u,\,v)=P_1(u,\,v)+P_2(u,\,v)-P_3(u,\,v) P(u,v)=P1​(u,v)+P2​(u,v)−P3​(u,v) 便是所要构造的面,矩阵形式为:
P ( u , v ) = − [ − 1 1 − u u ] [ 0 P ( u , 0 ) P ( u , 1 ) P ( 0 , v ) P ( 0 , 0 ) P ( 0 , 1 ) P ( 1 , v ) P ( 1 , 0 ) P ( 1 , 1 ) ] [ − 1 1 − v v ] u , v ∈ [ 0 , 1 ] P(u,\,v)= - \begin{bmatrix} -1 & 1-u & u \end{bmatrix} \begin{bmatrix} 0 & P(u,0) & P(u,1) \\ P(0,v) & P(0,0) & P(0,1) \\ P(1,v) & P(1,0) & P(1,1) \end{bmatrix} \begin{bmatrix} -1 \\ 1-v \\ v \end{bmatrix} \quad\quad u,\,v\in[0,\,1] P(u,v)=−[−1​1−u​u​]⎣ ⎡​0P(0,v)P(1,v)​P(u,0)P(0,0)P(1,0)​P(u,1)P(0,1)P(1,1)​⎦ ⎤​⎣ ⎡​−11−vv​⎦ ⎤​u,v∈[0,1]

双三次 Coons 曲面

建议直接背诵[流汗]

① 使用 Hermite 基函数 F 0 F_0 F0​ 、 F 1 F_1 F1​ 、 G 0 G_0 G0​ 和 G 1 G_1 G1​ 作为调和函数,构造 u u u 向和 v v v 向的曲面:
P 1 ( u , v ) = F 0 ( u ) P ( 0 , v ) + F 1 ( u ) P ( 1 , v ) + G 0 ( u ) P u ( 0 , v ) + G 1 ( u ) P u ( 1 , v ) P 2 ( u , v ) = F 0 ( v ) P ( u , 0 ) + F 1 ( v ) P ( u , 1 ) + G 0 ( v ) P v ( u , 0 ) + G 1 ( v ) P v ( u , 1 ) P_1(u,\,v)=F_0(u)P(0,\,v)+F_1(u)P(1,\,v)+G_0(u)P_u(0,\,v)+G_1(u)P_u(1,\,v) \\ P_2(u,\,v)=F_0(v)P(u,\,0)+F_1(v)P(u,\,1)+G_0(v)P_v(u,\,0)+G_1(v)P_v(u,\,1) \\ P1​(u,v)=F0​(u)P(0,v)+F1​(u)P(1,v)+G0​(u)Pu​(0,v)+G1​(u)Pu​(1,v)P2​(u,v)=F0​(v)P(u,0)+F1​(v)P(u,1)+G0​(v)Pv​(u,0)+G1​(v)Pv​(u,1)
P u P_u Pu​ 、 P v P_v Pv​ 指切矢量, u , v ∈ [ 0 , 1 ] u,\,v\in[0,\,1] u,v∈[0,1]

② 对角点的数据进行插值,可得曲面 P 3 ( u , v ) P_3(u,\,v) P3​(u,v) :( u , v ∈ [ 0 , 1 ] u,\,v\in[0,\,1] u,v∈[0,1] )
P 3 ( u , v ) = [ F 0 ( u ) F 1 ( u ) G 0 ( u ) G 1 ( u ) ] [ P ( 0 , 0 ) P ( 0 , 1 ) P v ( 0 , 0 ) P v ( 0 , 1 ) P ( 1 , 0 ) P ( 1 , 1 ) P v ( 1 , 0 ) P v ( 1 , 1 ) P u ( 0 , 0 ) P u ( 0 , 1 ) P u v ( 0 , 0 ) P u v ( 0 , 1 ) P u ( 1 , 0 ) P u ( 1 , 1 ) P u v ( 1 , 0 ) P u v ( 1 , 1 ) ] [ F 0 ( v ) F 1 ( v ) G 0 ( v ) G 1 ( v ) ] P_3(u,\,v)= \begin{bmatrix} F_0(u) & F_1(u) & G_0(u) & G_1(u) \end{bmatrix} \begin{bmatrix} P(0,0) & P(0,1) & P_v(0,0) & P_v(0,1) \\ P(1,0) & P(1,1) & P_v(1,0) & P_v(1,1) \\ P_u(0,0) & P_u(0,1) & P_{uv}(0,0) & P_{uv}(0,1) \\ P_u(1,0) & P_u(1,1) & P_{uv}(1,0) & P_{uv}(1,1) \\ \end{bmatrix} \begin{bmatrix} F_0(v) \\ F_1(v) \\ G_0(v) \\ G_1(v) \end{bmatrix} \quad\quad P3​(u,v)=[F0​(u)​F1​(u)​G0​(u)​G1​(u)​]⎣ ⎡​P(0,0)P(1,0)Pu​(0,0)Pu​(1,0)​P(0,1)P(1,1)Pu​(0,1)Pu​(1,1)​Pv​(0,0)Pv​(1,0)Puv​(0,0)Puv​(1,0)​Pv​(0,1)Pv​(1,1)Puv​(0,1)Puv​(1,1)​⎦ ⎤​⎣ ⎡​F0​(v)F1​(v)G0​(v)G1​(v)​⎦ ⎤​
③ P ( u , v ) = P 1 ( u , v ) + P 2 ( u , v ) − P 3 ( u , v ) P(u,\,v)=P_1(u,\,v)+P_2(u,\,v)-P_3(u,\,v) P(u,v)=P1​(u,v)+P2​(u,v)−P3​(u,v) 便是所要构造的面,矩阵形式为:( u , v ∈ [ 0 , 1 ] u,\,v\in[0,\,1] u,v∈[0,1] )
P ( u , v ) = − [ − 1 F 0 ( u ) F 1 ( u ) G 0 ( u ) G 1 ( u ) ] [ 0 P ( u , 0 ) P ( u , 1 ) P v ( u , 0 ) P v ( u , 1 ) P ( 0 , v ) P ( 0 , 0 ) P ( 0 , 1 ) P v ( 0 , 0 ) P v ( 0 , 1 ) P ( 1 , v ) P ( 1 , 0 ) P ( 1 , 1 ) P v ( 1 , 0 ) P v ( 1 , 1 ) P u ( 0 , v ) P u ( 0 , 0 ) P u ( 0 , 1 ) P u v ( 0 , 0 ) P u v ( 0 , 1 ) P u ( 1 , v ) P u ( 1 , 0 ) P u ( 1 , 1 ) P u v ( 1 , 0 ) P u v ( 1 , 1 ) ] [ − 1 F 0 ( v ) F 1 ( v ) G 0 ( v ) G 1 ( v ) ] P(u,\,v)= - \begin{bmatrix} -1 & F_0(u) & F_1(u) & G_0(u) & G_1(u) \end{bmatrix} \begin{bmatrix} 0 & P(u,0) & P(u,1) & P_v(u,0) & P_v(u,1) \\ P(0,v) & P(0,0) & P(0,1) & P_v(0,0) & P_v(0,1) \\ P(1,v) & P(1,0) & P(1,1) & P_v(1,0) & P_v(1,1) \\ P_u(0,v) & P_u(0,0) & P_u(0,1) & P_{uv}(0,0) & P_{uv}(0,1) \\ P_u(1,v) & P_u(1,0) & P_u(1,1) & P_{uv}(1,0) & P_{uv}(1,1) \\ \end{bmatrix} \begin{bmatrix} -1 \\ F_0(v) \\ F_1(v) \\ G_0(v) \\ G_1(v) \end{bmatrix} \quad\quad P(u,v)=−[−1​F0​(u)​F1​(u)​G0​(u)​G1​(u)​]⎣ ⎡​0P(0,v)P(1,v)Pu​(0,v)Pu​(1,v)​P(u,0)P(0,0)P(1,0)Pu​(0,0)Pu​(1,0)​P(u,1)P(0,1)P(1,1)Pu​(0,1)Pu​(1,1)​Pv​(u,0)Pv​(0,0)Pv​(1,0)Puv​(0,0)Puv​(1,0)​Pv​(u,1)Pv​(0,1)Pv​(1,1)Puv​(0,1)Puv​(1,1)​⎦ ⎤​⎣ ⎡​−1F0​(v)F1​(v)G0​(v)G1​(v)​⎦ ⎤​

计算机图形学 第五章 曲线与曲面(下)相关推荐

  1. 计算机图形学 第六章 曲线曲面建模技术

    文章目录 1 参数方程 2 参数曲线的一般形式 3 张量积形式的参数曲面 4 连续性的定义 参数连续性Ck 5 插值.逼近和拟合 6 Bernstein多项式 7 Bezier曲线及曲面,构造方法和性 ...

  2. 11、计算机图形学——几何(贝塞尔曲线与曲面)

    一.贝塞尔曲线 1.1.简介 下图中蓝色的线就是贝塞尔曲线,每条贝塞尔曲线都有控制点(下图中有四个),贝塞尔曲线必须经过第1个和最后一个控制点,并且需要和第起止控制点相切 1.2.如何得到贝塞尔曲线 ...

  3. 计算机图形学三维变换论文,计算机图形学 第5章 三维图形生成和变换技术

    计算机图形学 第5章 三维图形生成和变换技术 (63页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 第五章 目录第五章 三维图形生成和变 ...

  4. 【XJTUSE计算机图形学】第一章 绪论

    禁止转载 文章目录 [XJTUSE计算机图形学]第一章 绪论 1.1 研究内容 1.图形系统的主要任务 2.计算机图形学的研究对象 3.图形的要素[填空题] 4.图形图像表示法 5.图形研究例子 6. ...

  5. 第三章 计算机图形处理,计算机图形学第三章-1(Basic).ppt

    <计算机图形学第三章-1(Basic).ppt>由会员分享,可在线阅读,更多相关<计算机图形学第三章-1(Basic).ppt(28页珍藏版)>请在人人文库网上搜索. 1.清华 ...

  6. 【CAD算法】【计算机图形学】Bezier贝塞尔曲线生成程序(python/numpy实现)[1]

    整个项目,从Bezier曲线的创建,到Coons Patch曲面的实现,再到网格的实现和优化,还有最后对表面的光顺,链接如下: [CAD算法][计算机图形学]Bezier贝塞尔曲线生成程序(pytho ...

  7. 计算机图形学 第四章 光栅图形学

    第四章 光栅图形学 计算机图形学 第四章 光栅图形学的相关内容,包括:直线段的扫描转换算法.圆弧的扫描转换算法.多边形区域填充.字符的生成.裁剪.反走样 等 Def 光栅显示器:一个像素矩阵(因此,要 ...

  8. (计算机组成原理)第五章中央处理器-第五节2:指令流水线影响因素和分类及多发技术

    文章目录 一:影响指令流水线的因素 (1)结构相关(资源冲突) (2)数据相关(数据冲突) (3)控制相关(控制冲突) 二:流水线的分类 (1)根据流水线使用的级别不同分类 (2)根据流水线可以完成的 ...

  9. (计算机组成原理)第五章中央处理器-第四节4:微程序控制单元设计

    文章目录 一:微程序控制单元设计步骤 第一步:分析每个阶段的微操作序列 第二步:写出对应机器指令的微操作命令及节拍安排 第三步:确定微指令格式 第四步:编写微指令码点 二:微程序设计分类 (1)静态微 ...

最新文章

  1. 虚拟化系列-VMware vSphere 5.1 高可用性
  2. Matlab图形用户界面编程初级入门
  3. 数据结构:线段树及ST算法比较
  4. C#调用ATL COM
  5. finally块_如何从finally块访问方法的结果值
  6. python 编写简单网页服务器
  7. Stackoverflow 年度报告 2020:开发者最喜爱的数据库是什么?
  8. System verilog随机系统函数$random使用方法
  9. 在线mod计算机,计算机系中有关mod的常识(全).doc
  10. 【待续】C数据结构2.3-顺序表之插入算法
  11. 小白用python处理excel文件-Python读、写Excel文件(三种模块三种方式,小白也可学会)...
  12. ENVI入门系列教程---一、数据预处理---1.1基本操作--5.x以后的界面(新界面)
  13. 为什么恍然大悟与知识管理的几个感触:人艰不拆
  14. 示波器的 带宽 采样率 存储深度
  15. 数据分析 第二章 1.数据清洗及特征处理
  16. 35个非常出彩的 Flash 网站作品欣赏
  17. 你居然不会狄杰斯特算法?惊了!
  18. c语言中%s的作用,C语言中%c,%s分别代表什么意思?
  19. 关于时钟周期、状态周期、机器周期、指令周期的解释_普中_89C52单片机
  20. Python学习手册 - 基础知识汇总(精简版)

热门文章

  1. 疫情环境下,技术团队居家办公实践
  2. springboot返回,修改http状态码
  3. wxPython Image PIL Image 之间的转换方法
  4. linux命令-cp命令
  5. 搭建kali和win xp靶机实验环境
  6. java lftp_lftp使用详解
  7. dota补兵特训 日常打卡
  8. gradle介绍,简单易学
  9. windows10远程登陆切换用户
  10. Spring系列学习之Spring Data R2DBC数据访问