Вопрос

I'm fitting NURBS surfaces onto some data points in the form of patches. I have a certain amount of patches and a uniform resolution of 17x17 data points per patch. The degree values are 3 in each direction.

Every patch is fit NURBS surface using a routine. The data points between neighboring patches match each other - so C0 continuity is satisfied. But I do nothing special for C1 continuity. How should I modify my algorithm to have a C1 continuity?

Это было полезно?

Решение

There are a couple of ways to do this.

One thing you could do is just solve independently and then force adjacent patches to be C1, by putting the border control points at the midpoint of the two control points towards the interior of the two adjacent patches. In other words, if you have four control points, Q0, Q1, P0, and P1, where P points are on one surface and Q points are on another surface, and P0 = Q0, then set P0 = 0.5 * (Q1 + P1). If the knot width of the NURBS patches are different or you have more than 4 NURBS patches as a corner, then this equation will need to be different. I'm also assuming you have fully multiple end knots (Bezier end conditions).

Another thing you could do is solve a global system which includes the C1 condition as a linear equality constraint. This will give you an optimal result, but it could be much slower.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top