大连理工大学选修课——图形学:第七章 曲线和曲面
第七章 曲线和曲面
基本概念
曲线曲面的表示
参数法表示
p = p ( t ) t ∈ [ 0 , 1 ] p=p(t)\quad t\in[0,1] p=p(t)t∈[0,1]
参数法优点
-
点动成线
-
总是能够选取那些具有几何不变性的参数曲线曲面表示形式
-
用对参数求导来代替斜率,避免无穷大斜率
-
t∈[0,1] ,使其相应的几何分量是有界的
-
可对参数方程直接进行仿射和投影变换
-
参数变化对各因变量的影响可以明显地表示出来
插值与逼近
采用模线样板法表示和传递自由曲线曲面的形状称为样条
样条曲线是指由多项式曲线段连接而成的曲线,在每段的边界处满足特定的连续条件
样条曲面则可以用两组正交样条曲线来描述
曲线曲面的拟合:用一组型值点来指定曲线曲面的形状时,形状完全通过给定的型值点列。
曲线曲面的逼近:当用一组控制点来指定曲线曲面的形状时,求出的形状不必通过所有控制点
插值:求给定型值点之间曲线上的点
将连接有一定次序控制点的直线序列称为控制多边形或特征多边形
假定参数曲线段 p i p_i pi以参数形式进行描述:
p i = p i ( t ) t ∈ [ t i 0 , t i 1 ] p_i=p_i(t)\quad t\in[t_{i0},t_{i1}] pi=pi(t)t∈[ti0,ti1]
参数连续性:
0阶参数连续性,记作 C 0 C_0 C0连续性,指的是曲线的几何位置连接:
p i ( t i 1 ) = p i + 1 t ( i + 1 ) 0 p_i(t_{i1})=p_{i+1}t_{(i+1)0} pi(ti1)=pi+1t(i+1)0
一阶参数连续性:记作 C 1 C_1 C1连续性,代表两个相邻曲线段的方程在相交点有相同的一阶导数:
p i ( t i 1 ) = p i + 1 ( t ( i + 1 ) 0 ) A N D p i ′ ( t i 1 ) = p i + 1 ′ ( t ( i + 1 ) 0 ) p_i(t_{i1})=p_{i+1}(t_{(i+1)0})\quad AND\\ p_i'(t_{i1})=p_{i+1}'(t_{(i+1)0}) pi(ti1)=pi+1(t(i+1)0)ANDpi′(ti1)=pi+1′(t(i+1)0)
2阶参数连续性,记作 C 2 C_2 C2连续性,指两个相邻曲线段的方程在相交点处具有相同的一阶和二阶导数。
几何连续性
0阶几何连续性:记作G0连续性,与0阶参数连续性的定义相同。
1阶几何连续性,记作G1连续性,指一阶导数在相邻段的交点处成比例。
2阶几何连续性,记作G2连续性,指相邻曲线段在交点处其一阶和二阶导数均成比例。
n次样条参数多项式曲线的矩阵
p ( t ) = [ x ( t ) y ( t ) z ( t ) ] = [ t n ⋯ t ] ⋅ [ a n b n c n ⋯ ⋯ ⋯ a 1 b 1 c 1 a 0 b 0 c 0 ] = T ⋅ C = T ⋅ M s ⋅ G t ∈ [ 0 , 1 ] p(t)= \begin{bmatrix} x(t)\\ y(t)\\ z(t)\\ \end{bmatrix}= [t^n\quad\cdots\quad t\quad]\cdot \begin{bmatrix} a_n & b_n & c_n\\ \cdots & \cdots & \cdots\\ a_1 & b_1 & c_1\\ a_0 & b_0 & c_0 \end{bmatrix}\\ =T\cdot C=T\cdot M_s\cdot G\quad t\in[0,1] p(t)= x(t)y(t)z(t) =[tn⋯t]⋅ an⋯a1a0bn⋯b1b0cn⋯c1c0 =T⋅C=T⋅Ms⋅Gt∈[0,1]
三次样条
定义:假定型值点 P k P_k Pk和 P k + 1 P_{k+1} Pk+1之间的曲线段为 p ( t ) p(t) p(t), t ∈ [ 0 , 1 ] t∈[0,1] t∈[0,1],给定矢量 P k P_k Pk、 P k + 1 P_{k+1} Pk+1、 R k R_k Rk和 R k + 1 R_{k+1} Rk+1,则满足下列条件的三次参数曲线为三次Hermite样条曲线。
p ( t ) = [ t 3 t 2 t 1 ] ⋅ [ a x a y a z b x b y b z c x c y c z d x d y d z ] = [ t 3 t 2 t 1 ] [ a b c d ] = T ⋅ C p(t)=[t^3\quad t^2\quad t\quad 1]\cdot \begin{bmatrix} a_x\quad a_y\quad a_z\\ b_x\quad b_y\quad b_z\\ c_x\quad c_y\quad c_z\\ d_x\quad d_y\quad d_z\\ \end{bmatrix}\\ =[t^3\quad t^2\quad t\quad 1] \begin{bmatrix} a\\ b\\ c\\ d\\ \end{bmatrix}= T\cdot C p(t)=[t3t2t1]⋅ axayazbxbybzcxcyczdxdydz =[t3t2t1] abcd =T⋅C
其中:
C = [ 2 − 2 1 1 − 3 3 − 2 − 1 0 0 1 0 1 0 0 0 ] ⋅ [ P k P k − 1 R k R k + 1 ] = M h ⋅ G h C= \begin{bmatrix} 2 & -2 & 1 & 1\\ -3 & 3 & -2 & -1\\ 0 & 0 & 1 & 0\\ 1 & 0 & 0 & 0 \end{bmatrix}\cdot \begin{bmatrix} P_k\\ P_{k-1}\\ R_k\\ R_{k+1}\\ \end{bmatrix}= M_h\cdot G_h C= 2−301−23001−2101−100 ⋅ PkPk−1RkRk+1 =Mh⋅Gh
Mh是Hermite矩阵
Gh是Hermite几何矢量
三次Hermite样条曲线的方程为:
T ⋅ M h T\cdot M_h T⋅Mh
通常将 T ⋅ M k T\cdot M_k T⋅Mk称为Hermite基函数或称为混合函数,调和函数
Bezier曲线曲面
定义: p ( t ) = ∑ p k B E N k , n t ∈ [ 0 , 1 ] p(t)=\sum p_kBEN_{k,n}\quad t\in[0,1] p(t)=∑pkBENk,nt∈[0,1]
Bernstein基函数具有如下形式:
B E N k , n ( t ) = n ! k ! ( n − k ) ! t k ( 1 − t ) n − k = C n k t k ( 1 − t ) n − k , k = 0 , 1 , ⋯ , n BEN_{k,n}(t)=\frac{n!}{k!(n-k)!}t^k(1-t)^{n-k}=C_n^kt^k(1-t)^{n-k},k=0,1,\cdots, n BENk,n(t)=k!(n−k)!n!tk(1−t)n−k=Cnktk(1−t)n−k,k=0,1,⋯,n
一次Bezier曲线(n=1)
p ( t ) = ∑ K = 0 1 P k B E N k , 1 ( t ) = ( 1 − t ) P 0 + t P 1 t ∈ [ 0 , 1 ] p(t)=\sum_{K=0}^1 P_kBEN_{k,1}(t)=(1-t)P_0+tP_1\quad t\in[0,1] p(t)=K=0∑1PkBENk,1(t)=(1−t)P0+tP1t∈[0,1]
二次Bezier曲线(n=2)
p ( t ) = ∑ K = 0 2 P k B E N k , n ( t ) = ( 1 − t ) 2 P 0 + 2 t ( 1 − t ) P 1 + t 2 P 2 = ( P 2 − 2 P 1 + P 0 ) t 2 + 2 ( P 1 − P 0 ) + P 0 t ∈ [ 0 , 1 ] p(t)=\sum_{K=0}^2 P_kBEN_{k,n}(t)=(1-t)^2P_0+2t(1-t)P_1+t^2P_2\\ =(P_2-2P_1+P_0)t^2+2(P_1-P_0)+P_0\quad t\in[0,1] p(t)=K=0∑2PkBENk,n(t)=(1−t)2P0+2t(1−t)P1+t2P2=(P2−2P1+P0)t2+2(P1−P0)+P0t∈[0,1]
三次Bezier曲线(n=3)
p ( t ) = ∑ K = 0 3 P k B E N k , n ( t ) = ( 1 − t ) 3 P 0 + 3 t ( 1 − t ) 2 P 1 + 3 t 2 ( 1 − t ) P 2 + t 3 P 3 \begin{align} p(t)=&\sum_{K=0}^3P_kBEN_{k,n}(t)\\ =&(1-t)^3P_0+3t(1-t)^2P_1+3t^2(1-t)P_2+t^3P_3\\ \end{align} p(t)==K=0∑3PkBENk,n(t)(1−t)3P0+3t(1−t)2P1+3t2(1−t)P2+t3P3
Bezier曲线的性质
端点
p ( 0 ) = ∑ K = 0 n P k B E N k , n ( 0 ) = P 0 p ( 1 ) = ∑ k = 0 n P k B E N k , n ( 1 ) = P n \begin{align} p(0)=&\sum_{K=0}^nP_kBEN_{k,n}(0)\\ =&P_0\\ p(1)=&\sum_{k=0}^nP_kBEN_{k,n}(1)\\ =&P_n \end{align} p(0)==p(1)==K=0∑nPkBENk,n(0)P0k=0∑nPkBENk,n(1)Pn
一阶导数
B E N ’ k , n ( t ) = n ( B E N k − 1 , n − 1 ( t ) − B E N k , n − 1 ( t ) ) p ′ ( t ) = n ∑ ( P k − P k − 1 ) B E N k − 1 , n − 1 ( t ) p ′ ( 0 ) = n ( P 1 − P 0 ) p ′ ( 1 ) = n ( P n − P n 1 ) BEN’_{k,n}(t)=n(BEN_{k-1,n-1}(t)-BEN_{k,n-1}(t))\\ p'(t)=n\sum(P_k-P_{k-1})BEN_{k-1,n-1}(t)\\ p'(0)=n(P_1-P_0)\\ p'(1)=n(P_n-P_{n1}) BEN’k,n(t)=n(BENk−1,n−1(t)−BENk,n−1(t))p′(t)=n∑(Pk−Pk−1)BENk−1,n−1(t)p′(0)=n(P1−P0)p′(1)=n(Pn−Pn1)
二阶导数
p ′ ′ ( 0 ) = n ( n − 1 ) ( ( P 2 − P 1 ) − ( P 1 − P 0 ) ) p ′ ′ ( 1 ) = n ( n − 1 ) ( ( P n − 2 − P n − 1 ) − ( P n − 1 − P n ) ) p''(0)=n(n-1)((P_2-P_1)-(P_1-P_0))\\ p''(1)=n(n-1)((P_{n-2}-P_{n-1})-(P_{n-1}-P_n)) p′′(0)=n(n−1)((P2−P1)−(P1−P0))p′′(1)=n(n−1)((Pn−2−Pn−1)−(Pn−1−Pn))
Bezier曲线在起始点和终止点处的二阶导数分别取决于最开始和最后的三个控制点
对称性
保持控制多边形的顶点位置不变,仅仅把顺序颠倒以下
将下标为k的控制点Pk改为下标为n-k的控制点Pn-k时,曲线保持不变,走向相反
凸包性
Bezier曲线各点均落在控制多边形各顶点构成的凸包之中
Bezier曲线的凸包性保证了曲线随控制点平稳前进而不会振荡
几何不变性
指几何特性不随坐标变换而变化
Beizer曲线的位置和形状仅与特征多边形的顶点的位置有关,不依赖与坐标系的选择
差变减少性
若Beizer曲线C(t)的特征多边形是一个平面图形,则平面内的任意直线与C(t)的交点个数不多于该直线与其特征多边形的交点个数
即Bezer曲线比其特征多边所在的折线更光滑
绘制一段Bezier曲线
x ( t ) = ∑ x k B E N k , n ( t ) y ( t ) = ∑ y k B E N k , n ( t ) t ∈ [ 0 , 1 ] z ( t ) = ∑ z k B E N k , n ( t ) \begin{align} x(t)=&\sum x_kBEN_{k,n}(t)\\ y(t)=&\sum y_kBEN_{k,n}(t)\quad t\in[0,1]\\ z(t)=&\sum z_kBEN_{k,n}(t) \end{align} x(t)=y(t)=z(t)=∑xkBENk,n(t)∑ykBENk,n(t)t∈[0,1]∑zkBENk,n(t)
Bezier曲线的生成
Bezier曲线的拼接:如何保证连接处具有G1和G2连续性
在两段三次Bezier曲线间得到G1连续性
p 1 ′ ( 1 ) = 3 ( P 3 − P 2 ) p 2 ′ ( 0 ) = 3 ( Q 1 − Q 2 ) p_1'(1)=3(P_3-P_2)\\ p_2'(0)=3(Q_1-Q_2) p1′(1)=3(P3−P2)p2′(0)=3(Q1−Q2)
为实现G1连续,则有:
p 2 ′ ( 0 ) = α ⋅ p 1 ′ ( 1 ) Q 1 − Q 0 = α ⋅ ( P 3 − P 2 ) p_2'(0)=\alpha\cdot p_1'(1)\\ Q_1-Q_0=\alpha\cdot(P_3-P_2) p2′(0)=α⋅p1′(1)Q1−Q0=α⋅(P3−P2)
在两段三次Bezier曲线间得到G2连续性:
p 2 ′ ′ ( 0 ) = β ⋅ 1 ′ ′ ( 1 ) ( Q 0 − 2 Q 1 + Q 2 ) = β ⋅ ( P 1 − 2 P 2 + P 3 ) p_2''(0)=\beta\cdotp_1''(1)\\ (Q_0-2Q_1+Q_2)=\beta\cdot(P_1-2P_2+P_3) p2′′(0)=β⋅1′′(1)(Q0−2Q1+Q2)=β⋅(P1−2P2+P3)
定义:
B E N i , m ( u ) 与 B E N j , n ( v ) BEN_{i,m}(u)与BEN_{j,n}(v) BENi,m(u)与BENj,n(v)是Bernstein基函数
双三次Bezier曲面( m = n = 3 ) m=n=3) m=n=3)
Bezier曲面的性质
- 控制网格的四个角点正好是Bezier曲面的四个角点
- 控制网格最外一圈顶点定义Bezier曲面的四条边界,这四条边界均为Bezier曲线
- 几何不变性、对称性、凸包性等