《第三讲 二维图元生成算法(3)讲义》由会员分享,可在线阅读,更多相关《第三讲 二维图元生成算法(3)讲义(65页珍藏版)》请在金锄头文库上搜索。
1、计算机图形学,吴 伟 计算机学院 E-mail: wuwei_imu,第三节 自由曲线的绘制,参数曲线基础 参数多项式曲线 三次Hermite曲线 Bezier曲线 B样条曲线,参数曲线基础(1/12),曲线的表示形式 非参数表示 显式表示 隐式表示,参数曲线基础(2/12),参数表示 参数的含义 时间,距离,角度,比例等等 规范参数区间0,1 矢量表示形式 例子:直线段的参数表示,参数曲线基础(3/12),参数表示与隐式表示的相互转换 例子,参数曲线基础(4/12),正则点 导数不为零的点 正则曲线 所有的点都是正则点的曲线 斜率 直线的倾斜程度 一个坐标变量关于另一个坐标变量变化率,参数曲
2、线基础(5/12),切矢量 坐标变量关于参数的变化率 弧长,参数曲线基础(6/12),弧长参数,参数曲线基础(7/12),单位切矢量,参数曲线基础(8/12),主法矢量 主法矢量与切矢量垂直 主法线 副法矢量 副法线 Frenet标架,参数曲线基础(9/12),曲率 曲线的弯曲程度 曲率半径 关于任意参数切矢量、法矢量和曲率的计算,参数曲线基础(10/12),参数连续性 传统的、严格的连续性 称曲线P=P(t)在 处n阶参数连续,如果它在 处n阶左右导数存在,并且满足 记号,参数曲线基础(11/12),几何连续性 直观的、易于交互控制的连续性 0阶几何连续 称曲线P=P(t)在 处0阶几何连续
3、,如果它在 处位置连续,即 记为 1阶几何连续 称曲线P=P(t)在 处0阶几何连续,如果它在 处 ,并且切矢量方向连续 记为,参数曲线基础(12/12),2阶几何连续 称曲线P=P(t)在 处2阶几何连续,如果它在 处 (1) (2)副法矢量方向连续 (3)曲率连续 几何连续与参数连续的关系,参数表示的好处,参数形式有更大的自由度来控制曲线、曲面的形状。 对非参数方程表示的曲线、曲面进行变换,必须对曲线、曲面上的每个型值点进行几何变换;而对参数表示的曲线、曲面可对其参数方程直接进行几何变换(如平移、比例、旋转),从而节省计算工作量。,便于处理斜率为无限大的问题,不会因此而中断计算。 参数方程
4、中,代数、几何相关和无关的变量是完全分离的,而且对变量个数不限,从而便于用户把低维空间中的曲线、曲面扩展到高维空间去。这种变量分离的特点使我们可以用数学公式去处理几何分量,如调配函数就具有此特点。 规格化的参数变量,使其相应的几何分量是有界的,而不必用另外的参数去定义其边界。参数表示易于产生曲线上的有序点列和曲面上的有序网格点,而隐式表示则无此特点。,易于用矢量和矩阵表示几何分量,简化了计算。 用参数形式设计或表示形状更直观,许多参数表示的基底如Bernstein基函数和B样条函数,具有明显的几何意义,由此得到的算法更直观稳定。,隐式表示的好处,用隐式表示更容易表示曲面的等值线。 在曲线或曲面
5、的求交中,通过隐式方程容易判断某点是否落在曲线或曲面上,而参数表示则无此优点。 参数形式有时需要处理与几何形状无关的参数异常点,例如单位球面的极点,但事实上,极点与球面上其它点并无区别。 曲面上参数表示并不能描述曲面间的相互位置,找到它们之间的整体关系很困难,而隐式表示则较为方便,参数多项式曲线(1/5),为什么采用参数多项式曲线 表示最简单 理论和应用最成熟 定义-n次多项式曲线,参数多项式曲线(2/5),矢量表示形式 加权和形式 缺点 没有明显的几何意义 与曲线的关系不明确,导致曲线的形状控制困难,参数多项式曲线(3/5),矩阵表示 矩阵分解 几何矩阵 控制顶点 基矩阵M 确定了一组基函数
6、,参数多项式曲线(4/5),例子直线段的矩阵表示,参数多项式曲线(5/5),参数多项式曲线的生成,参数离散,计算型值点,连接型值点,三次Hermite曲线(1/6),定义 给定4个矢量 ,称满足条件的三次多项式曲线P(t)为Hermite曲线,P0,P1,R0,R1,三次Hermite曲线(2/6),矩阵表示 条件,三次Hermite曲线(3/6),合并 解(不唯一),三次Hermite曲线(4/6),基矩阵与基函数(调和函数),三次Hermite曲线(5/6),形状控制 改变端点位置矢量 调节切矢量 的方向,三次Hermite曲线(6/6),调节切矢量 的长度 控制顶点 几何变换 对曲线变换
7、等价于对控制顶点变换,Bezier曲线(1/25),Bezier基函数的定义 如下n次多项式称为n次Bezier基函数,Bezier曲线(2/25),Bezier基函数的性质 正性 权性,Bezier曲线(3/25),对称性 降阶公式,Bezier曲线(4/25),升阶公式 导数,Bezier曲线(5/25),积分 最大值 在t=i/n处取得最大值 线性无关性 是n次多项式空间的一组基,Bezier曲线(6/25),Bezier曲线的定义 n次多项式曲线P(t)称为n次Bezier曲线 控制顶点 控制多边形,Bezier曲线(7/25),一次Bezier曲线 n1,一次多项式,有两个控制顶点
8、二次Bezier曲线 n2,二次多项式,有三个控制点,则为一条抛物线,Bezier曲线(8/25),Bezier曲线的性质 端点位置,Bezier曲线(9/25),端点切矢量 导数曲线,Bezier曲线(10/25),端点曲率 曲率公式,Bezier曲线(11/25),仿射不变性 表达式 几何属性:形状,曲率等等,Bezier曲线(12/25),凸包性 凸集 凹集 点集的凸包 包含这些点的最小凸集 Bezier曲线位于其控制顶点的凸包之内,Bezier曲线(13/25),几何不变性 平面曲线的保凸性 如果其控制多边形是凸的,则该Bzier曲线也是凸的。 平面曲线的变差缩减性 光顺,Bezier
9、曲线(14/25),拟局部性 局部性是指移动一个控制顶点,它只影响曲线的某个局部; 拟局部性是指当移动一个控制顶点Pk时,对应参数u=k/n的曲线上的点变动最大,远离u=k/n的曲线点变动越来越小。 Bzier曲线不具备局部性,但它具备拟局部性。 形状的易控性,Bzier曲线拟局部性,Bezier曲线(15/25),三次Bezier曲线的矩阵表示,Bezier曲线(16/25),德卡斯特里奥(De Casteljau)算法 问题 给定参数 ,计算,t,P(t),De Casteljau算法,De Casteljau算法,当P0,P2固定,引入参数t,令上述比值为t:(1-t),即有: t从0变
10、到1,第一、二式就分别表示控制二边形的第一、二条边,它们是两条一次Bezier曲线。将一、二式代入第三式得: 当t从0变到1时,它表示了由三顶点P0、P1、P2三点定义的一条二次Bezier曲线。并且表明:这二次Bezier曲线P20可以定义为分别由前两个顶点(P0,P1)和后两个顶点(P1,P2)决定的一次Bezier曲线的线性组合。依次类推,由四个控制点,De Casteljau算法,定义的三次Bezier曲线P30可被定义为分别由(P0,P1,P2)和(P1,P2,P3)确定的二条二次Bezier曲线的线性组合,由(n+1)个控制点Pi(i=0, 1, ., n)定义的n次Bezier曲
11、线Pn0可被定义为分别由前、后n个控制点定义的两条(n-1)次Bezier曲线P0n-1与P1n-1的线性组合:,Bezier曲线(17/25),算法 计算过程,r=0,r=3,r=2,r=1,Bezier曲线(18/25),几何解释,三次Bzier曲线作图过程,Bezier曲线(19/25),分割定理 问题:一条多项式曲线被分割成两段,得到的两段曲线是不是多项式曲线?如果是,它们的表达式如何?,P=Q+R,Bezier曲线(20/25),几何解释,分割定理说明:给定任一t(0,1),P(t)将Bzier曲线分为两段,两段曲线仍然可以表示成Bzier曲线形式,它们的控制顶点由de Castel
12、jau算法产生。,Bzier曲线分割示例,若令n=3,则 曲线Q的控制顶点P0i构成直角三角形的水平边; 曲线R的控制顶点Pin-i构成直角三角形的斜边; 直角三角形的垂直边由原曲线的控制顶点构成。,Bezier曲线(21/25),离散生成算法 想法,Bezier曲线(22/25),程序 void DisplayBezierCurve(Vector P,int n, float DELTA) if(Distance(P,n) = DELTA) 显示控制多边形P; else BezierCurveSplitting(P,Q,R,n); DisplayBezierCurve(Q,n,DELTA);
13、 DisplayBezierCurve(R,n,DELTA); ,Bezier曲线(23/25),计算距离,Bezier曲线(24/25),曲线的拼接,Bezier曲线(25/25),条件 条件 条件?,Bezier曲面,图 双三次Bezier曲面及边界信息,B样条曲线,Bezier曲线或曲面有许多优越性,但有三点不足: 其一是缺少局部性,修改某一控制顶点将影响整条曲线; 其二是控制多边形与曲线的逼近程度较差,次数越高,逼近程度越差; 其三是当表示复杂形状时,无论采用高次曲线还是多段拼接起来的低次曲线,都相当复杂。,B样条曲线,1972年,Gordon、Riesenfeld等人发展了1946年
14、Schoenberg提出的样条方法 , 提出了B样条方法,在保留Bezier方法全部优点的同时,克服了Bezier方法的弱点。,B样条基函数,B样条基函数是样条函数空间中具有最小支承的一组基,也称为基本样条(Basic spline), B样条基函数有多种定义形式,例如有积分、差分、卷积、截断幂、递推形式等,理论上较多采用截断幂函数的差商定义,但实际工程计算则更多采用de Boor-Cox递推公式定义B样条基函数,这样不仅便于计算分析基函数的性质,而且也简明直观,具有明显的几何特征。,定义 设 是单调递增的实数序列,即 称为节点(Knot),U称为节点矢量,第i段p次(degree)(或p+1阶(order)) B样条基函数,记为 定义如下:,B样条基函数 de Boor-Cox递推定义,B样条曲线的定义,B样条曲线方程可写为,