Offset curve creates more control points on flipped curve. Bug?

I first was going to post this on the Grasshopper forum but then realized it’s actually a Rhino issue.

See the image below. The black curve is the original curve. The green curve is an offset of the black curve.
The blue curve is the same as the original curve but flipped. The red curve is an offset of the blue (flipped) curve. It creates extra control points in this corner on the flipped curve. Both offsets are at 1 mm distance. I’d call this a bug.

190408 Offset flipped curve.3dm (33.6 KB)

@rajaa, I didn’t write the offseter so I don’t know the exact reason, but to me this just shows the tool isn’t symmetrical. The output control point count and placement is in no way a function of the input control points. If you have to have symmetrical result you need to offset first, then flip.

I agree Mikko. Maybe @chuck can give more details.

@rajaa Could this bug also be related to the problem in this topic?

@rajaa I also didn’t write the offsetter, but I’m sure it calls a simple fitting algorithm which would not necessarily be symmetrical. I don’t consider this to be a bug since the result in either case is a curve offset correctly to within tolerance.

Lots of McNeel developers here it seems, so could any of you explain to someone new to Rhino, but coming from Alias, why the offset is seemingly increasing the degrees of the curves?

Btw, @mikko thinks @rajaa wrote the offseter who thinks @chuck wrote the offseter who says he didn’t write it… so who did? :laughing:

Hello - - offset does increase the complexity of offsets that cannot be exact - but it does not necessarily increase the degree - it shoots for degree 3 as a default if there is no exact offset ( like arcs and polylines etc.) The ‘Loose’ option may help keep things simple in many cases but the offset accturacy will be compromised…


Not a McNeel developer but I may be able to explain. Curves in Rhino (and most CAD systems) are NURBS (Non-Uniform Rational B-Splines). A exact offset of a NURBS is usually not exactly a NURBS. There not be an algebraic formula for the exact offset of a NURBS. This is a basic math property of NURBS. If Loose=No in Offset then Rhino uses a degree 3 curve with a sufficient number of control points so that the resulti is within the specified tolerance of the exact offset curve. With Loose=No the result retains the input curve degree and number of control points but may not be within the tolerance of the exact offset and in some case may be very different than the exact offset.

1 Like

I see the offset as fitted curve through points which are perpendicular to the original curve at requested distance (divide original curve by some points, sketch line perpendicular at this points and finally draw curve through this points)