当前位置: 首页 > news >正文

大连理工大学选修课——图形学:第七章 曲线和曲面

第七章 曲线和曲面

基本概念

曲线曲面的表示

参数法表示

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) =[tnt] ana1a0bnb1b0cnc1c0 =TC=TMsGt[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 =TC

其中:

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= 2301230012101100 PkPk1RkRk+1 =MhGh

Mh是Hermite矩阵

Gh是Hermite几何矢量

三次Hermite样条曲线的方程为:

T ⋅ M h T\cdot M_h TMh

通常将 T ⋅ M k T\cdot M_k TMk称为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!(nk)!n!tk(1t)nk=Cnktk(1t)nk,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=01PkBENk,1(t)=(1t)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=02PkBENk,n(t)=(1t)2P0+2t(1t)P1+t2P2=(P22P1+P0)t2+2(P1P0)+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=03PkBENk,n(t)(1t)3P0+3t(1t)2P1+3t2(1t)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=0nPkBENk,n(0)P0k=0nPkBENk,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}) BENk,n(t)=n(BENk1,n1(t)BENk,n1(t))p(t)=n(PkPk1)BENk1,n1(t)p(0)=n(P1P0)p(1)=n(PnPn1)

二阶导数

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(n1)((P2P1)(P1P0))p′′(1)=n(n1)((Pn2Pn1)(Pn1Pn))

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(P3P2)p2(0)=3(Q1Q2)

为实现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)Q1Q0=α(P3P2)

在两段三次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)(Q02Q1+Q2)=β(P12P2+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曲线
  • 几何不变性、对称性、凸包性等

相关文章:

  • Go语言接口实现面对对象的三大特征
  • OpenHarmony平台驱动开发(二),CLOCK
  • JavaScript性能优化实战(9):图像与媒体资源优化
  • Java设计模式: 实战案例解析
  • 装饰模式(Decorator Pattern)
  • 注意力机制
  • 学习黑客 week1周测 复盘
  • QT | 常用控件
  • 洛谷 P1495:【模板】中国剩余定理(CRT)/ 曹冲养猪
  • 马小帅面试遇“灵魂拷问“
  • 【前端】【面试】在 Nuxt.js SSR/SSG 应用开发的 SEO 优化方面,你采取了哪些具体措施来提高页面在搜索引擎中的排名?
  • Ubuntu22.04及以上版本buildroot SIGSTKSZ 报错问题
  • Java大厂面试:Java技术栈中的核心知识点
  • Java并发编程-多线程基础(三)
  • 集成算法学习
  • 具身系列——比较3种vpg算法方式玩CartPole游戏(强化学习)
  • 【Unity】使用XLua进行热修复
  • Ray开源程序 是用于扩展 AI 和 Python 应用程序的统一框架。Ray 由一个核心分布式运行时和一组用于简化 ML 计算的 AI 库组成
  • 4电池_基于开关电容的均衡
  • 项目实战-25年美赛MCM/ICM-基于数学建模与数据可视化的动态系统模型
  • 2年就过气!ChatGPT催生的百万年薪岗位,大厂不愿意招了
  • 印度扩大对巴措施:封锁巴基斯坦名人账号、热门影像平台社媒
  • 抗战回望15︱《五月国耻纪念专号》:“不堪回首”
  • 视频公开课上线之后,北大成为多少人未曾谋面的母校?
  • 波兰斯基最新回忆录追述“二战”童年往事
  • 刘国中:毫不松懈巩固拓展脱贫攻坚成果,全力以赴抓好农业防灾减灾工作