计算机图形学 学习笔记(十):曲线曲面(二):Bezier 曲线与曲面

接上文 计算机图形学 学习笔记(九):曲线曲面(一):参数曲线、参数几何代数形式


7.5 Bezier 曲线背景及定义

Bezier 曲线背景

给定 n+1个数据点,p0 ( x0 , y0 ) … pn ( xn , yn ),生成一条曲线,使得该曲线与这些点所描述的形状相符。

如果要求曲线通过所有的数据点,则属于插值问题;如果只要曲线逼近这些数据点,则属于逼近问题。

逼近在计算机图形学中主要用来设计美观的或符合某些美学标准的曲线。为了解决这个问题,有必要找到一种用小的部分即曲线段构建曲线的方法,来满足设计标准。

基函数:

计算机图形学 学习笔记(十):曲线曲面(二):Bezier 曲线与曲面_第1张图片
计算机图形学 学习笔记(十):曲线曲面(二):Bezier 曲线与曲面_第2张图片

1962 年,贝塞尔(Bezier)构造了一种以逼近为基础的参数曲线和曲面的设计方法,并用这种方法完成了一种称为 unisurf 的曲线和曲面设计系统。

贝塞尔的想法是在进行汽车外形设计时,先用折线段勾画出汽车的外形的大致轮廓,然后用光滑的参数曲线去逼近这个折线多边形。

这里写图片描述

这个折线多边形被称为特征多边形。逼近该特征多边形的曲线被称为 Bezier 曲线。

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

贝塞尔曲线广泛地应用于很多图形图像软件中,例如 Flash、Illstrator、CoralDRAW和 Photoshop 等等。

贝塞尔把参数n次曲线表示为:

计算机图形学 学习笔记(十):曲线曲面(二):Bezier 曲线与曲面_第3张图片
计算机图形学 学习笔记(十):曲线曲面(二):Bezier 曲线与曲面_第4张图片

1972 年,剑桥大学的博士生 Forrest 证明了 Bezier 曲线的基函数可以简化成 伯恩斯坦基函数。

计算机图形学 学习笔记(十):曲线曲面(二):Bezier 曲线与曲面_第5张图片
计算机图形学 学习笔记(十):曲线曲面(二):Bezier 曲线与曲面_第6张图片

Bezier 曲线的定义

计算机图形学 学习笔记(十):曲线曲面(二):Bezier 曲线与曲面_第7张图片
计算机图形学 学习笔记(十):曲线曲面(二):Bezier 曲线与曲面_第8张图片
计算机图形学 学习笔记(十):曲线曲面(二):Bezier 曲线与曲面_第9张图片
计算机图形学 学习笔记(十):曲线曲面(二):Bezier 曲线与曲面_第10张图片

一次 Bezier 曲线

计算机图形学 学习笔记(十):曲线曲面(二):Bezier 曲线与曲面_第11张图片
计算机图形学 学习笔记(十):曲线曲面(二):Bezier 曲线与曲面_第12张图片
计算机图形学 学习笔记(十):曲线曲面(二):Bezier 曲线与曲面_第13张图片

二次 Bezier 曲线

计算机图形学 学习笔记(十):曲线曲面(二):Bezier 曲线与曲面_第14张图片
计算机图形学 学习笔记(十):曲线曲面(二):Bezier 曲线与曲面_第15张图片
计算机图形学 学习笔记(十):曲线曲面(二):Bezier 曲线与曲面_第16张图片

三次 Bezier 曲线

计算机图形学 学习笔记(十):曲线曲面(二):Bezier 曲线与曲面_第17张图片
计算机图形学 学习笔记(十):曲线曲面(二):Bezier 曲线与曲面_第18张图片
计算机图形学 学习笔记(十):曲线曲面(二):Bezier 曲线与曲面_第19张图片
计算机图形学 学习笔记(十):曲线曲面(二):Bezier 曲线与曲面_第20张图片
计算机图形学 学习笔记(十):曲线曲面(二):Bezier 曲线与曲面_第21张图片
计算机图形学 学习笔记(十):曲线曲面(二):Bezier 曲线与曲面_第22张图片

7.6 Bezier 曲线性质

Bernstein 基函数的性质

正性(非负性)

这里写图片描述

权性

基函数有 n+1 项,n+1 个基函数的和加起来正好等于1
这里写图片描述

端点性质

计算机图形学 学习笔记(十):曲线曲面(二):Bezier 曲线与曲面_第23张图片

对称性

假如保持 n 次 Bezier 曲线控制多边形的顶点位置不变,而把次序颠倒过来,则此时曲线仍不变,只不过曲线的走向相反而已。

计算机图形学 学习笔记(十):曲线曲面(二):Bezier 曲线与曲面_第24张图片

递推性

这里写图片描述

n 次的 Bernstein 基函数可以由两个 n-1 次的 Bernstein 基函数线性组合而成。

导函数

这里写图片描述

最大值

这里写图片描述

积分

这里写图片描述

降阶公式

这里写图片描述

一个n 次的 Bernstein 基函数能表示成两个 n-1 次的 基函数的线性和。

升阶公式

这里写图片描述

Bezier 曲线性质

端点性质

计算机图形学 学习笔记(十):曲线曲面(二):Bezier 曲线与曲面_第25张图片
计算机图形学 学习笔记(十):曲线曲面(二):Bezier 曲线与曲面_第26张图片

一阶导数

计算机图形学 学习笔记(十):曲线曲面(二):Bezier 曲线与曲面_第27张图片
计算机图形学 学习笔记(十):曲线曲面(二):Bezier 曲线与曲面_第28张图片

几何不变性

Bezier 曲线的形状仅仅与控制多边形各个顶点的相对位置有关,而与坐标系的选择无关。

变差缩减性

若 Bezier 曲线的特征多边形是一个平面图形,则平面内任意直线与 p(t)的交点个数不多于该直线与其特征多边形的交点个数,这一性质叫做变差缩减性质。

此性质反应了 Bezier 曲线 比其特征多边形的波动还小,也就是说Bezier 曲线比特征多边形的折线更光顺。

8.1 Bezier 曲线生成算法

生成一条 Bezier 曲线 实际上就是要求出曲线上的点。下面介绍两种曲线生成的方法:

根据定义直接生成 Bezier 曲线

绘制 Bezier 曲线主要有以下步骤:

这里写图片描述
计算机图形学 学习笔记(十):曲线曲面(二):Bezier 曲线与曲面_第29张图片
计算机图形学 学习笔记(十):曲线曲面(二):Bezier 曲线与曲面_第30张图片

Bezier 曲线的递推(de Casteljau)算法

根据 Bezier 曲线定义确定的参数方程绘制 Bezier 曲线,因为计算量太大,不适合在工程中使用。de Casteljau 提出的递推算法则要简单很多。

计算机图形学 学习笔记(十):曲线曲面(二):Bezier 曲线与曲面_第31张图片

下面举个例子,推导出de Casteljau 递推算法。

计算机图形学 学习笔记(十):曲线曲面(二):Bezier 曲线与曲面_第32张图片
计算机图形学 学习笔记(十):曲线曲面(二):Bezier 曲线与曲面_第33张图片
计算机图形学 学习笔记(十):曲线曲面(二):Bezier 曲线与曲面_第34张图片
计算机图形学 学习笔记(十):曲线曲面(二):Bezier 曲线与曲面_第35张图片

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

这里写图片描述

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

de Casteljau 算法几何作图

de Casteljau 算法 可以用简单的几何作图来实现。

计算机图形学 学习笔记(十):曲线曲面(二):Bezier 曲线与曲面_第36张图片
计算机图形学 学习笔记(十):曲线曲面(二):Bezier 曲线与曲面_第37张图片
计算机图形学 学习笔记(十):曲线曲面(二):Bezier 曲线与曲面_第38张图片
计算机图形学 学习笔记(十):曲线曲面(二):Bezier 曲线与曲面_第39张图片

Bezier 曲线计算举例

计算机图形学 学习笔记(十):曲线曲面(二):Bezier 曲线与曲面_第40张图片
计算机图形学 学习笔记(十):曲线曲面(二):Bezier 曲线与曲面_第41张图片
计算机图形学 学习笔记(十):曲线曲面(二):Bezier 曲线与曲面_第42张图片
计算机图形学 学习笔记(十):曲线曲面(二):Bezier 曲线与曲面_第43张图片

8.2 Bezier 曲线的拼接及升降阶

Bezier 曲线的拼接

几何设计中,一条 Bezier 曲线旺旺难以描述复杂的曲线形状。这是由于增加特征多边形的定点数,会引起 Bezier 曲线次数的提高,而高次的多项式又会带来计算上的困难。

计算机图形学 学习笔记(十):曲线曲面(二):Bezier 曲线与曲面_第44张图片

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

计算机图形学 学习笔记(十):曲线曲面(二):Bezier 曲线与曲面_第45张图片
计算机图形学 学习笔记(十):曲线曲面(二):Bezier 曲线与曲面_第46张图片

Bezier 曲线的升阶与降阶

计算机图形学 学习笔记(十):曲线曲面(二):Bezier 曲线与曲面_第47张图片
计算机图形学 学习笔记(十):曲线曲面(二):Bezier 曲线与曲面_第48张图片

Bezier 曲线的升阶

所谓升阶就是指保持 Bezier 曲线的形状与方向不变,增加定义它的控制顶点数,即可以提高该 Bezier 曲线的次数。

计算机图形学 学习笔记(十):曲线曲面(二):Bezier 曲线与曲面_第49张图片
计算机图形学 学习笔记(十):曲线曲面(二):Bezier 曲线与曲面_第50张图片
计算机图形学 学习笔记(十):曲线曲面(二):Bezier 曲线与曲面_第51张图片

三次Bezier 曲线的升阶实例如下图所示:

计算机图形学 学习笔记(十):曲线曲面(二):Bezier 曲线与曲面_第52张图片

Bezier 曲线的降阶

降阶是升阶的逆过程。

计算机图形学 学习笔记(十):曲线曲面(二):Bezier 曲线与曲面_第53张图片
计算机图形学 学习笔记(十):曲线曲面(二):Bezier 曲线与曲面_第54张图片
计算机图形学 学习笔记(十):曲线曲面(二):Bezier 曲线与曲面_第55张图片

Bezier 曲线曲面升降阶的重要性

  1. 它是CAD系统之间数据传递与交换的需要
  2. 它是系统中分段(片)线性逼近的需要。通过逐次降阶,把曲面化为直线平面,便于求交和曲面绘制
  3. 它是外形信息压缩的需要。降阶处理以后可以减少存储的信息量

8.3 Bezier 曲面

基于 Bezier 曲线的讨论,可以给出 Bezier 曲面的定义和性质,Bezier 曲线的一些算法也可以很容易地扩展到 Bezier 曲面中。

Bezier 曲面的定义

计算机图形学 学习笔记(十):曲线曲面(二):Bezier 曲线与曲面_第56张图片
计算机图形学 学习笔记(十):曲线曲面(二):Bezier 曲线与曲面_第57张图片
计算机图形学 学习笔记(十):曲线曲面(二):Bezier 曲线与曲面_第58张图片
计算机图形学 学习笔记(十):曲线曲面(二):Bezier 曲线与曲面_第59张图片

Bezier 曲面性质

Bezier 曲线的很多性质可以推广到 Bezier 曲面中。

(1)Bezier 曲面特征网络的四个角点正好是Bezier 曲面的四个角点,即:

计算机图形学 学习笔记(十):曲线曲面(二):Bezier 曲线与曲面_第60张图片

(2)Bezier 曲面特征网络嘴歪一圈顶点定义Bezier 曲面的四条边界
(3)几何不变形
(4)对称性
(5)凸包性

Bezier 曲面片的拼接

计算机图形学 学习笔记(十):曲线曲面(二):Bezier 曲线与曲面_第61张图片
计算机图形学 学习笔记(十):曲线曲面(二):Bezier 曲线与曲面_第62张图片

递推(de Casteljau)算法(曲面的求值)

计算机图形学 学习笔记(十):曲线曲面(二):Bezier 曲线与曲面_第63张图片
计算机图形学 学习笔记(十):曲线曲面(二):Bezier 曲线与曲面_第64张图片
计算机图形学 学习笔记(十):曲线曲面(二):Bezier 曲线与曲面_第65张图片
计算机图形学 学习笔记(十):曲线曲面(二):Bezier 曲线与曲面_第66张图片
计算机图形学 学习笔记(十):曲线曲面(二):Bezier 曲线与曲面_第67张图片
计算机图形学 学习笔记(十):曲线曲面(二):Bezier 曲线与曲面_第68张图片
计算机图形学 学习笔记(十):曲线曲面(二):Bezier 曲线与曲面_第69张图片

你可能感兴趣的:(3.,计算机图形学,计算机图形学)