<p>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.</p>
<p>One of the challenges is that curve segments easily get pinched off or other sigularities -- start with a loop and increase the offset distance.</p>
<p>There are lots of heuristic methods out there that work more or less. Lots of academic papers.  Search around and you'll find them.</p>

CC BY-SA 4.0
2022-10-03T07:45:45.810Z
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.
lijas
CC BY-SA 4.0
2022-10-01T18:07:04.797Z
2022-10-01T18:07:04.797Z
Rob McDonald
<p>I have a nurb/b-spline curve in 2d, and I want to sweep a cross section along it.</p>
<p>Here is the curve and resulting &quot;tube&quot; (green points are control points):</p>
<p><a href="https://i.sstatic.net/XgdPM.png" rel="nofollow noreferrer"><img src="https://i.sstatic.net/XgdPM.png" alt="enter image description here" /></a>
<a href="https://i.sstatic.net/u0eZ7.png" rel="nofollow noreferrer"><img src="https://i.sstatic.net/u0eZ7.png" alt="enter image description here" /></a></p>
<p>However, as you can see, the resulting &quot;tube&quot; 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?</p>
<p>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.</p>

<nurbs><spline>
Sweeping cross section along nurbs curve
lijas
# Sweeping cross section along nurbs curve

(Asked by: username_0 on 2022-10-01)

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](https://i.sstatic.net/XgdPM.png)](https://i.sstatic.net/XgdPM.png)
[![enter image description here](https://i.sstatic.net/u0eZ7.png)](https://i.sstatic.net/u0eZ7.png)

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.

**Tags:** nurbs, spline


---

## 1 answers

### Answer by username_1 on 2022-10-01. Score: 2 | Accepted answer

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.

> **Comments:**
> **username_0**: 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.  

---

