CAD开发中的坐标空间和参数空间

(1)参数空间是参数曲线和参数曲面才有的,其它曲线、曲面构造方式,例如显式曲线曲面、隐式曲线曲面就没有。
(2)参数曲线坐标空间和参数空间
①曲线坐标空间是一维的。
②需要区分一下圆锥曲线、具有特定单变量参数表达式的曲线、多项式单变量参数表达式、样条曲线(分为贝塞尔样条曲线、NURBS样条曲线)。
1)圆锥曲线,有自己的参数表达式,可以归纳为二次多项式。例如圆、椭圆、抛物线、双曲线、直线。
2)具有单变量参数表达式的曲线有自己独有的参数范围、自己独有的参数表达式。例如各种奇奇怪怪的曲线(心形曲线、悬链线)。
3)多项式单变量参数表达式。例如三次多项式、四次多项式曲线。
4)样条曲线是分段样条基函数拼接而成的曲线,它的参数空间按照需要划分成不同子区间,子区间内是不同次数的样条基函数的线性组合。例如贝塞尔的伯恩斯坦样条基函数,NURBS的B样条基函数。
③样条曲线的参数空间范围可以重整化到[0,1],坐标空间范围按照坐标范围确定。例如圆的参数范围一般是[0,PI2],但是将圆无损转为有理B样条曲线后,它的参数范围是[0,PI2],也是它的节点范围,这个时候可以将参数范围、节点范围重整化到[0,1]。
④三维曲线可以看成三维曲面的参数平面上的一段曲线对应的三维曲面上的曲线。例如圆柱螺旋线、圆锥螺旋线、平面螺旋线。
(3)参数曲面坐标空间和参数空间
①曲面参数空间是二维的,所以一般叫参数平面,包含UV两个方向。之所以是二维的参数平面,是因为参数曲面是通过张量积构造的。也因此导致,一般情况下,空间曲面是一个“四边面”,特别的,当参数曲面在U或者V方向存在退化时,空间曲面是一个“三角面”。只有修剪曲面才会存在“多边面”。因此有些曲面构造算法会改进B样条曲线的样条函数,使得构造出来的曲面在不修剪的情况下也能支持“多变面”。曲面的情况比曲线要复杂的多。
②需要考察参数空间和坐标空间的映射关系。
1)参数空间中的一条不闭合曲线对应坐标空间曲面上的一条不闭合曲线。反之也有对应关系。
2)参数空间中的一条闭合曲线对应坐标空间曲面上的一条闭合曲线,因此也在空间曲面上划分出了一个部分曲面,这也是修剪曲面构造的原理。反之也有对应关系。
3)参数空间中比较特殊的一条曲线是等参直线,它对应坐标空间曲面上的构造曲线。构造曲线不一定是直线。
4)参数空间中的一个点对应坐标空间曲面上的一个点。反之也有对应关系。
5)对于非修剪曲面,它的边界边对应参数平面(也就是UV方向的一个矩形)上的四个直线边。
6)OCC的一些针对TopoDS_Face的算法,需要TopoDS_Edge、TopoDS_Wire的参与,实际是是需要他们内部存储的对应曲面的参数曲线来处理曲面。所以如果这些TopoDS_Edge、TopoDS_Wire不是通过投影等方式从曲面产生的,这些算法往往会失败。
7)参数平面上的直线不一定表示空间曲面上的直线,参数平面上的曲线不一定表示空间曲面上的曲线,反之也成立。例如圆柱螺旋线、圆锥螺旋线。
8)参数平面上的曲线的连续性不能反应空间曲面上对应曲线的连续性。
9)很多算法,针对的是曲面,实际上是从处理参数平面着手。例如曲面网格划分,先划分参数平面(对于修剪曲面,是一条或多条首尾相连构成闭合区间的曲线围成的闭合区间)。这里就带来一个问题,将曲面网格划分后,如何通过划分后的三角面及三角面上的点找回曲面上的空间坐标和参数坐标,这样的过程是可逆的还是有损的。
10)对于具有周期性曲面,它在U或者V或者UV方向参数具有周期性。例如圆面是U和V方向都具有周期性,圆柱面是U方向具有周期性。在参数平面上存在一条曲线,如果这条曲线的起点和终点分别在具有周期性的方向的起点和终点,并且另一个方向的参数一样,即使这条曲线不是闭合的,它在空间坐标曲面上依然对应着一条闭合曲线。在某些算法中,可以利用周期性,将参数曲面沿着周期性方向进行复制扩展,在参数曲面上计算,然后再还原到坐标空间。