第一节 NURBS曲线
NURBS是非均匀有理B样条(Non-Uniform Rational B-Splines)的缩写,国际标准化组织(International Organization for Standardization,ISO)于1991年正式颁布了关于工业产品几何定义的STEP(Standard for The Exchange of Product Model Data)国际标准,把NURBS方法作为定义工业产品几何形状的唯一数学方法。NURBS可用于描述三维几何图形。它是一种非常优秀的建模方式,许多三维软件都支持这种建模方式。NURBS能够比传统的网格建模方式更好地控制物体表面的曲率,从而创建出更加光顺的曲面,如图2-1所示。
图2-1 NURBS曲面
简单来说,NURBS是专门用来定义曲面物件的一种描述手段。NURBS做出的造型由曲线和曲面来定义。就是因为这一特点,可以用它做出各种复杂的曲面造型。
符合NURBS原理的曲线,在建模的过程中有3个值得注意的基本属性,即阶数、控制点、均匀性。
什么是阶数呢?
前面介绍了不少建模软件的造型描述逻辑,即先确定一个空间直角坐标系,然后通过参数来确定点,继而去定义线,最终到面、到体。那么Rhino又是如何通过多个点去描述一条线的呢?
这便是控制点与其所描述的曲线之间的函数关系,也就是B样条曲线的定义。
当然,作为一本非图形学专业类的书籍,上述函数并不能向大多数人说清楚控制点跟曲线之间的对应关系。下面用一个简化过的,近似的描述方式简述一下两者的关系,如图2-2所示。
图2-2 控制点和曲线的函数关系
可以用这样描述曲线的方式类比Rhino描述曲线的方式(注意,两者只是类比,并不等价)。
以此为基础,NURBS曲线的描述方式也可以类比为
y=axn+bxn-1+…+px+q (a≠0)
式中,n即是曲线的阶数。也就是说,阶数是描述一根曲线的函数方程的最高次项的幂。
当然,有些曲线过于复杂,有时很难用一段函数方程来描述。这个时候,就要用一组函数方程来描述。多个函数方程接力,去描述一根复杂的曲线,函数与函数之间的连接点就称为节点,如图2-3所示。以绳子做比喻的话,节点就是多段绳子连接成一根较长绳子时的打结处。
图2-3 节点的诞生
控制点和阶数相当于一根线的姓名。在后续的章节里,会以x阶x点来称呼某根曲线,比如3阶8点、5阶6点。它们的关系,满足如下表达式
由式(2-1)可以得出,节点的数目必然是自然数,也必然大于等于0(即k≥0)。对上述表达式进行变换,得到
由式(2-2)可知,控制点始终比阶数至少大1。
因为节点是函数与函数相连接处的点,那么当k=0时,节点不存在,此时曲线由一个独立的函数描述,即最简曲线。