没有合适的资源?快使用搜索试试~ 我知道了~
《计算机图形学》-Bézier曲线生成算法探究与实现
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 65 浏览量
2022-05-15
17:16:30
上传
评论
收藏 1.72MB DOCX 举报
温馨提示
试读
21页
参考《计算机图形学》第4版详细介绍了Bézier曲线的生成算法探究与实现,包括Bézier曲线发展历史、公式推导、常用Bézier曲线、Bézier曲线拼接等原理。原文最后还附上关于二次和三次Bézier曲线的源代码供大家参考。
资源推荐
资源详情
资源评论
《计算机图形学》期中实践作业
课题名称: Bézier 曲线生成算法探究与实现
专业班级:
学 号:
学生姓名:
指导老师:
目录
一、概述.........................................................................................................................................1
二、发展历史.................................................................................................................................1
三、Bézier 曲线的推导..................................................................................................................2
3.1 Bézier 曲线的数学表示....................................................................................................2
3.2 Bézier 曲线的性质............................................................................................................3
3.2.1 端点的性质............................................................................................................3
3.2.2 对称性....................................................................................................................4
3.2.3 凸包性....................................................................................................................4
3.2.4 几何不变性............................................................................................................5
3.2.5 变差缩减性............................................................................................................5
3.2.6 多值性....................................................................................................................5
3.2.7 交互能力................................................................................................................5
3.3 常用的 Bézier 曲线...........................................................................................................5
3.3.1 二次 Bézier 曲线....................................................................................................5
3.3.2 三次 Bézier 曲线....................................................................................................6
3.4 Bézier 曲线的拼接............................................................................................................8
3.5 de Casteljau 算法的递推过程..........................................................................................9
3.6 反求 Bézier 曲线控制点.................................................................................................10
3.7 有理 Bézier 曲线.............................................................................................................11
四、Bézier 曲线的特点及用途....................................................................................................11
4.1 Bézier 曲线的特点..........................................................................................................11
4.2 Bézier 曲线的用途..........................................................................................................12
4.3 Bézier 曲线缺点..............................................................................................................12
五、代码实现...............................................................................................................................12
5.1 二次 Bézier 曲线源代码:.............................................................................................12
5.2 三次 Bézier 曲线源代码:.............................................................................................15
六、总结.......................................................................................................................................18
Bézier 曲线的生成算法探究与实现
一、概述
贝塞尔曲线(Bézier curve),又称贝兹曲线或贝济埃曲线,是应用于二维图形应用程序
的数学曲线。一般的矢量图形软件通过它来精确画出曲线,贝兹曲线由线段与节点组成,
节点是可拖动的支点,线段像可伸缩的皮筋,我们在绘图工具上看到的钢笔工具就是来做
这种矢量曲线的。贝塞尔曲线是计算机图形学中相当重要的参数曲线,在一些比较成熟的
位图软件中也有贝塞尔曲线工具,如 PhotoShop 等。在 Flash4 中还没有完整的曲线工具,
而在 Flash5 里面已经提供出贝塞尔曲线工具。
Bézier curve(贝塞尔曲线) 是应用于二维图形应用程序的数学曲线。 曲线定义:起始点、
终止点(也称锚点)、控制点。通过调整控制点,贝塞尔曲线的形状会发生变化。 1962 年,
法国数学家 Pierre Bézier 第一个研究了这种矢量绘制曲线的方法,并给出了详细的计算公
式,因此按照这样的公式绘制出来的曲线就用他的姓氏来命名,称为贝塞尔曲线。
贝塞尔曲线所依据的最原始的数学公式是 伯恩斯坦多项式。 简单来说,伯恩斯坦多
项式可以用来证明,在[ a, b ] 区间上所有的连续函数都可以用多项式来逼近,并且收敛性
很强,也就是一致收敛。 就是一个连续函数,你可以将它写成若干个伯恩斯坦多项式相加
的形式,并且,随着 n→∞,这个多项式将一致收敛到原函数,这个就是伯恩斯坦斯的逼近
性质。
到了 1959 年,当时就职于雪铁龙的法国数学家 Paul de Casteljau 开始对伯恩斯坦多项
式进行了图形化的尝试,并且提供了一种数值稳定的德卡斯特里奥(de Casteljau) 算法。
根据这个算法,就可以只通过很少的控制点,去生成复杂的平滑曲线,也就是贝塞尔曲线。
而贝塞尔曲线的得名,得归功于 1962 年就职于雷诺的法国工程师皮埃尔 ·贝塞尔
(Pierre Bézier),他使用这种方法来辅助汽车的车体工业设计,并且广泛宣传,因此大家
才都称他为贝塞尔曲线 。
Bézier 曲线是应用于二维图形的曲线。曲线由顶点和控制点组成,通过改变控制点坐
标可以改变曲线的形状。
二、发展历史
在进行汽车车身、长波外形等自由曲线设计时,初始给出的型值点往往是不精确的。
因此,采用样条曲线以插值形式去“点点通过”这样本来就很粗糙的原始型值点,显然没有
必要,也是一种浪费。另外,插值样条曲线作为外形设计工具,还存在灵活性差、不够直
观、型值点之间的曲线不易控制等问题。其实,就外形设计而言,除了少数的几个必须满
足的性能指标外,美观性的考虑往往占了不少分量,因此曲线设计的自由度是相当大的。
Bézier 受到思想启发,提出了一种新的基于“逼近”思想的参数曲线,并以这种方法为基
础完成了一种自由曲线和曲面的设计系统 UNISURF,1972 年在法国雷诺汽车公司正式使
用。这种曲线能够比较直观的将设计条件与设计出来的曲线形状结合在一起,设计者先大
致给出设计曲线的初始轮廓,然后可以很直观的以交互方式通过选择和调整这个初始轮廓
来改变曲线的形状,知道获得满意的形状,而且这种曲线易于计算机的实现,这种曲线一
经推出便得到了广泛的接受。后来人们称这种曲线为 Bézier(贝塞尔)曲线。
1
Bézier 曲线的设计的基本思想是:先给若干个控制点,把相邻的控制点用直线连接起
来构成一个特征多边形(Characteristic Polygon)作为曲线的轮廓线,然后在每个特征多边
形顶点配以伯恩斯坦(Bernstein)多项式作为权函数,对特征多边形各顶点进行加权求和,
于是便生成了一条曲线,即 Bézier 曲线。
Bézier 曲线的形状是由特征多边形的各个顶点所唯一确定的,在多边形的顶点中仅第
一个和最后一个顶点位于曲线上,多边形的第一条边和最后一条边分别决定 Bézier 曲线首
端点和末端点处的切线(严格来说是切矢量)方向。多边形的其他顶点定义曲线的导数、
阶次、和形状,曲线上的每一点都是特征多边形各顶点的加权和。
改变 Bézier 多边形顶点的位置、第一条边和最后一条边的方向与长度就可以灵活的改
变曲线的形状,从而设计出不同形状的曲线。因此,特征 多边形也叫做控制多边 形
(Control Polygon)。特征多边形的顶点也叫作控制顶点。
由于 Bézier 曲线不一定通过每个控制顶点。,因此其是采用一种样条逼近的方法描述
的曲线,即逼近样条曲线,它的许性质使其在 CAD 和 CAGD 中得以广泛应用。
三、Bézier 曲线的推导
3.1 Bézier 曲线的数学表示
与其他参数曲线类似,Bézier 曲线也是用一个参数方程来表达。
如果给定 n+1 个控制点:P
k
=(x
k,
y
k,
z
k
)
,
k=0,1,2,…,n,则逼近由这些控制点构成的特征多
边形的 n 次 Bézier 曲线可表示为
P
(t)
=
∑
k=0
n
P
k
·BEZ
k,n
(t) 0≤t≤1
式中,P
k
为控制点矢量,BEZ
k,n
(t)为 Bézier 基函数,它是由 Bernstein 多项式定义的,即
BEZ
k,n
(t)=C(n,k)t
k
(1-t)
n-k
式中
C(n,k)=
n !
k !(n−k !)
Bézier 曲线控制点的个数与曲线形状有直接关系。一般地,Bézier 曲线多项式的次数
比控制点的个数少 1。图为在平面上的几种控制点位置与曲线形状的关系。
图 3.1.1 控制点位置与 Bézier 曲线形状的关系
2
3.2 Bézier 曲线的性质
Bézier 曲线具有许多有意义的性质,具体介绍如下:
3.2.1 端点的性质
由前面公式推导可得两端点值为
P(t)|
t=0
=
∑
k=0
n
P
k
·BEZ
k,n
(0)
=P
0
·BEZ
0,n
(0)+ P
1
·BEZ
1,n
(0)+…+P
n
·BEZ
n,n
(0)
=P
0
P(t)|
t=1
=
∑
k=0
n
P
k
·BEZ
k,n
(1)
=P
0
·BEZ
0,n
(1)+ P
1
·BEZ
1,n
(1)+…+P
n
·BEZ
n,n
(1)
=P
n
这说明 Bézier 曲线总是以第一个和最后一个控制点作为曲线的始点和末端点。
将式对参数 t 求导,可以推出
BEZ`
k,n
(t)=n[BEZ
k-1,n-1
(t)-BEZ
k,n-1
(t)]
再由式可得
P`(t)=n
∑
k=0
n
P
k
·[BEZ
k-1,n-1
(t)-BEZ
k,n-1
(t)]
=n[(P
1
-P
0
) BEZ
0,n-1
(t)+ (P
2
-P
1
) BEZ
1,n-1
(t) +…+(P
n
-P
n-1
) BEZ
n-1,n-1
(t)
=n
∑
k=0
n
¿¿
k
-P
k-1
)·BEZ
k-1,n-1
(t)
这里,当 BEZ
k,n
(t)的下标超出范围(如 BEZ
-1
,
n
(t)和 BEZ
n
,
n-1
(t))时均视为 0 值。由于在首
端点 t=0 处,除 BEZ
0
,
n-1
(0)=1 外,其余项均为 0,在末端点 t=1 处,除 BEZ
n-1
,
n-1
(1)=1 外,
其余项均为 0,因此有
P`(t)|
t=0
=n(P
1
-P
0
)
P`(t)|
t=1
=n(P
n
-P
n-1
)
这个重要性质说明,曲线在始点和末端点处的切线方向分与 Bézier 曲线控制多边形的第一
条边和最后一条边的走向一致。如图 2.1 所示
3
剩余20页未读,继续阅读
资源评论
星辰亦有归处~
- 粉丝: 3
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功