产品建模中NURBS曲线的连续性研究

2025-04-28

图6 把一条曲线调整首尾曲率连续

三、更高阶的连续性

如果曲面的质量要求高于G2连续,就需要创造更高阶的曲线连续性,但是在Rhino中没有提供G2以上的连续性工具,无法把两条曲线匹配成G3或G4连续性,只能通过间接的方法来建立G2以上的曲线。最有效的办法就是创建高阶的单条曲线,这条曲线可以有多个节点跨距,曲线形态越复杂,就增加越多的节点跨距来实现,这种多跨距曲线的连续性是(阶数-1),譬如多跨距的3阶曲线,它在节点的连续性是G2连续,这是NURBS曲线的基本性质。

如图7所示,3阶B样条曲线的基函数由跨4个跨距的4段不同的函数组合而成,函数表达式已在图中示出,我们可以算出,这4个函数在节点的位置具有相同的2阶导数,也就是曲率连续的关系,这就决定了3阶NURBS曲线各个分段曲线在节点是G2连续的关系。依此类推,如果我们要创建一条处处具有最低G3连续的曲线,那么可

图7 3阶B样条基函数 图8 4阶和5阶曲线的曲率图

以创建一条4阶曲线,如果需要一条处处G4连续的曲线,那么就需要创建5阶曲线,如图8所示4阶和5阶曲线曲率图,4阶分段曲线在节点不仅曲率相同,曲率变化率也相同,5阶曲线的曲率图形与4阶曲线相比已看不出区别了,曲率图最高只能检测曲率的差异,更高阶的连续性就需要更高阶

的连续性检测工具才能看出不同。

如果现有两条已经建好的曲线,我们如果想把这两条曲线匹配成G3连续的关系,该如何操作呢?在Rhino中没有现成的工具能够实现这个控能,但我们也可以通过间接的方法来实现:我们先把这两条3阶曲线升为4阶,再把它们调整成曲率连续并合并成一条曲线,然后再把曲线内的重复节点删除,那么这条曲线基本维持了原有的形状,并且在曲线内处处达到G3连续。依此类推,更高阶的连续性也可以通过同样的方法来实现。具体方法如下:

曲线升阶的基本算法是要计算升阶后的曲线新控制点位置。Les Piegl & Wayne Tiller介绍了一种非常简便的曲线升阶的算法。如图9所示一条3阶曲线(图中黑色虚线),为简便起见,我们先讨论单跨距曲线,它没有内节点,有6个端节点和4个控制点,节点矢量为{0,0,0,1,1,1},把它升级到4阶曲线以后(图中红色线条),它仍然是单跨距曲线,但是它必须增加到8个节点,节点矢量变为{0,0,0,0,1,1,1,1},控制点数必然增加到5个。知道了升阶以后的节点矢量,剩下的就是要计算出升阶后的各个新控制点位置,然后就可以绘出升阶后的曲线。

图9 3阶曲线升阶到4阶

假设原3阶曲线控制点为P0、P1、P2、P3,升阶到4阶后控制点变为P0'、P1'、

P2'、P3'、P4',按照

Les Piegl & Wayne Tiller的算法,升阶后各个新控制

Pi'?(1??i)Pi??iPi?1

点为

其中 ?i?i p?1式中i是控制点序号,p是曲线阶数,在此例中p=3,我们可以算出各个新控制点为

P0'?P0

P1'?P2'?P3'?31P1?P0 4411P2?P1 2213P3?P2 44P4'?P3

至此,升阶后的节点矢量以及控制点都已算出,升阶后曲线的数据结构已经非常明确了。在几何外观上,升阶后的曲线与原曲线完全一样,但在数据结构上则不一样。

刚才讨论了单跨距曲线的升阶,如果曲线是一条有内节点、多跨距的曲线呢?Prautzsch、Cohen等对这种情况给出了简便算法。如图10所示,一条有内节点a的3阶曲线,首先在内节点a处插入2次节点,使a处变成全复节点,这样就把整条曲线分成1和2两段单跨距曲线,再分别对这两段曲线应用上述升阶计算过程,计算出新的控制点,然后再把刚才插入a处的节点删掉2次,完成整条曲线的升阶计算。

图10 多跨距3阶曲线升阶到4阶

注意,升阶后曲线的节点重复度会增加,相应地控制点数量也会增加,

3阶曲线升到4阶后,端节点由3重节点增加到4重节点,图10所示的内节点a也会变成复节点。计算过程中,原来a处是一个单节点,在此处插入两个节点把曲线分成两个单跨距曲线后,a点增加到3个节点,升阶到4阶后,a点又升成4个节点,为保证曲线不变形,完成升阶后再删除插入的2个节点,则a点还剩下2个节点。因此原先曲线节点矢量是

{0,0,0,1,2,2,2},升阶以后节点矢量改变为{0,0,0,0,1,1,2,2,2,2},节点数量增加到10个,因为“节点数=控制点数+阶数-1”,所以升阶以后控制点数量增加到7个。因此曲线升阶后所有节点都会增加,增加的节点数等

于增加的阶数,假如把10中的3阶曲线升阶到5阶,增加了2阶,那么a点的节点数将从1个增加到3个,a点将变成3重节点。

刚才讨论的算法是保证升阶后的曲线与原曲线完全一致,不会产生形变,如果我们不希望内节点在升阶后变成重节点,当然可以把重复的节点删掉,但是曲线会产生形变而与原曲线不完全一致。 对于设计师来说,如果曲线变形量非常微小,不影响产品形态的设计,那么这种方法是完全可以接受的。

图11 在曲面上插入节点

图12 利用插入节点调整曲面形状

图13 删除曲面上复节点,使曲面更光滑 图14 完成的耳机模型

以上调整曲线曲面连续性的方法以及插入删除节点的方法,是建模实践中经常使用的。笔者在一款耳机的建模中,就经常遇到曲线曲面连续性问题,通过灵活运用上述手工调整曲线曲面连续的方法,使建模的过程更加的顺畅,所建模型的质量更好。如图11-图12,是在耳机头带模型上插入更多的节点以增加更多的可控点,图13是调整好曲面连续性后,删除曲面上复节点,可以使曲面跟光顺,图14-图15是最终完成的模型及渲染图。

图15 完成的耳机渲染图

四、结语

计算机已经全面介入到设计领域,建立产品的数据模型在设计流程中占有越来越重要的作用,而在数据建模中曲线、曲面的连续性质量是构造高质量产品数据模型的关键所在。因此,产品设计师深入理解曲线、曲面连续性的本质,熟练掌握调整曲线、曲面连续性的各种方法,对于提高设计效率和设计质量具有事半功倍的作用。此外,在实际设计应用中,各种建模工具比如RHINO、ALIAS、CATIA等等,其曲线曲面的模型都是采用了NURBS曲线曲面来建构,了解了URBS的数学原理无疑有助于设计师更加深刻地理解各种建模工具的原理和作用,能够建出更简单、更准确、更优美、更高质量的数字模型。同时,设计师还可以利用这些数学工具根据自己的设计需求进行软件的二次开发,开发出更高效和灵活的工具。本文中探讨的方法对于设计建模具有重要的启发意义。

Les Piegl & Wayne Tiller , The NURBS Book , Springer , 2nd. ed., 1997,p97 ②

莫蓉.吴英.常智勇. 计算机辅助几何造型技术. 科学出版社.2004年2月第一版.第66页

参考文献

(1) 莫蓉.吴英.常智勇. 计算机辅助几何造型技术. [M]. 科学出版社.2004年2月第一版.

(2) Les Piegl & Wayne Tiller , The NURBS Book . [M]. Springer , 2nd. ed

(3) 王国瑾.汪国昭.郑建民.计算机辅助几何设计. [M]. 高等教育出版社.施普林格出版社2001年7月第一版

(4) David F.Rogers. An Introduction to NURBS With Historical Perspective . [M]. MORGAN KAUFMANN PUBLISHERS.2001

(5) 孙漠舟. 非流形表面转化算法研究 . 中南大学硕士学位论文 . 2007年5月. (6) 同济大学应用数学系.高等数学. [M]. 高等教育出版社. 2003年8月第

(7) 杨开富.NURBS造型理论及其在产品造型设计中的应用. [J]. 包装工程.2003年6月 (8) 王仁宏.李崇君. 朱春钢.计算几何教程. [M]. 科学出版社. 2008年6月

产品建模中NURBS曲线的连续性研究

摘要:优秀的产品数据模型能够大大地提高设计生产各个环节的工作效率,本文以Rhino为例,探讨了建立NURBS数据模型中最基础而最重要的工作——调整曲线的连续性,提出了调整曲线从G0连续到G3以上连续性的几种方法。

关键词:NURBS,曲线连续,产品建模

一、 曲线的几何连续性

连续性在计算机辅助设计领域是一个非常重要的概念,大多数情况下因为无法用一条曲线(曲面)来完整地描述产品,需要多条曲线(曲面)拼接才能实现,那么无论从产品的外观设计需要、力学结构需要、加工需要等方面,都要求各个拼接曲线(曲面)之间保持良好的光滑和统一性,这种统一性表现在数学上就要用曲线(曲面)的连续性来保证。在建立数据模型的时候,曲面都是在曲线的基础上建立起来的,曲线的质量直接决定了曲面的质量,因此本文以Rhino为例着重探讨建模中NURBS曲线的连续性问题。

在数学上,常用参数连续的概念C0、C1、C2来描述两端曲线曲面之间的连续性关系,“如果曲线在连接处具有直到n阶连续导矢,即n次连续可微,这类光滑度称之为C或n阶参数连续性” [1],也就是说如果两段曲

n

线在连接点具有对参数u的相同的n阶导数,那么就称它们为在连接点n阶参数连续。例如C连续是指两段曲线在连接点处2阶导数相等,这对于

2两段拼接曲线的参数提出了严格的要求。在工程应用上,人们发现数学上严格的参数连续性并不能保证两段曲线曲面的光滑,因此采用了相对宽松的几何连续性G (Geometric Continuity)概念,几何连续性延续了参数连

n续的部分要求,但主要着眼于工程产品的表面视觉特征。

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阶导数的一般方程为①:

Qk(u)??Ni,p?k(u)Pik

i?0n?k?Pi其中 Pik???p?k?1(Pk?1?Pk?1)i?1i?u?i?p?1?ui?kk?0?? (1) k?0???式中,Pi表示曲线上第i个控制点,p是曲线阶数,k是导数阶数,ui是节点。这表明,B样条曲线的导数与曲线控制点和节点结构有特定的函数关系。这个公式比较复杂,我们只例举特殊情况下的特例,看看它的几何意义。如图2一条3阶单跨距曲线,我们利用公式(1)求它在端点的切向量和曲率向量。

图2 一条3阶单跨距曲线 图3 两条3阶单跨距曲线

曲线端点的切向量就是曲线方程在端点处的一阶导数,曲率向量就是曲线在端点的二阶导数,由已知条件可知,3阶单跨距曲线的节点矢量为{0,0,0,1,1,1},进而可由式(1)计算出曲线在首端点P0(u?u0?0)点和末端点P3(u?u3?1)点的一阶导数(切向量)分别为: Q(u)?3(P?P) Q(u二阶导数(曲率向量)为:

010113)?3(P3?P2)

Q(u)?6(P?2P?P)

由计算结果我们可以看出,曲线在起点的切向量与前两个控制点有关,曲

20 Q(u)?6(P0?2P1?P2)23123率向量与前三个控制点有关;曲线在末点的切向量与最后两个控制点有关,曲率向量与最后三个控制点有关。

如图3所示两条3阶B样条曲线,曲线1的4个控制点是P0、P1、P2、

P3,曲线

2的4个控制点是R0、R1、R2、R3,其中点P3和R0重合,两条曲线

达到位置连续关系。如果两条曲线要达到G1连续,则它们的连续性条件可以写成②:

R1?R0??(P3?P2) (2)

?是一个正的常数,等于两条线段的长度比。

若要两条曲线曲率连续,它们在重合点的曲率向量应该相等,结合切线连续的条件,G2连续的条件可以写成

R0?2R1?R2= ?2(P1?2P2?P3) (3)

此处?就是切线连续的两段线段长度比。

4 两条3阶单跨距曲线 图5 两条曲线曲率连续

如图4所示,使?=1,也就是线段P2P3与R0R1长度相等,再使用(衔接曲线)使它们达到曲率连续,则

P1?2P2?P3=R0?2R1?R2

可知线段P1R2平行于线段P2R1。

因此,如果要手动调整控制点使两条曲线达到曲率连续,可以先使P2P3

和R0R1共线并使之长度相等,然后过点P1画直线平行于P2R1,再将曲线2的第三个控制点R2移动到这个直线上,则两条曲线达到曲率连续。当然这只是一个特例,我们再考虑更普遍的也就是线段P2P3与R0R1长度不相等的情况,使?=0.5,如图5所示,则有

R0?2R1?R2=0.25(P1?2P2?P3) (4)

上式的几何意义为,在线段P1P2上取一点A,使P2A=0.25P1P2,过A画一条直线平行于P2R1,则R2点位于这条直线上时,可以满足式(4)的连续性条件,则两条曲线达到曲率连续。

由此,我们可总结出手工衔接曲线至曲率连续的方法和适用条件: 1、若采用手工调整控制点使上述两条曲线达到曲率连续,首先使P2P3、R0R1共线达到切线连续,并确定二者长度比??R0R1值,然后在P1P2(或延长线)上选一点

移动到此平行线上,则可使两条曲线达到曲率连续。

2、由式(1)可知,曲线导数值与曲线控制点以及节点的结构有函数关系,上述手工调整控制点的方法推导,是建立在两条曲线端点节点结构相同的基础上,如果两条曲线端点节点结构不同,会推导出不同的结果,则此方法不适用。在端点位置节点结构相同的曲线包括:

(1)两条曲线都是单跨距曲线,阶数相同,如两条5阶单跨距曲线; (2)两条曲线都是多跨距曲线,阶数相同,节点均匀;

(3)两条曲线阶数相同,如果是非均匀节点,节点矢量应该是首尾对称结

?构,例如结构为??0,?0,?0,?2,?5,?8,?10,?10,?10?的节点矢量满足要求,观察节点矢

A,使P2AP1P2=?,再过A做P2P3平行线,然后结合捕捉工具将控制点R22

P2P3量中下标标出的节点间距,相对于中间的节点5前后对称,这样就保证了曲线在起始点和终点的节点结构相同。

3、在建模应用中,应用(衔接曲线)结合(调节曲线端点转折)指令来调节曲线连续性和曲线形态比较高效,我们可以把计算工作交给计算机来完成。手工调曲率连续可应用在一些特殊的情况下,譬如想把一条曲线的起始端和末尾端连接并调整成曲率连续,从而把曲线调成曲率连续的环形,如图6。

?00233200?

参考文献

(1) 莫蓉.吴英.常智勇. 计算机辅助几何造型技术. [M]. 科学出版社.2004年2月第一版.

(2) Les Piegl & Wayne Tiller , The NURBS Book . [M]. Springer , 2nd. ed

(3) 王国瑾.汪国昭.郑建民.计算机辅助几何设计. [M]. 高等教育出版社.施普林格出版社2001年7月第一版

(4) David F.Rogers. An Introduction to NURBS With Historical Perspective . [M]. MORGAN KAUFMANN PUBLISHERS.2001

(5) 孙漠舟. 非流形表面转化算法研究 . 中南大学硕士学位论文 . 2007年5月. (6) 同济大学应用数学系.高等数学. [M]. 高等教育出版社. 2003年8月第

(7) 杨开富.NURBS造型理论及其在产品造型设计中的应用. [J]. 包装工程.2003年6月 (8) 王仁宏.李崇君. 朱春钢.计算几何教程. [M]. 科学出版社. 2008年6月


产品建模中NURBS曲线的连续性研究.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:无尘无粉医用手套、检查手套生产线可行性研究报告

相关阅读
本类排行
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 7

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219