Curvature continuity questions

I’m interested in learning how blended curves and surfaces work and how degrees of continuity are achieved.

As I observe this web page, it seems that when you switch between G0-G4 curvature continuity when you blend two curves, it is just adding a control point to the ends of the blended curve. Are there any resources that simply explain why this is so and how this achieves higher degrees of continuity?

I’m also interested in why the blended curves of degrees G1-G4 all appear as smooth blends, but they do not have identical degree of curvature. I can kind of understand the difference between G1 and G2, but I become lost when it mentions planar acceleration. Why would one desire G2 curvature over G1 or vise-versa?

Hello - often it is a matter of how light or reflections fall on and progress across surfaces. Using the CurvatureGraph on a pair of curves is helpful in trying to visualize this - those are shown on the page you linked but it might be more enlightening to fuss with curves yourself with the graph on. The graph shows curvature - if the graph between two curves is un-broken, then there is curvature continuity (G2) there. There can be hard corners in the graph - that indicates the acceleration (rate of change) of the curve(s) curvature is not continuous - that is not G3. G4 is not, I believe going to show in our graph.

The number of points is related to the continuity - Position needs one point in the right place on a curve to be continuous with another - thus a line can be G0 to a curve at each end. Tangency to another curve requires two control points in the right place - the end point plus the next one in. Curvature/G2, needs three points etc. So to be able to control G2 at both ends of am curve independently, six control points is the minimum. For tangency, four control points, and as mentioned for position, two.

it turns out that the simplest curve that can have two points is degree 1, the simplest that can have four points is degree 3 and the simplest that can have six points is degree 5, and so on - degree plus one is the simplest curve that can be made for that point count. That is why BlendCrv makes the degree curves that it does, depending on the continuity requested.

The example images on that web page are perhaps not super helpful since the ‘outer’ curves are all straight lines, i.e. zero curvature so the graphs are all very much the same.

Here’s another crack at it

In all cases the middle curve has increasing curvature as it gets near the ends but the upper two, being curvature continuous with the inputs on either side, drop in curvature again just before the common end points. The lower one does not because it is not trying make that curvature continuous, tangent direction is all it is shooting for…

Dunno if that helps or hinders…


1 Like

This is pretty helpful as are your added example images. If you don’t mind, I’d like to posit some follow up questions of reading and looking at your post.

It seems as the the Curvature graphs are fairly easy to understand—if the curvature graph appears as a smooth line across the curve, then you have continuous curvature…the smoother the graph, the more continuous the curvature is. A broken graph such as your G1 example or one with hard corners (G2) indicates a lack of curvature, or lack of clean curvature.

However, in each of your examples, the blended curve still appears smooth to the eye of the observer. Perhaps there is more at play here. For instance, even the G1 curve looks like a smooth blend, however, if it were extruded into a surface, would we then be able to see an imperfection of some sort? What are the downsides to G1 versus G2?

Is there a simple way to explain curvature and how Rhino is able to determine the curvature across a spline (or how it’s defined with nurbs curves)?

I think the jump from G1 to G2 continuity is interesting, because with G1 you have 2 control points at either end of the blended curve which is fairly easy to understand how they imply tangency continuity…one control point defines the termination of the curve while the other sets the starting direction of the curve in relation to the curves that are being blended. However, when you add that third control point to either end, you then have curvature continuity, and I think that’s when my understanding begins to break down. What it is about that added third control point (to yield 6 in total) that provides curvature continuity?

No. This is curvature continuous - what is not continuous at the hard corner on the graph is the acceleration.

It is not the added point in itself that ‘provides’ the curvature continuity, it’s that the curvature at the end is determined by the positions of first three points in the curve. They need to be in the right locations to make any particular curvature (btw, there are not just three locations, there is an infinite number - see the EndBulge command)

Try the Curvature command on a curve that has the graph on - see how the curvature circle is inversely proportional to the depth of the graph? Curvature = 1/Radius of curvature and any point.


introduction to NURBS:

golden rules of NURBS design:


This provides a helpful visualization for me. Would it be accurate to say that the curvature is the measure of the the curvature radius at an instantaneous point along a curve?

Yes, but the inverse: greater amount curvature (taller graph) = smaller radius of curvature.


Do you know how Rhino is able to determine the radius of the curve at a certain point?

I don’t know the details of the Rhino code but it probably determines curvature based on the equation of the curve. There is a formula for curvature at a point on a curve which uses the parameter associated with the point, the control point coordinates and the knot values.