I have a nurb/b-spline curve in 2d, and I want to sweep a cross section along it.

Here is the curve and resulting "tube" (green points are control points):

enter image description here enter image description here

However, as you can see, the resulting "tube" becomes thinner where the curve curves. So my question is, what is the correct way of sweeping a cross section along a bspline curve and obtaining constant height of the cross section?

My current method is to pick some points along the curve (Greville points) (in the parametric coordinate system), and rotating the cross section such that it aligns with the normal of the curve at the current point...but it does not seems to work.


1 Answer 1


Unfortunately, there are no real answers for this. The problem is called 'offsetting'. It is often investigated in the context of typefaces / fonts. There is no analytical or exact solution for Bezier or NURBS curves.

One of the challenges is that curve segments easily get pinched off or other sigularities -- start with a loop and increase the offset distance.

There are lots of heuristic methods out there that work more or less. Lots of academic papers. Search around and you'll find them.

  • $\begingroup$ Ok, thanks. Googling "spline offsetting" etc gives some different options how to handle t his. I will go for the approach of subdeviding the curve and offsetting the control mesh. $\endgroup$
    – lijas
    Oct 3, 2022 at 7:45

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.