Interpolated curve trough points in grasshopper

hi, im new to rhino with grasshopper and tried to generate a closed interpolated curve (like a amplitude) between points on circles. the points are on two circles in different elevation. at least 3 higpoints and three lower points. the tricky part I have two requirements.

  1. the number of points must be able to change by a slider, but in a way that it is always possible to have a closed curve at the end.
  2. if I would draw a perpendicular line between the bottom and the upper circle, the two endpoints should have a certain angle. means when I change the diameter of the bottom circle - the upper circle need to change to maintain that certain angle and if I change the elevation of the upper circle the diameter of this circle must change as well to maintain that certain angle.

anyone here who could guide me to address that problem?

if this is the right problem statement:

I guess you want the curve between points on Circle R and Circle r to lie on the surface (loft) between them, in such a way the 30° constraint is respected?

I’m honestly not sure if this idea of having the curve bounce on XY and then bounce back to the loft is completely right or completely wrong… :slight_smile:


interpolated_curve_through_points.gh (14.0 KB)

thank you for responding to my problem. I have some questions to your programming:

  1. I couldn’t find out the function where to change the relation between the upper circle and the bottom circle. I mean what is the is the function for that? if I want to change that offset angle.
  2. I didn’t understand the need for a loft. I was thinking that only points are needed to create values for a tangent interpolated curve trough these points. what exactly is the function of the loft here.

in the attached file the angle “a” is not internalized to the function, so you can change it easily, it’s here


interpolated_curve_through_points_Re.gh (14.9 KB)

once we get the final list with all the top/bottom…bottom/top points and create the interpolated curve through them, there is no constraint that “forces” this curve to lie on the 30 degrees-constrained surface (circles) we have defined at the beginning

this is easier to see by checking the distance between the curve and the loft:


each 5th point lies on the loft, all the other points on the interpolated curve don’t

if you were to CNC engrave that weavy line, the tool would produce marks only on these areas, because everywhere elase the curve travels off from the initial 30 degrees angle:

I assumed this detail was relevant for your particular purpose (that’s why I introduced the double bounce on XY and back on the loft) but maybe it just isn’t relevant :slight_smile:

btw, in case it needs to lie on the loft, I don’t know if this double bounce thing is the correct/best approach

[edit] for some reason my mind thought that the constant angle had to be always exactly 30 degrees…

Interesting. What I see now it might be possible to create a surface along the “bouncing” curve and where the two surfaces are intersecting this would be the system line I’m looking for.
Regarding the degree, the lower circle is most of the time smaller than the upper circle. That’s why I was looking where to manipulate the angle. Is it a negative value then?

yes, a negative angle should do the trick :+1:

A different idea:

interpolated_curve_on_cone.gh (22.2 KB)

1 Like

that’s also in interesting approach, because it seems that the curves sitting always flat on the surface which wont happen if they are just interpolated between the two circles. thank you for that idea

Curve is completely on the surface, yes.

1 Like

Hi everyone! I would love for your help!
I am new to grasshopper, and having trouble with a definition.
I am trying to create a curve that follows a closed curve (like a snake). For the new curve- The start point should be parametric (point on curve) and the length stays the same (in this case 70% of the of the original curve length).
I am unable to make the curve follow the original curve.
Any suggestions? Please…

curve follows curve.gh (4.0 KB)