我试图了解NURBS曲线(稍后再说!),但在理解其内部工作原理时遇到了一些麻烦。有人可以向我解释几件事吗?正如我从Bezier曲线得出的那样,将两者进行比较特别有用。参数u是否也从0变为1?
如何“添加细节”到曲线?我的意思是,如果我需要描述一个更复杂的形状,那么我将简单地将多个Beziers“缝合”在一起。或较少地,增加程度。我知道我也可以增加NURBS的度数,并排放置多个NURBS曲线,但是这应该怎么做?
至少对我来说,维基百科的文章对此不太清楚“结向量”。反正是什么?


评论

对于一个问题,这有点太多了。基本上,我可以在几个小时内完成关于该主题的介绍性演讲。深入介绍De casteljanu的使用方法和de boor的算法将花费我太多时间。

因此,我想将第3、5和6个问题分解为单独的问题,以便回答和理解更多的进餐量。

@joojaa当然,我可以将问题分解,仅需一秒钟...

因此,问题3、5和6被拆分为单独的问题。

#1 楼

B样条曲线和贝塞尔曲线或多或少是同一事物的平行发明。 Beziers尝试从拟合切线的想法开始的地方。 B样条线从基函数的概念开始。 NURB样条曲线(或实际上的有理部分)只是B样条曲线的概括,因此您可以描述准确的圆锥截面*,因为它们在工程中特别有用。 NURB样条术语。这些曲线的原理与贝塞尔曲线有所不同。首先是跨度的概念。跨度大致等于整个Bezier样条曲线,只是在nurbs中可以有任意多个跨度。



图像1:一个立方NURBS跨度。这在公式上有点不典型

每个跨度由曲线度+ 1个控制点**形成。每条曲线可以包含任意数量的点。每个连续跨度通过在列表中删除一个点并再增加一个点来重用先前跨度中的点。因此,制作更复杂的曲线就像在曲线上添加更多点一样容易。当我采取打结的概念。这只是解释曲线如何粘合在一起的一种简单方法。它们一起形成一条曲线。它们彼此共享大多数点。

现在,我们可能已经回答了有关增加复杂性的两个问题。但是我想补充一点,该方案比贝塞尔曲线可确保更好的连续性。另外,您可以使形成船体的点数组循环。形成闭合曲线。

图像3:闭合的三次NURBS曲面的跨度与点数一样多。每种颜色都是一个跨度。

参数化

直到这一点,人们才可以说将跨度串在一起是一种技巧,就像“缝制”贝塞尔曲线一样。但是有区别。曲线沿其长度参数化。因此,曲线不是分开的,它们不会像Beziers那样在每个跨度上以0到1的形式插值。相反,基础曲线具有可自定义的参数范围。参数存储在称为“结”的位置,每个结在序列中可以具有任意递增的值。因此,您可以将整个曲线的参数范围设置为0-1或0到12。参数化也不必是统一的。为什么这会有用?好吧,您可以沿曲线调整张力一。或者,您可以将曲线的长度编码为U参数。一种特殊用途是使NURBS曲线完全或部分地像Bezier曲线一样工作(例如,像两端一样是bezier,但不像中间一样)。

>图片4:同一点指向不同的结序列。绿色的NURBS曲线对应于Bezier曲线,其参数范围为0-2,而不是0-1

那么,结是什么?它们只是基础函数的范围。由于具有4个点的三次b样条具有4个插值函数,因此需要8节。只能绘制3个函数重叠且总和等于1.0的区域。 ,传播到0-1范围。

现在,我们主要描述了问题1的答案。未定义范围,您可以根据需要扩展基本函数。最后,结向量仅产生基函数的参数范围。还有另外一件事控制着曲线的形状,那就是权重向量。但这是另一个故事要讲的。


*在这种情况下,这种有理数意味着NURBS曲线不必是多项式,因为您不能用多项式描述一个圆。

**一个人可以定义其他类型的点。

评论


$ \ begingroup $
关于(*),贝塞尔曲线具有相同的问题。问题在于,曲线(在两种情况下)都定义为x = f(t),y = f(t)。但是,您也可以使用x代替t将单变量/显式/一维曲线(同样在两种情况下)定义为y = f(x)。在有理曲线的情况下,您不能表示圆锥截面,而可以表示正弦和余弦(当然还有更多)。 NURBS / b样条曲线在这方面并不特殊。
$ \ endgroup $
–艾伦·沃尔夫(Alan Wolfe)
15年8月26日在14:04

$ \ begingroup $
我认为您关于长度的陈述是错误的(仅适用于线性函数吗?),并且不确定长度的计算应如何适合您的解释(您给出的好信息,只是说一下!)
$ \ endgroup $
–艾伦·沃尔夫(Alan Wolfe)
15年8月26日在14:16

$ \ begingroup $
@AlanWolfe还是删除了
$ \ endgroup $
– joojaa
15年8月26日在14:21

$ \ begingroup $
太棒了!非常感谢,很好的解释!
$ \ endgroup $
– Ecir Hana
15年8月26日在21:28

$ \ begingroup $
错别字? “相反,底层表面具有可自定义的参数范围。参数存储在称为结的对象中,每个结可以具有大于下一个的任意值。” ->“相反,基础曲线具有可自定义的参数范围。该参数存储在称为结的位置,并且每个结可以具有比上一个更大的任意值。”顺便说一句,能否请您解释“紫外线范围”的含义? “ UV”表示2D。
$ \ endgroup $
– Ecir Hana
15年8月26日在21:31