您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 销售管理 > 产品建模中NURBS曲线的连续性研究
产品建模中NURBS曲线的连续性研究摘要:优秀的产品数据模型能够大大地提高设计生产各个环节的工作效率,本文以Rhino为例,探讨了建立NURBS数据模型中最基础而最重要的工作——调整曲线的连续性,提出了调整曲线从G0连续到G3以上连续性的几种方法。关键词:NURBS,曲线连续,产品建模一、曲线的几何连续性连续性在计算机辅助设计领域是一个非常重要的概念,大多数情况下因为无法用一条曲线(曲面)来完整地描述产品,需要多条曲线(曲面)拼接才能实现,那么无论从产品的外观设计需要、力学结构需要、加工需要等方面,都要求各个拼接曲线(曲面)之间保持良好的光滑和统一性,这种统一性表现在数学上就要用曲线(曲面)的连续性来保证。在建立数据模型的时候,曲面都是在曲线的基础上建立起来的,曲线的质量直接决定了曲面的质量,因此本文以Rhino为例着重探讨建模中NURBS曲线的连续性问题。在数学上,常用参数连续的概念C0、C1、C2来描述两端曲线曲面之间的连续性关系,“如果曲线在连接处具有直到n阶连续导矢,即n次连续可微,这类光滑度称之为nC或n阶参数连续性”[1],也就是说如果两段曲线在连接点具有对参数u的相同的n阶导数,那么就称它们为在连接点n阶参数连续。例如2C连续是指两段曲线在连接点处2阶导数相等,这对于两段拼接曲线的参数提出了严格的要求。在工程应用上,人们发现数学上严格的参数连续性并不能保证两段曲线曲面的光滑,因此采用了相对宽松的几何连续性nG(GeometricContinuity)概念,几何连续性延续了参数连续的部分要求,但主要着眼于工程产品的表面视觉特征。G0连续(位置连续):两条曲线的端点位于同一位置,即第一条曲线的末端点与第二条曲线的首端点重合,位置连续是两条曲线摆脱不连续状态的最低条件。G1连续(相切连续):两条曲线符合G0连续,而且在端点重合的地方切线方向相同。G2连续(曲率连续):两条曲线满足G1连续条件,而且在端点重合的地方曲率半径相同。G3连续:如果两条曲线在连接点对各自弧长的3阶导数相等,则两条曲线在连接点具有3阶连续性,它的几何意义是两条曲线的曲率变化率相等。G4连续:可以理解为两条曲线在连接点曲率变化率的变化率相等,更高阶的连续性可以计算,但很难有直观的几何意义。在产品设计实践中,应用比较普遍地是G0、G1和G2连续,对曲面要求比较高的产品如汽车外壳、飞机外壳等则要求更高的曲线曲面间的连续性。二、调整两条曲线连续性在Rhino中所建的Nurbs曲线可以是单条曲线,也可以是多条曲线拼接而成,相应地曲线连续性问题就分为单条曲线连续性和多条曲线间连续性两种情况。单条曲线分为单跨距曲线和多跨距曲线两种,曲线内是处处连续的,曲线内不同跨距间连续性阶数是曲线的阶数减一,比如多跨距3阶曲线,其跨距间可达到2阶连续;多跨距5阶曲线,其跨距间可达到4阶连续,依次类推。在现实设计和生产中,产品形状千变万化,很多时候用单条曲线很难表达产品形状,转而用多条曲线拼接来表达形态。所以目前在生产中遇到最多的就是如何拼接多条曲线,使之达到更好的连续性。下面我们以两条曲线为例,讨论如何使之连续。在Rhino中,调整拼接曲线的连续性有自动和手动两种方法。对于自动调整的方法,程序提供了调节曲线间连续性的工具(衔接曲线),可以进行位置连续、切线连续、曲率连续等三种连续性操作。这个工具可以把一条曲线变形从而与另一条曲线形成特定的连续性关系,变形的曲线节点只改变了控制点的位置,若衔接成位置连续,曲线2移动一个控制点;若衔接成切线连续,则曲线2要移动两个控制点到新位置;若衔接成曲率连续,曲线2要移动3个控制点到新位置。对于手动调整连续性的方法,则情况比较复杂,我们在这里简单地讨论下其方法。(一)、手动调整拼接曲线到G1连续:如图1左图所示,两条3阶曲线1和2首尾连接,是位置连续的关系,我们手动移动曲线2的第二个控制点b2,使之与曲线1端点的前两个控制点a1、b1共线,则曲线1、2在连接点切线方向相同,达到G1连续,如图1右图所示。b2的位置比较灵活,只要它满足前述共线条件,曲线1、2始终达到G1连续。图1调整两条曲线至G1连续具体手动调整到G1连续的方法有很多种,可以以a1、a2的重合点为中心点,画出一段直线,然后分别移动控制点b1和b2,使它们都位于此直线上,从而可以使a1、b1、a2、b2这四点共线。也可以用工具沿着a1、b1绘出一条直线,然后把b2移动到这条直线上,也可以实现相同的目的。(二)、手动调整拼接曲线到G2连续:既然手动移动b2的位置可以很容易地使曲线2与曲线1达到切线连续,那么依此类推,有没有方法我们可以手动移动控制点,使a2、b2、c2同a1、b1、c1保持特定的位置关系,从而使曲线2与曲线1达到曲率连续呢?我们下面来讨论一下。两条曲线达到曲率连续的时候,它们连接点必须首先达到G0和G1连续,在此基础上两条曲线方程在连接点的二阶导数也相等。B样条曲线的k阶导数的一般方程为①:0nkkki,pkii(u)N(u)QP其中1111010ikkkiiiipikkpk()kuuPPPP(1)式中,iP表示曲线上第i个控制点,p是曲线阶数,k是导数阶数,iu是节点。这表明,B样条曲线的导数与曲线控制点和节点结构有特定的函数关系。这个公式比较复杂,我们只例举特殊情况下的特例,看看它的几何意义。如图2一条3阶单跨距曲线,我们利用公式(1)求它在端点的切向量和曲率向量。图2一条3阶单跨距曲线图3两条3阶单跨距曲线曲线端点的切向量就是曲线方程在端点处的一阶导数,曲率向量就是曲线在端点的二阶导数,由已知条件可知,3阶单跨距曲线的节点矢量为{0,0,0,1,1,1},进而可由式(1)计算出曲线在首端点P0(00uu)点和末端点P3(31uu)点的一阶导数(切向量)分别为:10103(u)()QPP13323(u)()QPP二阶导数(曲率向量)为:2001262(u)()QPPP2312362(u)()QPPP由计算结果我们可以看出,曲线在起点的切向量与前两个控制点有关,曲率向量与前三个控制点有关;曲线在末点的切向量与最后两个控制点有关,曲率向量与最后三个控制点有关。如图3所示两条3阶B样条曲线,曲线1的4个控制点是0P、1P、2P、3P,曲线2的4个控制点是0R、1R、2R、3R,其中点3P和0R重合,两条曲线达到位置连续关系。如果两条曲线要达到G1连续,则它们的连续性条件可以写成②:1032()RRPP(2)是一个正的常数,等于两条线段的长度比。若要两条曲线曲率连续,它们在重合点的曲率向量应该相等,结合切线连续的条件,G2连续的条件可以写成0122RRR=21232()PPP(3)此处就是切线连续的两段线段长度比。图4两条3阶单跨距曲线图5两条曲线曲率连续如图4所示,使=1,也就是线段23PP与01RR长度相等,再使用(衔接曲线)使它们达到曲率连续,则1232PPP=0122RRR可知线段12PR平行于线段21PR。因此,如果要手动调整控制点使两条曲线达到曲率连续,可以先使23PP和01RR共线并使之长度相等,然后过点1P画直线平行于21PR,再将曲线2的第三个控制点2R移动到这个直线上,则两条曲线达到曲率连续。当然这只是一个特例,我们再考虑更普遍的也就是线段23PP与01RR长度不相等的情况,使=0.5,如图5所示,则有0122RRR=1230252.()PPP(4)上式的几何意义为,在线段12PP上取一点A,使2PA=0.2512PP,过A画一条直线平行于21PR,则2R点位于这条直线上时,可以满足式(4)的连续性条件,则两条曲线达到曲率连续。由此,我们可总结出手工衔接曲线至曲率连续的方法和适用条件:1、若采用手工调整控制点使上述两条曲线达到曲率连续,首先使23PP、01RR共线达到切线连续,并确定二者长度比0123RRPP值,然后在12PP(或延长线)上选一点A,使212PAPP=2,再过A做23PP平行线,然后结合捕捉工具将控制点2R移动到此平行线上,则可使两条曲线达到曲率连续。2、由式(1)可知,曲线导数值与曲线控制点以及节点的结构有函数关系,上述手工调整控制点的方法推导,是建立在两条曲线端点节点结构相同的基础上,如果两条曲线端点节点结构不同,会推导出不同的结果,则此方法不适用。在端点位置节点结构相同的曲线包括:(1)两条曲线都是单跨距曲线,阶数相同,如两条5阶单跨距曲线;(2)两条曲线都是多跨距曲线,阶数相同,节点均匀;(3)两条曲线阶数相同,如果是非均匀节点,节点矢量应该是首尾对称结构,例如结构为00233200000000,,,2,5,8,1,1,1的节点矢量满足要求,观察节点矢量中下标标出的节点间距,相对于中间的节点5前后对称,这样就保证了曲线在起始点和终点的节点结构相同。3、在建模应用中,应用(衔接曲线)结合(调节曲线端点转折)指令来调节曲线连续性和曲线形态比较高效,我们可以把计算工作交给计算机来完成。手工调曲率连续可应用在一些特殊的情况下,譬如想把一条曲线的起始端和末尾端连接并调整成曲率连续,从而把曲线调成曲率连续的环形,如图6。图6把一条曲线调整首尾曲率连续三、更高阶的连续性如果曲面的质量要求高于G2连续,就需要创造更高阶的曲线连续性,但是在Rhino中没有提供G2以上的连续性工具,无法把两条曲线匹配成G3或G4连续性,只能通过间接的方法来建立G2以上的曲线。最有效的办法就是创建高阶的单条曲线,这条曲线可以有多个节点跨距,曲线形态越复杂,就增加越多的节点跨距来实现,这种多跨距曲线的连续性是(阶数-1),譬如多跨距的3阶曲线,它在节点的连续性是G2连续,这是NURBS曲线的基本性质。如图7所示,3阶B样条曲线的基函数由跨4个跨距的4段不同的函数组合而成,函数表达式已在图中示出,我们可以算出,这4个函数在节点的位置具有相同的2阶导数,也就是曲率连续的关系,这就决定了3阶NURBS曲线各个分段曲线在节点是G2连续的关系。依此类推,如果我们要创建一条处处具有最低G3连续的曲线,那么可图73阶B样条基函数图84阶和5阶曲线的曲率图以创建一条4阶曲线,如果需要一条处处G4连续的曲线,那么就需要创建5阶曲线,如图8所示4阶和5阶曲线曲率图,4阶分段曲线在节点不仅曲率相同,曲率变化率也相同,5阶曲线的曲率图形与4阶曲线相比已看不出区别了,曲率图最高只能检测曲率的差异,更高阶的连续性就需要更高阶的连续性检测工具才能看出不同。如果现有两条已经建好的曲线,我们如果想把这两条曲线匹配成G3连续的关系,该如何操作呢?在Rhino中没有现成的工具能够实现这个控能,但我们也可以通过间接的方法来实现:我们先把这两条3阶曲线升为4阶,再把它们调整成曲率连续并合并成一条曲线,然后再把曲线内的重复节点删除,那么这条曲线基本维持了原有的形状,并且在曲线内处处达到G3连续。依此类推,更高阶的连续性也可以通过同样的方法来实现。具体方法如下:曲线升阶的基本算法是要计算升阶后的曲线新控制点位置。LesPiegl&WayneTiller介绍了一种非常简便的曲线升阶的算法。如图9所示一条3阶曲线(图中黑色虚线),为简便起见,我们先讨论单跨距曲线,它没有内节点,有6个端节点和4个控制点,节点矢量为{0,0,0,1,1,1},把它升级到4阶曲线以后(图中红色线条),它仍然是单跨距曲线,但是它必须增加到8个节点,节点矢量变为{0,0,0,0,1,1,1,1},控制点数必然增加到5个。知道了升阶以后的节点矢量,剩下的就是要计算出升阶后的各个新控制点位置,然后就可以绘出升阶后的曲线。图93阶曲线升阶到4阶假设原3阶曲线控制点为0P、1P、2P、3P,升阶到4阶后控制点变为0'P、1'P、2'P、3'P、4'P,按照LesPiegl&WayneTiller的算法,升阶后各个新控制点为1'(1)iiiiiPPP其中1iip式中i是控
本文标题:产品建模中NURBS曲线的连续性研究
链接地址:https://www.777doc.com/doc-2744175 .html