NURBS 曲线中的节点参数是什么意思.节点参数的意义是什么

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/05 14:13:24

NURBS 曲线中的节点参数是什么意思.节点参数的意义是什么
NURBS 曲线中的节点参数是什么意思.节点参数的意义是什么

NURBS 曲线中的节点参数是什么意思.节点参数的意义是什么
NURBS是Non-Uniform Rational B-Splines的缩写,是非统一有理B样条的意思.具体解释是:
.Non-Uniform(非统一):是指一个控制顶点的影响力的范围能够改变.当创建一个不规则曲面的时候这一点非常有用.同样,统一的曲线和曲面在透视投影下也不是无变化的,对于交互的3D建模来说这是一个严重的缺陷.
.Rational(有理):是指每个NURBS物体都可以用数学表达式来定义.
.B-Spline(B样条):是指用路线来构建一条曲线,在一个或更多的点之间以内插值替换的.
简单地说,NURBS就是专门做曲面物体的一种造型方法.NURBS造型总是由曲线和曲面来定义的,所以要在NURBS表面里生成一条有棱角的边是很困难的.就是因为这一特点,我们可以用它做出各种复杂的曲面造型和表现特殊的效果,如人的皮肤,面貌或流线型的跑车等.
一条NURBS曲线中有四个重要的定义项目:degree值,Control points控制点,knots节点和evaluation rule评定的规则.
degree 值
degree的值是一个正整数.
这个值通常为1,2,3或5.RHINO的线段和复合线段的degree的值为1.圆degree的值为2,而大部分RHINO的自由曲线的degree的值为3或5.RHINO所使用的NURBS曲线的degree的值可以设置从1到32.而通常我们把这些degree的值,称之为Linear,Quadratic, Cubic, Quintic. Linear代表着degree的值为1,Quadratic代表着degree的值为2, Cubic代表着degree的值为3 ,Quintic代表着degree的值为5.
你可以参阅参考文献里关于NURBS曲线的order部分.NURBS曲线的order是个正整数,且等于degree+1.所以degree的值等于order –1.
在改变NURBS曲线的degree的值的过程中,你有可能只增加degree的值而不影响到NURBS曲线的形状.但是,你无法在减小degree的值的过程中不影响到NURBS曲线的形状.RHINO所提供的工具能让你自由地设定NURBS曲线的degree的值,从1到32.
Control points 控制点
Control points最少是degree+1个点.
移动控制点,是改变NURBS曲线最简单的方法.RHINO提供了很多方法来移动控制点.如果需要有较大弹性的自由曲面,你可以只使用鼠标来快速的移动和改变控制点,以绘制你的模型.而相对于准确性要求较高的曲线,RHINO则提供了其它精确性高的工具,以供使用.
Control points有一个相关的值---Weight.除了少数例子外,weight的值通常是正数.Control points是一串至少是degree+1个点,此曲线状况称之为non-rational;而如果weight的值并不完全相同时,此曲线状况称之为rational.NURBS曲线中的R为rational的缩写.但这只是代表这条曲线有可能是rational.在范例里,有大部分的NURBS曲线都是non-rational.只有一些NURBS曲线是rational,如:圆,椭圆等明显的案例.RHINO提供一些工具来检测和更改Control points的weight值.
knots节点
knots节点是一串degree+N-1的数字,其中N为Control points的数字编号.有时我称这串数字为knot vector.在这里的vector并不是指3-D向量或方向性.
这串节点数字必须符合一些技术上的条件.这里列出了几项符合knot技术上所需要的条件值.基本的条件为:这连串的数字必须相同,或顺序越后的数字越大,而且如果数字重复了,重复的次数不可以超过degree的值.例如一degree的值为3的NURBS曲线,其Control points的数量为11,而这串数字为0,0,0,1,2,2,2,3,7,7,9,9,9,符合knot数字串的要求.但假如knot数字值为0,0,0,1,2,2,2,2,7,7,9,9,9,这就不符合技术上所需要的条件值了.因为有4 个2,已超出了degree的值3的数量.
相同的knot数字值的数量,我们称之为multiplicity.在上一个范例中,符合了knot技术上所需要的条件值,其knot值为0的有multiplicity 3,其knot值为1的有multiplicity 1,其knot值为2的有multiplicity 3,其knot值为7的有multiplicity 2,其knot值为9的有multiplicity 3.当knot的multiplicity值与其degree的值一样时,我们将之称为Full – multiplicity.在上一个范例中,knot的值为0,2,9,都是Full – multiplicity.当knot的multiplicity值为1时,我们将之称为Simple – multiplicity.在上一个范例中,knot的值为1,3,都是Simple – multiplicity.
假如一曲线其knot的值开始于Full – multiplicity,然后接着Simple – multiplicity,结尾又是Full – multiplicity,而且其值之间的间隔相同,那这个knot称之为uniform.例如一NURBS曲线,其degree的值为3,Control points的数量为7,knot的值为0,0,0,1,2,3,4,4,4,那此曲线就可称之为uniform曲线.而假如knot的值为0,0,0,1,2,5,6,6,6,那此曲线就不是uniform曲线,我们称之为non-uniform.NURBS里的NU字母就是non-uniform的缩写.表示knots节点在NURBS曲线中是允许non-uniform的情形.
相同的knot数字值的数量,如果集中在值的中央部位,那这一NURBS曲线是较不圆滑的.例如有一曲线其knot值的中央有一Full – multiplicity,那就是表示此NURBS曲线会被弯成一锐角.因此,有些人会想要以增加或减少knots的数量,然后调整Control points使得曲线变得更加平顺或更锐利.RHINO提供了工具让你自由的增加或减少knots的数量.之前有提到过knots的值为degree+N-1,其N为Control points的值.所以当你增加knots的数量,同时也增加了Control points的数量;减少knots的数量,同时也减少了Control points的数量.knots的数量可以被增加,而不会影响到NURBS曲线的外形.而在一般情况下,减少数量会影响到NURBS曲线的外形.RHINO提供了一个减少knots的进阶工具,当你删除Control points时,它会自动调整knots的位置到最适当的位置.
Knots和control points
一般人常会误解,在NURBS曲线里的一个Control points会对应一个knot.而这种情况通常只会发生在degree的值为1的NURBS曲线上(通常是polylines).在degree的值较高的NURBS曲线上,是由degree+1个Control points群组对应2倍degree值的knots群组.例如:假设我们有一个degree值为3的NURBS曲线,其Control points为7和knots为0,0,0,1,2,5,8,8,8.这时,前四个Control points和前六个knots为一组.而第二到第五个Control points和knots 0,0,1,2,5,8,为一组.而第三到第六个Control points和knots 0,1,2,5,8,8为一组.最后四个Control points和最后六个knots为一组.
现在还有些软件使用旧版本的NURBS转换法.旧版本的NURBS转换法在计算knots值时,须在总额为degree+N+1 knots再额外多加两个knots值.当RHINO在输入或输出NURBS几何资料到这些软件时,会自动地增加或减少两个多余的knots值以符合其正确性.