曲线理论基础 (PDF资料共享)

  [复制链接]
 楼主| smk729 发表于 2008-7-2 22:06:05
21

找来一堆看不懂的数学公式

关于NURBS曲线

NURBS曲线是Non-Uniform Rational B-Spline的缩写。直译为不等距有理化B样条曲线,即B样条曲线的一种,是由构成曲线的节点间距不等,并用有理式表达的曲线。B-Spline曲线由I.J.Schoerleig和美国犹他大学的R.F.Riesenfeld提出,它具有Spline曲线和Bziez曲线的优点,由Basis Spline函数构成曲线上的点叫做控制点,这个控制点的指定与变化可以控制曲线的形状。B-Spline曲线叫做节点(Knot),n次B-Spline曲线P(t)表达式如下




式中k次NURBS曲线的基函数Nik(t)由下述递推公式确定

                     

(i=0,1,……n, k>0)

上式中约定0/0=0

由此,n次B-Spline曲线由n-1次曲线联结而形成Spline曲线,B—Spline曲线改善了Spline的连续性。节点间距相等的叫Uniform Rational B-Spline,而节点间距不相等的叫Non-Uniform Rational B-Spline。严密地讲,前者只能近似表达圆柱、圆锥及球等,而后者改进了这一点。其它曲线的基本表达式是多项式,而NURBS曲线则是以有理式为特征的,在作为CAD数据传输交换标准的IGES中采用,主要是作为自由曲线的表达形式。除了容易描述曲线的局部变形以外,对圆柱、圆锥、球以至B-Spline曲线,Bzier所不能处理的双曲线也可以统一标准地表达出来,这是它的一大特征。

2 直线插补在加工中存在的问题

以往将曲线用微小直线逼近直线插补的指令方法,在以下几方面存在着问题。

1) 程序过大加工精度越高,程序指令条也就越多,精度提高1/2,则程序指令条增大2½倍。
2) 必须大量、高速输入程序。
3) 加工面起棱加工面直接反映加工误差,当误差大时,曲面上可以看到近似直线加工所带来的表面不平滑的现象。
4) 延长加工时间根据程序指令加工时,为减小运行冲击需要减速,其结果延长加工时间。

3 NURBS插补的优点

在NURBS插补时,在NC程序指令中,只有三类定义NURBS的数值,没有必要用大量的微小直线段的指令。此外,由于不是直线插补,而NC自身可以进行NURBS曲线插补,可以得到光滑的加工形状,从根本上解决直线插补加工所带来的问题。表现为以下几方面:

1) 程序条变少。
2) 无需向NC进行高速的程序传输。
3) 因为能得到光滑的加工形状,因此可以减少手工光整加工时间。
4) 可以缩短加工时间。与直线插补相比,速度变化平滑,可以缩短加工时间。

4 NURBS插补技术对曲线加工带来的优势

1) 减小程序指令条NURBS插补的程序指令格式见图1。

                     
                                           图1 NURBS插补指令格式


程序段从G06.2指令开始,NC装置读入G06.2后面的三组数据进行插补。这样按定义NURBS曲线的三组数据值,实现NURBS插补。所以,不需要象近似直线插补那样,需要大量的指令信息。程序变小后无需向NC高速传输。

对于模具外形加工,一般来说误差在10μm内时,与近似直线插补相比能减少1/2~1/3左右指令条。

2) NURBS插补的高速计算NC自身计算并生成对NURBS曲线的插补路径,其计算时间越来越短,插补点距变小,其光滑性得到了提高。

以加工曲率半径为R50mm,用0.2g(g为重力加速度)加速度高精度加工为例(图2)。



                             
                                 图2 插补中误差分析

在曲率半径r=50mm外形上,以v=18.8m/min速度,法线方向加速度0.2g加工时,NC装置每隔1ms插补长度l=0.313mm,给出进给指令,此时的误差Δδ为
Dd=l2/(8r)=0.3132/(8×50)=0.245(µm)

这样即使是非常高速的加工,利用NURBS插补也可以实现精度在1μm以内的高精度加工。

缩短加工时间近似直线插补时,为降低直线端速度冲击,
刀具进给速度就要降低,而一旦进给速度降低,就要反复加速。NURBS插补在机械允许的速度矢量方向变化的加速度范围内,以最高速度加工,在曲率一定的情况下,NURBS插补无需减速(图3)。


                              
                                                   图3 直线插补与插补的切削速度变化对比

此外,NURBS曲线插补还带来了相关的优良加工特性,如实现无手工打磨的高质量、光滑的精加工。最大地利用高速数控加工机床的CNC特性。

刀具切削力稳定,延长刀具寿命,可直接利用CAD/CAM NURBS曲线生成相应的刀轨文件等。


5 发展动向

软件方面的最新发展

基于Windows平台的3维CAD软件中主要有以下几个特点:

·在带有草图特征参数化实体造型中,有NURBS曲线和曲面生成功能。
·具有零件装配及干涉检查。
·强化3维图形转为2维图纸的功能。
·
PDM要求的方向靠近支持NURBS基于Windows的3维CAD软件。

硬件技术方面的最新进展

要实现NURBS曲线插补,NC设备必须具备NURBS插补执行功能。目前具有NURBS功能的控制系统主要有:FANUC的15—MB/16-MC;牧野的超级Hi2-NC;东芝机械的TOSNUC888等。
总之,从各方面的情况来看,NURBS插补所具备的平滑稳定的优越性将越来越被人们所重视,并在曲面加工中得到广泛的应用。NURBS插补技术已经成为NC制造技术的一项支撑性技术,它将大大地提高数控切削制造技术的整体水平。随着时间的推移,它的卓越的技术性能将会有更大的发展。

关于大陆地区Rhino原厂培训中心
Jessesn 发表于 2008-7-2 22:26:33
22
原帖由 wangfeiqq 于 2008-7-2 18:50 发表
学习来了:up

每增加一个编辑点的同时也会增加一个节点.每减少一个编辑点的同时也会减少一个节点.

J大是这个的理论吧.


暂时Rhino没有提供减少编辑点的指令,有提供增加编辑点的指令
编辑点的增加和减少确实回影响到knot点,但是他们之间的关系不是你说的这样
Knot点的多少和曲线的Degree有关系,和控制点有关系
节点数等于 ( 代表控制点的数量+ 阶数 - 1 ),所以插入一个节点会增加一个控制点,
移除一个节点也会减少一个控制点。要注意的是插入节点时可以不改变 NURBS 曲线的形状,
但通常移除节点必定会改变 NURBS 曲线的形状。
My 发表于 2008-7-2 22:37:25
23
我晕```````````
那弄来的这么多东东吖:o
老兄真好学!!!!
:up
wangfeiqq 发表于 2008-7-2 23:00:32
24
原帖由 jessesn 于 2008-7-2 22:26 发表


暂时Rhino没有提供减少编辑点的指令,有提供增加编辑点的指令
编辑点的增加和减少确实回影响到knot点,但是他们之间的关系不是你说的这样
Knot点的多少和曲线的Degree有关系,和控制点有关系
节点数等于 ( 代 ...


:playUp
 楼主| smk729 发表于 2008-7-3 09:02:26
25

B样条曲线原理

因为B样条曲面是在s,t两个方向上的两组B样条曲线组合而成的,了解了B样条曲线也就了解了B样条曲面,所以下面仅讲了B样条曲线。
沿B样条曲线的坐标位置可表示为:
其中,umin u umax 2 d n+1
n+1为控制点个数,Pk是第k个控制点,Bk,d是次数为2~d-1的多项式。
Bk,d(u)递归定义为:

请注意以下B样条性质:
  • u值域内,多项式次数为d-1
  • 对于n+1个控制点,曲线由n+1个混合函数描述
  • 每个混合函数Bk,d定义域为u值域的d子区间,以节点向量值uk为起点。
  • 参数u的值域由n+d+1个给定节点向量值分成n+d个子区间
  • 节点记为{u0u1u2,,un+d},生成的样条曲线仅定义在从节点值ud-1到节点值un+1区间上
  • 每个样条曲线段(在两个相邻节点值间)受d个控制点影响。
  • 一个控制点可以影响最多d个曲线段的影响。

非均匀样条:节点向量的值与间距可以为任意值值。这样我们可以在不同区间上得到不同的混合函数形状,为自由控制曲线形状提供了更大自由。

关于节点向量值:均匀与非均匀的主要区别在于节点向量的值。如果适当设定节点向量,可以生成一种开放均匀样条,它是均匀与非均匀的交叉部分。开放样条在两端的节点值会重复d次,其节点间距是均匀的。例如:
{0,0,1,2,3,3},(d=2n=3
{{0,0,0,1,2,2,2},(d=4,n=4)。
开放均匀B样条与贝泽尔样条性质非常类似,如果d=n+1(即多项式次数为n),那么开放B样条就变成了贝泽尔样条,所有节点值为01。如四个控制点的三次开放B样条,节点向量为:{0,0,0,0,1,1,1}

有理B样条:有理函数是两个多项式之比,有理样条(rational spline)是两上样条函数之比,有理B样条用向量描述为:
其中Pk是控制点位置,ωk是控制点Pk的权因子,其值越大,曲线越靠近控制点Pk
有理B样条有两大优点:
  • 提供了二次曲面的精确表达式,如圆、椭圆等,非有理样条只能逼近二次曲面,这样使用一个表达式��有理样条就可以模拟所有曲线形状了。
  • 有理样条相对透视观察变换是不变的,而非有理样条是可变的。
齐次坐标表达式用于有理样条,这是因为分母可以看成控制点四维表达式中的齐次因子,即,有理样条可以认为是四维非有理样条在三维空间的投影。

OpenGL中,提供了gluNurbsSurface命令来生成非均匀有理B样条。
procedure gluNurbsSurface (nobj: GLUnurbsObj;
sknot_count: GLint; sknot: PGLfloat;
tknot_count: GLint; tknot: PGLfloat;
s_stride, t_stride: GLint;
ctlpts: PGLfloat; sorder, torder: GLint; _type: GLenum);
(s/k)knot_count是节点数,(s/k)knot指向节点向量值,ctlpts指向控制点,(s/t)stride指定使用控制点数组中的哪一块(即可以定义一个很大的数组,每次使用其中的一块),(s/k)order样条函数次数。最后_type说明生成什么坐标(可以是纹理、法向、顶点等)。
注意,前面提到的n这里没有对应参数,控制点数:
n+1=(sorder-sknot_count)* (torder-tknot_count)
lyxj2 发表于 2008-7-12 13:14:47
26
高深的理论啊~~~
先把这个慢慢看懂了在说~~
:playUp
lyxj2 发表于 2008-7-12 13:42:18
27
基本上搞明白了~~
就和J大所说一样~~
节点就是是发动机,编辑点就是方向盘~~
我们是应用软件的,所以不需要精通这个到底是怎么来的~了解就好~~~
就好比我们开车,一般情况下不会学习发动机的原理,只需要学习点火,启动,等等,
至于楼主所说的编辑点和这个节点,我也看了楼主发的资料,说实话,确实看起来费劲,不过有一点,就是他的根本上还是节点的应用,我们现在用的控制点也好,编辑点也罢,都是转化后容易很多的命令,所以感谢这些研究的学者们,向你们致敬~~
还有,就是让我明白了节点的关系:       节点=控制点-阶数+1
也明白了为什么我们画线时为什么尽量少用控制点的原因,其实就是节点的原因,我们知道,节点越少,面就会越简单~~
感谢楼主,也感谢J大,希望后来的朋友都有所收获~~~:)
watleliang 发表于 2008-7-14 10:07:49
28
:playUp 节点就是发动机,编辑点就是方向盘~~
smalltotal 发表于 2008-10-26 13:16:25
29
好资料啊!!!
顶上去呵呵
leegp 发表于 2008-10-30 21:22:07
30
我靠
头晕:bumpAgain
您需要登录后才可以回帖 登录 | 注册成为会员

本版积分规则