李红林
""【摘 要】本文利用VC++编程环境,生成两段三次Bezier曲线,并对曲线进行连续性条件讨论,且实现了曲线拼接。
【关键词】三次;Bezier;连续性;曲线拼接
【Abstract】In this paper, the VC++ programming environment is used to generate three Bezier curves, and the continuity conditions are discussed, and the curves are achieved
【Key words】Cubic; Bezier; Continuity; Curve Splicing
Bezier曲线是由法国人Bezier于20世纪70年代初为解决汽车外型设计而提出的一种新的参数表示方法[1]。Bezier 方法是曲线、曲面造型中的一个里程碑,它以逼近原理为基础,应用Bezier方法,可逼近数学曲线、曲面或设计师勾画的草图,起到辅助设计的作用[2-3]。由于实际应用中的线和面形状复杂,用单一曲线、曲面无法表示,所以有必要对曲线、曲面进行拼接。
1 定义
1.1 Bezier曲线的定义
2 三次Bezier曲线的生成
在VC++6.0 环境下,新建一个基于MFC的单文档工程。在工程View.cpp中添加Bezier曲线生成函数,当n=3时,生成任意两条三次Bezier曲线,如图1所示。
3 三次Bezier曲线的拼接及连续性
样条曲线是由各个多项式曲线段连接而成,为了保证各个曲线段在连接点处是光滑的,需要满足各种连续性条件[5]。连续性有参数连续性和几何连续性。若两条相邻参数曲线段在连接点处具有n阶连续导矢,即n阶连续可微,则将这类连续性称为n阶参数连续性条件,记为Cn。若只要求两条相邻参数曲线段在连接点处的n阶导矢成比例,而不要求必须相等,则将这类连续性称为n阶几何连续性,记为Gn。因参数连续性条件比几何连续性条件更加苛刻一些。所以,在三次Bezier曲线拼接时以几何连续性为例。
设两条三次Bezier 曲线的控制点列分别为Pi(i=0,1,2,3)和Qj(j =0,1,2,3)。若将P(t)段与Q(t)相连,则在连接点处达到G0、 G1、G2连续的充要条件是:
(1)G0连续:P(1)=Q(0)。即P(t)的终点与Q(t)的起点重合,如图2 所示,曲线在连接点处不能保证是光滑连接。
(2)G1连续:是两段相邻曲线在连接点处不仅达到G0连续,同时一阶导数成比例,即P(1)=αQ(0),其中α是比例系数。具有G1连续,在连接点处有公共的切矢方向,即P2,P3(Q0),Q1三点共线,如图3所示。
(3)G2连续:指两段相邻曲线段的一阶导数、二阶导数在交点处均成比例。P(1)=αQ(0),P(1)=βQ(0)。G2连续除了满足G1 条件外,还满足:副法矢方向相同、曲率相等。
4 结论
本文首先对三次Bezier曲线进行了简单分析与实现;其次对曲线的连续性进行分析;最后对生成的三次Bezier曲线进行拼接。该拼接方法可实现任意次的Bezier曲线的拼接。
【参考文献】
[1]杜晓增,丁宇辰.计算机图形学基础[M].2版.北京:机械工业出版社,2013:103.
[2]严兰兰,宋来忠,李军成.有理Bezier 曲线的拼接[J].三峡大学学报:自然科学版,2005,27(5):469-471.
[3]杨林英.Bezier曲线的拼接及扩展[D].兰州:西北师范大学,2013.
[4]芦殿军.Bezier 曲线的拼接及其连续性[J].青海大学学报:自然科学版,2004,22(6):84-86.
[5]银红霞,杜四春,蔡立军.计算机图形学[M].北京:水利水电出版社,2005:133-134.
[责任编辑:杨玉洁]