我正在以补丁的形式将 NURBS 曲面拟合到一些数据点上。我有一定数量的补丁和每个补丁 17x17 数据点的统一分辨率。每个方向的度数值为 3。
每个面片都使用例程拟合 NURBS 曲面。相邻块之间的数据点相互匹配 - 因此满足 C0 连续性。但对于 C1 的连续性,我没有做任何特别的事情。我应该如何修改我的算法以获得 C1 连续性?
我正在以补丁的形式将 NURBS 曲面拟合到一些数据点上。我有一定数量的补丁和每个补丁 17x17 数据点的统一分辨率。每个方向的度数值为 3。
每个面片都使用例程拟合 NURBS 曲面。相邻块之间的数据点相互匹配 - 因此满足 C0 连续性。但对于 C1 的连续性,我没有做任何特别的事情。我应该如何修改我的算法以获得 C1 连续性?
有几种方法可以做到这一点。
您可以做的一件事就是独立解决,然后通过将边界控制点放在两个控制点的中点朝向两个相邻补丁的内部来强制相邻补丁为 C1。换句话说,如果您有四个控制点 Q0、Q1、P0 和 P1,其中 P 点在一个表面上,Q 点在另一个表面上,并且 P0 = Q0,则设置 P0 = 0.5 * (Q1 + P1 )。如果 NURBS 面片的节点宽度不同,或者您有超过 4 个 NURBS 面片作为角点,则该等式将需要不同。我还假设您有多个末端结(贝塞尔末端条件)。
您可以做的另一件事是求解一个包含 C1 条件作为线性等式约束的全局系统。这会给你一个最佳的结果,但它可能会慢得多。