计算机图形学:Lecture 12 曲线曲面造型_第1页
计算机图形学:Lecture 12 曲线曲面造型_第2页
计算机图形学:Lecture 12 曲线曲面造型_第3页
计算机图形学:Lecture 12 曲线曲面造型_第4页
计算机图形学:Lecture 12 曲线曲面造型_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Lecture 12曲线曲面造型 概述 在CAD/CAM领域,存在大量的曲线与曲面,因此,曲线与曲面造型技术是CAD/CAM系统的关键技术。 曲线曲面模型可用数学函数或一系列用户指定的数据点来定义。 曲线表示的基本知识 曲线可以用显式、隐式和参数表示,由于参数表示的曲线、曲面具有几何不变性等优点,计算机图形学中通常用参数形式描述曲线 .位置矢量 位置矢量即该位置所在点的坐标值,如图所示,曲线上任一点的位置矢量可表示为: 型值点和控制点 所谓型值点,是指通过测量或计算得到的曲线上少量描述曲线几何形状的数据点。由于的数量有限,不足以充分描述曲线的形状,因此,通常是求得一些型值点后,采用一定的数学方

2、法,建立曲线的数学模型,从而再根据数学模型去获得曲线上每一点的几何信息。所谓控制点,是指用来控制或调整曲线形状的特殊点,曲线段本身不通过该控制点。Bzier曲线 Bzier曲线的定义 给定空间n+1个点的位置矢量Pi(i=0,1,2,n),则Bzier参数曲线上各点坐标的插值公式为: 式中,Pi构成该Bzier曲线的特征多边形,Bi,n(t)是n次Bernstein基函数: Bzier曲线 一般折线P0P1Pn为P(t)的控制多边形;称P0,P1,Pn各点为P(t)的控制顶点。Bzier曲线P(t)与其控制多边形的关系可以这样认为:控制多边形P0P1Pn是P(t)的大致形状的勾画,而P(t)是

3、对P0P1Pn的逼近。Bzier曲线的性质 端点的位置 由Bernstein基函数可以推得: 当t=0时,P(0)=P0 ;当t=1时,P(1)=Pn 由此可见,Bzier曲线总是通过第一个和最后一个控制点,即P0和Pn,即Bzier曲线的起点、终点与相应的特征多边形的起点、终点重合。Bzier曲线的性质端点的切线 Bzier曲线在端点处的切矢量 可以通过控制点的坐标进行计算:因为所以 由此可得,Bzier曲线的起点和终点处的切线方向和特征多边形的第一条边及最后一条边的走向一致。Bzier曲线的性质权性 由二项式定理可知:Bzier曲线的性质凸包性 由于 ,且 ,这一结果说明当t在0,1区间变

4、化时,对某一个t值,P(t)是特征多边形各顶点的加权平均,权因子依次是 。在几何图形上,意味着Bezier曲线P(t)在 中各点是控制点Pi的凸线性组合,即曲线落在Pi构成的凸包之中,如图所示。Bzier曲线的性质几何不变性 这是指某些几何特性不随坐标变换而变化的特性。Bezier曲线位置与形状与其特征多边形顶点 的位置有关,它不依赖坐标系的选择。Bzier曲线的性质变差缩减性 若Bezier曲线的特征多边形 是一个平面图形 , 则平面内任意直线与C(t)的交点个数不多于该直线与其特征多边形的交点个数,这一性质叫变差缩减性质。 此性质反映了Bezier曲线比其特征多边形的波动还小,也就是说Be

5、zier曲线比特征多边形的折线更光顺。三次Bzier曲线的矩阵表示 在利用Bzier曲线造型时,如果其次数太高,固然能表示复杂的形状,但同时会造成计算复杂度增加,并且高次曲线有太多的控制顶点,形状不易控制。 二次Bzier曲线表示能力有限,又是平面曲线,所以最常用的就是三次Bezier曲线。 三次Bezier曲线是非平面Bzier曲线中的最低次曲线,表示能力强,形状控制方便。故在一些图形软件包中,只有三次Bzier曲线,使得设计更加方便,同时避免了由于高阶多项式带来的计算量的增加。 三次Bzier曲线的矩阵表示当n=3时,由特征多边形的顶点P0、P1、P2、P3可定义一条三次Bzier曲线。这

6、时曲线定义形式为:矩阵形式为 Bzier曲线的计算 计算Bezier曲线上的点,可用Bezier曲线方程,但使用de Casteljau提出的递推算法则要简单的多。 如下图所示,设 、 、 是一条Bezier曲线上顺序三个不同的点。 过 和 点的两切线交于 点, 在 P2点的切线交 和 于 和 ,则如下比例成立:这是所谓的三切线定理。Bzier曲线的计算Bzier曲线的计算当P0,P2固定,引入参数t,令上述比值为t:(1-t),即有: t从0变到1,第一、二式就分别表示控制二边形的第一、二条边,它们是两条一次Bezier曲线。将一、二式代入第三式得: 以Bernstein基函数构造的Bzie

7、r曲线有许多优点,如直观、计算简单等,但有一些不足之处:其一是缺少局部性,修改某一个控制顶点将影响整条曲线;其二是控制多边形与曲线的逼近程度较差(次数越高,逼近程度越差);其三是当表示复杂形状时,无论采用高次曲线还是多段拼接起来的低次曲线,都相当复杂。B样条曲线B样条曲线 为了克服这些问题,Gordon、Riesenfeld等人拓展了Bzier曲线,提出了B样条方法,用n次B样条基函数替代了Bernstein基函数,在保留Bzier方法全部优点的同时,克服了Bzier方法的弱点。B样条曲线 在计算机图形学中,术语样条曲线指由多项式曲线段连接而成的曲线,在每段的边界处满足特定的连续条件。 样条曲

8、面可用两组正交样条曲线来描述。B样条曲线 与Bzier曲线不同,对于B样条曲线我们采用一系列的节点来表示参数t的变化情况,它是一个整体参数,节点的个数反映了曲线的次数和段数。B样条曲线的方程定义为: B样条曲线 上式中,Pi是控制多边形的顶点。 称为k阶(k-1次)B样条基函数 。 它是一个称为节点矢量的非递减的参数t的序列所决定的k阶分段多项式,也即为k阶(k-1次)多项式样条。 B样条曲线B样条基函数定义为: 关注t的下标的变化,其最小最大值为i,i+K 该递推公式表明:欲确定第i个k阶B样条,需要用到共k+1个节点,称 区间为的支撑区间。 B样条曲线 i=0;0,k 使用的节点为t0,t

9、1, tk i=1;1,k+1 使用的节点为t1,t2, tk+1 i=n;n,k+n 使用的节点为tn,tn+1, tk+n 节点的个数反映了曲线的次数和段数: 节点的个数=n+k+1 共有n+1个样条基函数B样条曲线B样条曲线的一个实例: n=3;k=3,此时节点个数为n+k+1=7 节点为0,1,2,3,4,5,6 有n+1=4个基函数分别为B0,3, B1,3 , B2,3 , B3,3B样条曲线B样条曲线的性质 局部性 局部性质是B样条最重要的性质之一,也是B样条方法与Bzier方法的主要差别所在。由B样条基函数递推公式可知: 第i条k阶B样条曲线,仅在节点和的k+1个区间内不为0,

10、而其余区间均为0。这个性质称之为局部支柱性。 B样条曲线的性质连续性 凸包性 分段参数多项式 变差缩减性 几何不变性 直线保持性 造型的灵活性 B样条曲线分类 (1)均匀B样条曲线 节点向量中节点为沿参数轴均匀或等间隔分布,所有节点区间长度为大于零的一个常数,其中i从0一直到n+k。这样的节点向量定义了均匀B样条曲线(uniform B-spline curve)。(2)准均匀B样条曲线 准均匀B样条曲线(quasi-uniform B-spline curve)是均匀B样条曲线和非均匀均匀B样条曲线的交叉部分,节点向量中首尾节点重复d次,即t0= t1= td,tn+1= tn+2= tn+

11、d+1,所有其他节点呈均匀分布,这样的节点矢量定义了准均匀B样条曲线。B样条曲线分类(3)分段Bzier曲线 节点向量中两端节点具有重复度k,所有内节点重复度为k-1,这样的节点矢量定义了分段的Bernstein基函数。 4)非均匀B样条曲线 对于非均匀B样条曲线(none-uniform B-spline curve),节点向量中节点的分布是任意的。在这种类型里,任意分布的节点矢量,只要在数学上成立(节点序列非递减,两端节点重复度k,内节点重复度k-1)都可选取。这样的节点矢量定义了非均匀B样条基。非均匀有理B样条曲线 B样条方法在表示与设计自由型曲线曲面形状时显示了强大的威力,然而在表示与

12、设计初等曲线曲面时时却遇到了麻烦。因为B样条曲线包括其特例的Bzier曲线都不能精确表示出抛物线外的二次曲线,而只能给出近似表示。 提出非均匀有理B样条(NURBS)方法,主要是为了找到与描述自由型曲线曲面的B样条方法既相统一、又能精确表示二次曲线弧与二次曲面的数学方法。非均匀有理B样条曲线 有理函数是两个多项式之比。因此,有理样条是两个样条函数之比。有理B样条曲线可以这样来定义:非均匀有理B样条曲线 使用NURBS绘制二次曲线,我们利用二次样条函数k=3和三个控制点,其节点向量为: 0,0,0,1,1,1 取权值为w0=w2=1,w1=r/(1-r) 0=r1 改变r的值可得各种二次曲线:

13、r0.5,w11 (双曲线) r=0.5,w1=1 (抛物线) r0.5,w11 (椭圆)非均匀有理B样条曲线优点既为标准解析形状即初等的曲线曲面,也为自由型曲线曲面的精确表示与设计提供了一个统一的数学形式。因此,一个统一的图形数据库就能存储这两类曲线曲面几何形状信息。由操纵控制顶点及权因子为各种形状设计提供了充分的灵活性。计算稳定,速度快。NURBS有明显的几何解释,对有良好的几何知识尤其是画法几何知识的设计人员来说,特别适用。具有明显的几何解释和强有力的几何配套技术(包括节点插入、细分、升阶等),这些技术能用于设计、分析与处理等各环节。NURBS在比例、旋转、平移、错切以及平行和透视变换下

14、是不变的。NURBS是B样条及有理Bzier曲线的合适推广。非均匀有理B样条曲线缺点比传统的曲线曲面定义方法需要更多的存储空间,如传统方法定义空间圆需7个参数(圆心、半径、法矢等),而NURBS定义空间圆需38个参数。权因子选择不当会引起畸变。某些技术用传统形式比用NURBS工作的更好。如曲面求交等。反求曲线曲面上点的参数值的算法,存在数值不稳定问题。OpenGL中自由曲线和曲面的绘制 Bzier曲线的绘制 曲线的起点和终点与该多边形的起点和终点重合,且多边形的第一条边和最后一条边分别表示了曲线在起点和终点处的切向矢量方向。曲线的形状则趋于多边形的形状。多边形可由其顶点来定义这些顶点则被称为控

15、制点。只要给出控制点,就可生成一条Bzier曲线。 Bzier曲线的绘制1.曲线的定义与激活 在OpenGL中,曲线和曲面的构造是借助于OpenGL求值器来完成的。要生成一条曲线,首先,要创建一个求值器。求值器是基于OpenGL而建立的一个生成更一般曲线和曲面包的工具。利用求值器可自动生成顶点坐标、法线坐标和纹理坐标。其次,要激活求值器,使其进行曲线映射。最后,要将求值器生成的各顶点连接起来可以生成一条完整的曲线。 创建一维求值器的函数为:glMap1d()或g1Map1f()函数,由它们生成所需坐标值。g1Map1d()函数原型为: void glMap1d( GLenum target,

16、GLdouble u1,GLdouble u2, GLint stride, GLint order, const GLdouble *points );Bzier曲线的绘制 其中,targret参数是个标识参数,它表示控制点应该组织成什么样的数据形式,以及当求值器被成功调用后输出数据的形式。它可以取表中的任意一个值。Bzier曲线的绘制 ul和u2参数表示调和函数的变量u的取值范围;stride参数表示控制点向量的维数,可以与target参数表示的含义不一致;order参数为控制点的个数;points参数为控制点地址指针。 创建一个一维曲线求值器之后,就应该激活求值器使其进入工作状态。由下述

17、语句完成: glEnable(GL_MAP1_VERTEX_3); glEnable()函数的参数应该与glMap1d()函数的第一个参数一致,当不再需要映射之后,相应地,就应该挂起求值器: g1Disable(GL_MAPl_VERTEX_3); Bzier曲线的绘制2曲线坐标的计算 为了能生成一条曲线,最后还要进行曲线坐标的计算和连接。该函数为:glEvalcoord1d()或glEvalCoord1f()。以glEvalcoord1d()为例,其原型为: void glEvalcoord1d(GLDouble u); 其中,u参数表示参数空间中u参数的取值。给定一个u值,就会产生一个曲线坐标。当用glEvalcoordl()函数生成曲线坐标之后,还要将这些坐标连接起来构成一条曲线。这可以通过glBegin()glEnd()函数对来完

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论