How to build curves passing through existing points

Sometimes this is necessary when preparing a grid of curves for a surface.

There are curves built in one direction, and I need to build curves that intersect them.

I want to build four cross curves: two side curves and two in the middle.

Divide the curve into three parts and get the points for the two middle cross curves.

I'm building two planes to get other intersection points.

So I got the points that the curves should pass through.

First, I try to build curves using the Curve Interpolate Points tool.

Let's check curves I got.

But first, let's check the curvature of the original curves.

They are single span 5 degree curves with 6 control points.

I want the intersecting curves to be the same single-span, have a 5 degree with 6 control points.

Checking curves I built, they 3 degree with 6 control.

This is the result of the default settings of the Interpolate Point tool.

I'll fix it now, but let's check their curvature first.

The curvature graph shows that the curvature is unacceptable.

These kinks are due to the third degree and are located between the spans of the degree 3 curve.

These curvature breaks are almost invisible on surfaces. But still, the third degree does not allow you to get the perfect curvature of multi-span curves.

I delete these curves and rebuild them with the same Interpolate Point Curve tool. But this time, in the tool settings, I set the degree to 5.

Checking new curves.

It's degree 5 and 9 control points.

So it's multi-span curve

The second curve is the same.

Checking the curvature.

This one is almost OK, only this drop on the graph is not desirable.

This one is much worse.

The curvature graph intersects the curve 2 times. This means that the direction of curvature changes 2 times to the opposite.

First it bends outward, then inward, and finally out again.

Task: to build single-span curves that will pass through all the intersection points and will have a smooth curvature in one direction.

ideally, the curve graph should smoothly increase from the beginning of the curve and smoothly descend to the end.

How to do it?

If simply rebuid the curve to a single-span curve with 6 control points, the shape of the curve will change and intersections will be lost.

I delete the curves and go to the options of the Curve Interpolate Points tool.

I'll start with one curve. I move the intersection points to another layer and hide everything else.

For better visibility, go to the front view, let the layer color be black, and change the color of the points to red.

I can't change the position of the points because they represent intersections. This is the main condition.

So back to the Interpolate Point Curve tool options.

I leave the degree 5. The trick I'm going to do now won't work with the degree 3.

There are three options for the Knots parameter: Uniform, Chord, and SqrtChord

By default, the CHORD is usually selected.

The CHORD allows to build a curve that flows quite smoothly from point to point.

The Chord curve is not very sensitive to the irregular distance between points.

The curve consists of several spans. How many times were clicked so many spans were built.

The SqrtChord option allows to build a curve that flows even more smoothly between points. It is even less sensitive to spacing.

I put the points close to each other, then put the point much further away, and the curve still flows smoothly.

SqrtChord also builds many spans and control points. They are just needed to achieve smoothness.

And the Uniform option, which many people don't like...

This option allows you to control the curve only if the points are at the same distance from each other

Otherwise, it wriggles and it is difficult to control its shape.

But its advantage is that it builds a single-span curve.

I clicked 6 times and built this curve through 6 points.

I look at its parameters and see that it consists of one span: degree 5 with 6 control points.

The rhinoceros did everything possible and impossible to describe the shape of this curve by single span. This can be seen by the crazy location of the control points.

For a 5 degree curve, you can click up to 6 times and still get one span.

The first part of the task is to build a single-span curve through the specified points. So let's do this using the Uniform option.

I check it and see that everything is fine, there are degree 5 and 6 control points.

Check the curvature. Here, even without a graph, you can see that the curve is curved in two directions.

The bend goes up and goes down closer to the left side

The curvature graph confirms the change in the curvature direction on the left side

But in any case, the curvature is very smooth because the curve consists of a single span.

Now I want to correct the shape of the curve. Make a curvature in one direction while maintaining the intersection with the original points.

I can't do this with control points because the intersection with the original points will be lost.

The edit points do not match the original points position. And if I move them, the curvature will completely break.

So the edit points are also not an option.

So what to do? The record history button is the solution to the problem.

I disable the Always Record History option and will enable it manually to show how it works.

Using the record History, I will link the curve to the points. But since the original red points cannot be moved, I will add an additional point that will affect the curvature.

It seems that the point should be placed at the point where the curvature graph changes direction. But the Uniform option affects the curve quite aggressively, so I'll try to put a point approximately in the middle of the curve.

I delete the curve, turn the Record History on

I use the Curve Through Points tool. It is similar to the Interpolate Point tool only the curve is built through existing points and it can work together with the Record History tool.

Right click to choose the tool and set the same options as in the Interpolate Point Curve. I turn on the history record and select all points.

The curve has been built, and it now includes my additional point.

Checking it. It's a single span, degree 5 with 6 control points.

Turning the curvature graph on

Now by moving an additional point, the entire shape of the curve changes, but the intersections with the other points are preserved.

Even if I change the shape very aggressively, the curve will always remain single span and keep intersections with other points.

Moving an additional point, I will try to achieve a soft flow of curvature and make it curved in one direction.

It is quite difficult to move a point exactly with the mouse, so I move the point with the keyboard arrow buttons. Ctrl and Shift buttons changes the move step.

Now I have corrected the shape of the curve. The curvature graph is now located above the curve. But its shape is still not perfect. I want to fix this fall in the graph.

I can try putting an extra point somewhere else on the curve.

I delete the point and try to put it here for example.

I delete the curve, turn on the history record, take the tool, select all the points and build the curve. It's possible to select all the points at once, and the Rhino will try to guess their order.

I turn on the curvature graph and try to correct the shape with a new point.

The new point here does not allow me to achieve the desired result. I will draw a straight line through the points to check if they are on the same line.

Since the points are not on a straight line, then everything should work out.

I will try to place additional point in the right part of the curve.

I delete the curve and build a new one the same way as before.

The shape of the new curve has changed a lot, and the new point at this point has a strong effect on the shape.

I try to correct the curvature with a new point and the result is already better than before.

But I will go further and improve the curvature even more

I can build another additional point and influence the shape with two additional points.

Rebuilding it again...

Adjusting the shape with a new point in the middle and... It worked!

Good result. The result is a smooth increase in the curvature from the beginning of the curve.

I can leave it that way, but I'll try to smooth out the curvature a little more

It's OK, I got what I wanted.

If you need an even smoother shape, I think in this case it can't be obtained from a single span. The curve corresponds to all the specified conditions: one span, intersections, and curvature.

It may be possible to get even better smoothness by using additional points or their location.

But I like the result, and I leave the curve as it is.

Let's move on to building the second curve

Building the curve as is first

Can see a little curvature direction changing

I turn on the curvature graph and see that everything is easier here.

I think the single additional point is enough here

I rebuild the curve with a new point and try to correct the curvature.

A slight shift of the point down and everything worked out

But I want to try to make the curvature start from zero

I go to the settings and reduce the step of moving the keyboard

Now, when I press the keyboard arrows, the movement of the point is almost invisible.

Zooming in the curve's end

Now the curvature almost starts from zero

That's it, the second curve is ready

Changing object's layers

Checking again the curvature graphs of all the curves

All curves are ready for surfaces building.

Building the side curves using Interpolate Point Curve tool.

The side curves curvature is smooth as is, so all the curves are ready for surfacing.

Now I can rebuild sourse curves using existing points and the Record History option. Let's see what will happen.

I delete additional points and curves. Leave only intersection points to build all the curves through with history recording.

Place points at the sourse curves ends for rebuilding sourse curves with history recording

Checking if the Record History is on and building all the curves through it's points grid.

Now all curves are linked by history to points.

By moving any point, all curves are changed while preserving all intersections

Even extreme point movement preserves all intersections, and all curves remain single-span with a degree 5 and 6 control points.

I distorted the grid too much, this is rare in practice. But for example, I will build a surface using these curves with the history record enabled.

I will build the surface using the Curve Network tool

The surface is very organic and it is completely linked to the points lying ON it.

By moving any point, the surface is rebuilt after the point

I can also move points from the keyboard. The Pgup and Pgdn keys are responsible for moving up and down in the perspective view.

This way you can build editable grids from curves, and edit them by holding all intersections. This can be used for reverse engineering of organic forms when searching for the correct patch layout.

As well as when searching for a balance between accuracy and smoothness, for example, when reverse engineering a 3D scan of a soft surface with local undesirable deformations.

Thanks for watching!