NURBS参数空间与坐标空间的转化
问题描述:已知NURBS曲面,现在想根据x和y坐标的情况下,求z的值。由于 NURBS 曲面是参数曲面,在仅知道(x,y)坐标的情况下无法直接求出该点的矢高值,而是需要先将物理空间坐标值(x,y)转换成对应参数空间坐标(u,v),然后再根据(u,v)值求解出该点的物理空间坐标(x,y,z)。由于(x,y)到(u,v)无法求出解析表达式,只能通过迭代求解。
参考文献:
NURBS自由曲面在光机设计和分析中的应用
The NURBS Book 2nd
迭代算法1:
距离矢量算法:
首先,建立已知的空间坐标(x,y)和待求的参数空间坐标S(u,v)之间的距离矢量公式如下:
当距离矢量 r 取得最小值时,r 和 NURBS 曲面在参数坐标所决定的空间点处的切向量的点积应为零
采用牛顿迭代算法求解方程组,对上式两端进行偏微分
所以
式中,δi是参数ui和vi的Newton迭代改进步长;
Ji为向量的雅可比矩阵,如下
由于雅可比矩阵比较复杂,该算法进行一次迭代需要计算NURBS曲面两次一阶偏导数和四次二阶偏导数。
迭代算法2:
光线追迹法
由于距离矢量法需要计算曲面的二阶偏导,速度较慢,因此研究了基于光线曲面求交方法的坐标转换方法。
为了求取NURBS曲面上横纵坐标为(x,y)的点的z值,假设有一条光线从点(x,y,0)以方向(0,0,1)出射并与曲面相交,则光线与曲面的交点即为所求的点。
光线矢量定义为两个空间平面的交线,如下图
两个平面分别表示为
Ni为平面的法线向量,是与光线方向垂直的单位向量;
di为原点距平面的距离。
当曲面上点为光线与曲面的交点时应该满足以下判断条件R
根据三维空间的牛顿迭法,上述方程可改写为:
上式中:J为R的雅可比矩阵。
Su (u,v)和Sv (u,v)为曲面方程分别关于u和v的一阶偏导,表示曲面沿着u和v向的切线向量。