首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >非均匀有理B样条(NURBS)基

非均匀有理B样条(NURBS)基
EN

Computer Graphics用户
提问于 2015-08-25 10:58:31
回答 1查看 2.2K关注 0票数 10

我正在试着理解NURBS曲线(待会儿曲面!)但我很难理解它内在运作的基本原理。有人能给我解释几件事吗?由于我来自Bezier曲线,比较这两条曲线将特别有用。

  1. “有理基函数”看起来有点像(rational) Bezier曲线的Bernstein多项式。参数u是否也从0到1?
  2. 如何在曲线上“添加细节”?我的意思是,如果我需要描述一个更复杂的形状,我会简单地“缝合”几个贝齐尔。或者更少地增加学位。我知道我也可以增加NURBS的程度,并排放几个NURBS曲线,但这是应该怎么做的吗?
  3. 维基百科的文章,至少对我来说,似乎不太清楚这个“结向量”。反正怎么回事?
EN

回答 1

Computer Graphics用户

回答已采纳

发布于 2015-08-25 16:12:23

B样条和贝齐尔是大致相同事物的平行发明。贝齐尔试图从拟合切线的想法开始。B样条从基函数的概念开始。NURB样条(实际上是有理的部分)只是B样条的推广,所以你可以描述精确的二次曲线*,因为它们在工程上特别感兴趣。

首先,让我们从一个简单的NURB样条术语开始。这些曲线的基本原理与贝齐尔有一点不同。首先是跨度的概念。一个跨度大致相当于一个完整的Bezier样条,除非在nurbs中,你可以有任意数量的跨度。

图1:一个立方体NURBS跨度。这在配方上有点不典型。

每个跨度由曲线度+1个控制点**组成。每条曲线都可以由任意数量的点组成。每一个连续的跨度都重复使用前一个跨度中的点数,方法是删除一个点,在列表中多取一个点。因此,做更复杂的曲线就像在曲线上附加更多的点一样容易。

注意:图像曲线有点不典型的参数化,我将在下一节解释这意味着什么。当我带着结的概念。这只是一个更简单的方法来解释曲线如何粘合在一起。

图2: 2立方跨度后,每个跨度使用4点。它们合在一起形成一条曲线。他们彼此分享最多的观点。

到目前为止,我们可能已经回答了关于增加复杂性的第二个问题。但我想补充一点,这个方案比bezier曲线更能保证连续性。此外,还可以使形成船体的点阵循环。形成一个封闭的曲线。

图3:一个封闭的立方体NURBS曲面的跨度和它的点数一样多。每种颜色只有一个跨度。

Parametrization

直到这一点,人们可以说,串在一起的跨度是一个技巧,就像“缝纫”的贝塞尔曲线。但两者有区别。曲线沿其长度是参数化的。因此,曲线不是分开的,它们不像贝齐尔那样,在每个跨度上插值0到1。相反,底层曲线有一个可缓冲的参数范围。该参数存储在一个称为纽结的东西中,每个节点都可以在序列中具有任意的递增值。所以你可以参数化整个曲线u范围到0-1或0到12。参数化也不一定是一致的。

这种参数化改变了曲线的形状。这有什么用呢?你可以调整曲线上的张力。或者你可以将曲线的长度编码成U参数。一个特殊的用途是使NURBS曲线完全或部分地像Bezier曲线(例如,bezier曲线在末端,而不是在中间)。

图4:相同的点,不同的结序。绿色NURBS曲线对应于参数范围为0-2而不是0-1的Bezier曲线。

好的,结是什么?它们只是基函数的范围。4点三次B样条具有4个插值函数,需要8节。只有3个功能重叠的区域才能画出一条线。

图像5: 2个不同的基函数,一个贝塞尔样和一个统一的分段参数化,扩展到0-1范围.

现在我们已经描述了问题1的答案,范围没有定义,你可以根据你认为合适的范围来扩展基础函数。最后,节点向量简单地给出基函数的参数范围。还有一件事决定了曲线的形状,那就是权向量。但另一个故事要在其他地方讲述。

*这种理性在这种情况下意味着NURBS曲线不一定是多项式,因为你不能用多项式来描述一个圆。

**我们可以定义其他类型的点。

票数 8
EN
页面原文内容由Computer Graphics提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://computergraphics.stackexchange.com/questions/335

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档