我正在开发一个3D图形应用程序,用户可以在其中绘制曲线。我记录由用户绘制的曲线,我想从记录的一组点创建一个平滑的nurb。我试着使用openNurbs库,但是我找不到一种方法来使用这个库来进行装配。我怎样才能把一组点配给护士呢?
发布于 2014-12-20 08:16:27
首先,我认为你不需要nurbs。拟合B样条曲线到你的数据点应该足够好。
如果你只有几十个点,那么你很可能希望B样条曲线能够精确地通过这些数据点。在这种情况下,您正在寻找样条插值算法。如果是这样的话,可以使用Catmull Rom样条或Overhauser样条来插值数据点。这两种方法都将创建C1三次样条,并且都很容易实现,而无需求解线性方程组。
如果你有几百个点,那么很可能你只希望B样条曲线靠近数据点。然后,你要寻找的算法是最小二乘拟合。您可以在网上找到很多文章(例如:link1 )。用B样条曲线进行最小二乘拟合的典型算法将涉及以下步骤:
1)为数据点选择参数化。弦长参数化是最小二乘拟合的典型选择。
2)选择B样条的度。通常,我们使用3度,即三次B样条.
3)确定B样条的控制点数。
4)根据前3步的信息确定节点向量。
5)用线性方程组求解B样条的控制点.
https://stackoverflow.com/questions/27561612
复制相似问题