【XJTUSE计算机图形学】第三章 几何造型技术(2)——Bezier 曲线与曲面

Bezier 曲线与曲面

起源

由于几何外形设计的要求越来越高,传统的曲线曲面表示方法, 已不能满足用户的需求;

1962年,P.E.Bezier构造了一种以逼近为基础的参数曲线和曲面的设计方法,并用这种方法完成了UNISURF系统(1972年投入了应用);

Bezier方法将函数逼近同几何表示结合起来,使得设计师在计算机上就象使用作图工具一样得心应手。

优点

输入的控制点与生成曲线之间的关系明确;

能方便地改变曲线的形状和阶次;

无论是直线或曲线都能在数学上予以描述 (为计算机矢量图形学奠定了基础 )。

应用领域

1️⃣ 计算机辅助设计与制造(CAD/CAM)

飞机、汽车、船舶外形的设计;

水泵叶轮和齿轮等机械零件的设计。

2️⃣ 桥梁建筑物以及日用品的设计

3️⃣ 曲线字形轮廓描述

4️⃣ 地图图形管理系统

5️⃣ 移动机器人运动规划

处于A点,需要达到D点;

AD之间有障碍物;

运动往往是沿着曲线进行的。

Bezier 曲线的定义与性质

定义

给定空间n+1个点的位置矢量Pii=0,1,2,…,n),则Bezier参数曲线上各点坐标的插值公式是:

image-20220213161512575

P i P_i Pi构成该Bezier曲线的特征多边形

B i , n ( t ) B_{i,n}(t) Bi,n(t)是n次Bernstein基函数

举例image-20220213161916870

习题

1️⃣ 设有控制顶点为P0(0,0),P1(48,96),P2(120,120),P3(216,72)的三次Bézier曲线P(t),试计算P(0,4)的(x,y)坐标,并写出(x(t),y(t))的多项式表示。

image-20220213163220219

2️⃣ 设一条三次Bézier曲线的控制顶点为P0,P1,P2,P3。对曲线上一点P(0.5),及一个给定的目标点T,给出一种调整Bézier曲线形状的方法,使得P(0.5)精确通过点T。

image-20220213164204503

Bernstein基函数性质

1️⃣ 正性

image-20220213164640737

2️⃣ 端点性质

image-20220213164907949

3️⃣ 权性

image-20220213164931020

4️⃣ 对称性

image-20220213165000146

推导

image-20220213165014714

image-20220213165119631

5️⃣ 递推性

image-20220213165158514

推导

image-20220213165215822

即高一次的Bernstein基函数可由两个低一次Bernstein基函数线性组合而成。>

6️⃣ 导函数

image-20220213165313812

推导

image-20220213165332468

7️⃣ 最大值

image-20220213165343864

8️⃣ 积分

image-20220213165354560

9️⃣ 升阶公式

image-20220213165404786

Bezier曲线的性质

1️⃣ 端点性质

曲线端点位置矢量

由Bernstein基函数的端点性质可以推得,当t=0时, P ( 0 ) = P 0 P(0)=P_0 P(0)=P0 ;当t=1时, P ( 1 ) = P n P(1)=P_n P(1)=Pn。由此可见,Bezier曲线的起点、终点与相应的特征多边形的起点、终点重合

切矢量

因为image-20220213165707531 所以当t=0时, P ’ ( 0 ) = n ( P 1 − P 0 ) P’(0)=n(P_1-P_0) P(0)=n(P1P0),当t=1时, P ’ ( 1 ) = n ( P n − P n − 1 ) P’(1)=n(P_n-P_{n-1}) P(1)=n(PnPn1),Bezier曲线的起点和终点处的切线方向和特征多边形的第一条边及最后一条边的走向一致

二阶导矢

image-20220213170004104

2阶导矢只与相邻的3个顶点有关,事实上,r阶导矢只与(r+1)个相邻点有关,与更远点无关

2️⃣ k阶导函数的差分表示

n次Bezier曲线的k阶导数可用差分公式为:

image-20220213170205275

其中高阶向前差分矢量由低阶向前差分矢量递推地定义:

image-20220213170212572

例如

image-20220213170225825

题目

试证明n次Bezier曲线退化为(n-1)次Bezier曲线的条件为 Δ 0 P 0 = 0 \Delta ^0 P_0=0 Δ0P0=0

image-20220213171428110

3️⃣ 对称性

由控制顶点 P i ∗ = P n − i , ( i = 0 , 1 , . . . , n ) P_i^*=P_{n-i},(i=0,1,...,n) Pi=Pni,(i=0,1,...,n)构造出的新Bezier曲线,与原Bezier曲线形状相同,走向相反。因为:

image-20220213173655651这个性质说明Bezier曲线在起点处有什么几何性质,在终点处也有相同的性质。

4️⃣ 凸包性

由于 ∑ n i = 0 B i , n ( t ) ≡ 0 \underset{i=0}{\overset{n}{\sum}}B_{i,n}(t)\equiv 0 i=0nBi,n(t)0,且 0 ≤ B i , n ( t ) ≤ 1 ( 0 ≤ t ≤ 1 , i = 0 , 1 , . . . , n ) 0\le B_{i,n}(t)\le 1(0\le t \le 1,i=0,1,...,n) 0Bi,n(t)1(0t1,i=0,1,...,n),这一结果说明当t在[0,1]区间变化时,对某一个t值,*P(t)*是特征多边形各顶点的加权平均,权因子依次是 B i , n ( t ) B_{i,n}(t) Bi,n(t)

在几何图形上,意味着Bezier曲线P(t) t ∈ [ 0 , 1 ] t\in [0,1] t[0,1]中各点是控制点Pi的凸线性组合,即曲线落在Pi构成的凸包之中 。

5️⃣ 几何不变性

某些几何特性不随坐标变换而变化的特性;

Bezier曲线位置与形状与其特征多边形顶点 P i ( i = 0 , 1 , . . . , n ) P_i(i=0,1,...,n) Pi(i=0,1,...,n) 的位置有关:

image-20220213174351235

6️⃣ 变差缩减性(考点)

若Bezier曲线的特征多边形 P 0 P 1 . . . P n P_0P_1...P_n P0P1...Pn 是一个平面图形,则平面内任意直线与P(t)的交点个数不多于该直线与其特征多边形的交点个数;

反映了Bezier曲线比其特征多边形的波动还小

7️⃣ 仿射不变性

对于任意的仿射变换A

即在仿射变换下, 的形式不变。

矩阵表示形式

image-20220213174912045

Bezier曲线的递推算法

算法原理

de Casteljau(德卡斯特里奥)递推算法

便于计算Bezier曲线上的点

在这里插入图片描述

如图所示,设 P 0 、 P 0 2 、 P 2 P_0、P_0^2、P_2 P0P02P2是一条抛物线上顺序三个不同的点。过 P 0 P_0 P0 P 2 P_2 P2点的两切线交于 P 1 P_1 P1点,在 P 0 2 P_0^2 P02点的切线交 P 0 P 1 P_0P_1 P0P1 P 2 P 1 P_2P_1 P2P1 P 0 1 P_0^1 P01 P 1 1 P_1^1 P11,则如下比例成立:

image-20220213175528804

证明过程

P 0 P_0 P0 P 2 P_2 P2固定,引入参数t,令上述比值为t:(1-t),即有:

image-20220213181349195

t从0变到1,第(1)、(2)式就分别表示控制二边形的第一、二条边,它们是两条一次Bezier曲线。

将(1)、(2)式代入第(3)式得

image-20220213181419189

t从0变到1时,它表示了由三顶点P0、P1、P2三点定义的一条二次Bezier曲线;

这二次Bezier曲线可以定义为分别由前两个顶点(P0,P1)和后两个顶点(P1,P2)决定的一次Bezier曲线的线性组合。

依次类推,由四个控制点定义的三次Bezier曲线 可被定义为分别由(P0,P1,P2)和(P1,P2,P3)确定的两条二次Bezier曲线的线性组合

由(n+1)个控制点 P i ( i = 0 , 1 , . . . , n ) P_i(i=0,1,...,n) Pi(i=0,1,...,n)定义的n次Bezier曲线 P 0 n P_0^n P0n可被定义为分别由前、后n个控制点定义的两条(n-1)次Bezier曲线 P 0 n − 1 P_0^{n-1} P0n1 P 1 n − 1 P_1^{n-1} P1n1的线性组合

image-20220213181809957

由此得到Bezier曲线的递推计算公式:

image-20220213181839981

在给定参数下,求Bezier曲线上一点P(t)非常有效。

上式中: P i 0 = P i P_i^0=P_i Pi0=Pi是定义Bezier曲线的控制点, P 0 n P_0^n P0n即为曲线P(t)上具有参数t的点。

算法稳定可靠,直观简便,可以编出十分简捷的程序,是计算Bezier曲线的基本算法和标准算法。

n=3时,算法递推出的 P i k P_i^k Pik呈直角三角形,对应结果如图所示。从左向右递推,最右边点 P 0 3 P_0^3 P03即为曲线上的点。

image-20220213182222210
习题举例

1️⃣ 已知三次Bezier曲线上的4个点分别为Q0(50,0), Q1(100,0), Q2(0,50), Q3(0,100),它们对应的参数分别为0,1/3, 2/3,1,求Bezier曲线的控制顶点。[了解一下]

image-202202131826192932️⃣ 计算以(30,0),(60,10),(80,30),(90,60),(90,90)为控制顶点的4次Bezier曲线在t=1/2处的值,并画出de Casteljau三角形

image-20220213183117515

3️⃣ 给出三次Bezier曲线退化为二次Bezier,控制顶点P0,P1,P2,P3应该满足的条件。

image-20220213183848289

4️⃣ 设一条二次Bezier曲线的控制顶点为P0,P1,P2,另一条二次Bezier曲线的控制顶点为Q0,Q1,Q2, P2 =Q0.写出两条曲线可以精确合并(表示)为一条二次Bezier曲线的条件。

image-20220213190309738

Bezier曲线的拼接(了解)

几何设计中,一条Bezier曲线往往难以描述复杂的曲线形状。

增加特征多边形的顶点数,会引起Bezier曲线次数的提高,而高次多项式又会带来计算上的困难;

可采用分段设计,然后将各段曲线相互连接起来,并在接合处保持一定的连续条件。

两段Bezier曲线达到不同阶几何连续的条件

image-20220213195628738

•给定两条Bezier曲线P(t)和Q(t),相应控制点为Pi(i=0,1,…,n)和Qj(*j=*0,1,…, m),且令 a i = P i − P i − 1 , b j = Q j − Q j − 1 a_i=P_i-P_{i-1},b_j=Q_j-Q_{j-1} ai=PiPi1,bj=QjQj1,如图所示,我们现在把两条曲线连接起来。

1️⃣ 达到 G 0 G^0 G0连续的充要条件是: P n = Q 0 P_n=Q_0 Pn=Q0

2️⃣ 达到 G 1 G^1 G1连续的充要条件是: P n − 1 , P n = Q 0 , Q 1 P_{n-1},P_n=Q_0,Q_1 Pn1,Pn=Q0,Q1三点共线,即: b 1 = α a n ( α > 0 ) b_1=\alpha a_n(\alpha>0) b1=αan(α>0)

3️⃣ 达到 G 2 G^2 G2连续的充要条件是: G 1 G^1 G1在连续的条件下,并满足方程

image-20220213200121585

image-20220213200149637

选择 α \alpha α β \beta β的值,可以利用该式确定曲线段 Q ( t ) Q(t) Q(t)的特征多边形顶点 Q 2 Q_2 Q2

顶点 Q 0 Q_0 Q0 Q 1 Q_1 Q1已被 G 1 G^1 G1连续条件所确定,要达到 G 2 G^2 G2连续的话,只剩下顶点 Q 2 Q_2 Q2可以自由选取;

如果上式的两边都减去 P n P_n Pn,则等式右边可以表示为 ( P n − P n − 1 ) (P_n-P_{n-1}) (PnPn1) ( P n − 1 − P n − 2 ) (P_{n-1}-P_{n-2}) (Pn1Pn2) 的线性组合:

image-20220213200456320

这表明 P n − 2 、 P n − 1 、 P n = Q 0 、 Q 1 和 Q 2 P_{n-2}、P_{n-1}、P_n=Q_0、Q_1和Q_2 Pn2Pn1Pn=Q0Q1Q2 五点共面

Bezier曲线的升阶与降阶

Bezier曲线的升阶
定义

升阶保持Bezier曲线的形状与方向不变,增加定义它的控制顶点数,提高该Bezier曲线的次数。

增加了控制顶点数,增加了对曲线进行形状控制的灵活性,还在构造曲面方面有着重要的应用:

对于由曲线生成曲面的算法,要求那些曲线必须是同次的。

应用升阶的方法,可以把低于最高次数的的曲线提升到最高次数,而获得相同的次数。

新控制顶点的计算

设给定原始控制顶点 P 0 , P 1 , . . . , P n P_0,P_1,...,P_n P0,P1,...,Pn,定义了一条n次Bezier曲线:

image-20220213200936277

增加一个顶点后,仍定义同一条曲线的新控制顶点为 P 0 ∗ , P 1 ∗ , . . . , P n + 1 ∗ P_0^*,P_1^*,...,P_{n+1}^* P0,P1,...,Pn+1,则有

image-20220213201047222

对上式左边乘以(t+(1-t)),得到

image-20220213201110375

比较等式两边 t i ( 1 − t ) n + 1 − i t_i(1-t)^{n+1-i} ti(1t)n+1i项的系数,得到

image-20220213201157729

image-20220213201202957

其中 P − 1 = P n + 1 = ( 0 , 0 ) P_{-1}=P_{n+1}=(0,0) P1=Pn+1=(0,0)

上述结果说明:

新的控制顶点 P i ∗ P_i^* Pi是以参数值 i n + 1 \frac{i}{n+1} n+1i按分段线性插值从原始特征多边形得出的

升阶后的新的特征多边形在原始特征多边形的凸包内

特征多边形更靠近曲线。

题目

推导Beizer曲线的升阶公式;给定三次Bezier曲线的控制顶点(0,0), (0,100), (100,0), (100,100),计算升阶一次后的控制顶点。

image-20220213201927227

Bezier曲线的降阶

给定一条由原始控制顶点定义的n次Bezier曲线,要求找到一条由新控制顶点定义的n-1次Bezier曲线来逼近原始曲线。

新控制点的计算

–假定 P i P_i Pi是由 P i ∗ P_i^* Pi升阶得到,则由升阶公式有:

image-20220213202136239

从前述方程可以导出两个递推公式

image-20220213202223564

其中第一个递推公式在靠近P0处趋向生成较好的逼近,而第二个递推公式在靠近Pn处趋向生成较好的逼近

Bezier曲面(了解)

定义

P i j ( i = 0 , 1 , . . . , m ; j = 0 , 1 , . . . , n ) P_{ij}(i=0,1,...,m;j=0,1,...,n) Pij(i=0,1,...,m;j=0,1,...,n) ( m + 1 ) × ( n + 1 ) (m+1)\times (n+1) (m+1)×(n+1)个空间点列,则 m × n m\times n m×n次张量积形式的Bezier曲面定义为:

image-20220213203141710

其中 B i , m ( u ) , B j , n ( v ) B_{i,m}(u),B_{j,n}(v) Bi,m(u),Bj,n(v)是Bernstein基函数。

依次用线段连接点列 P i j ( i = 0 , 1 , . . . , m ; j = 0 , 1 , . . . , n ) P_{ij}(i=0,1,...,m;j=0,1,...,n) Pij(i=0,1,...,m;j=0,1,...,n)中相邻两点所形成的空间网格,称之为特征网格。

矩阵表示式是

image-20220213203322817

在一般实际应用中m,n 不大于4

性质

几何不变性。

对称性。

凸包性。

除变差缩减性质外,Bezier曲线的其它性质可推广到Bezier曲面:

曲面特征网格的四个角点正好是Bezier曲面的四个角点,即image-20220213203428766

曲面特征网格最外一圈顶点定义曲面的四条边界;

曲面的拼接

设两张m×n次Bezier曲面片

image-20220213203701325

分别由控制顶点Pij和Qij定义。

image-20220213204344724
递推算法

image-20220213204655145

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐