How to parametrize a sine curve

I am new to grasshopper and I am looking for some help to build a curve similar to the photos I have attached. These photos I have easily made using Rhino. With grasshopper I was able to parametrize the points on the circumference by dividing into angles and finding connecting intersections. Now my question is how to move up and down with positive and negative values( z axis) the points in a specific dimension size and find the same points that I had found with rhino. I want to interpolate the points and have the same curve as if doing it by hand. I tried to find the mathematical function but I don’t know if this is the right way to go about this. Do you have any other strategies for me? thanks so much for your help.

This is the right way. Then use Series or Range components along with Expression component where you type in your equation (math function) (12.8 KB)

Thanks for your reply, I tried to go ahead with the algorithm but its always similar but not exactly the same. Can you help me? thanks (11.8 KB)

By helping do you mean solve it instead of you?
It doesn’t work like this, sorry.

I gave you a start develop on top of it. Work on it. Do something yourself.

One more hint: your curve looks more like a irregular trochoid wave than a sinusoid wave.

Your curve seems to be best achieved by joining arcs, but if you want to use formulas…

You can improve the curvature by applying a X offset function coherent with the sine wave shape (replacing the top GraphMapper with something smarter). (15.1 KB)


There’s really too little information provided. What are we supposed to do, start fourier analysis? :slight_smile:

Im sorry I thought a forum is for people asking for advice and help on how to solve a problem… if you think you are too intelligent and better than everyone else then don’t reply at all. Get off your high horse.

This is your answer again.

You have to provide more information about the curve. You have to show interest solving the issue not just asking for the solution. This is not McNeel technical support. I am willing to help but I will not do the job for you!

You’re not asking for advice, you’re asking for the solution. Btw advices have been given!


  1. What is this curve’s purpose?
  2. What is this curve derived from?
  3. How sensitive the final solution should be regarding deviations from this curve?
  4. Is it a MUST that the curve is created from arcs (similar to @Dani_Abalde’s suggestion)?
  5. What do you know about this curve? Do you have a set of points this curve must go through?

Now that these questions are layed down. Would you be able to answer your question if you were on my place? (“on the high horse”)

I’ll also stay on the high horse, thanks.

Here’s some reading material.

Curves in Rhino/Grasshopper require more than an equation. You can use an equation like t+\frac{\sqrt{1-x^{2}}}{g} to generate specific points on this ideal curve, but to actually create a curve object requires you sample the equation at various parameters and then connect these sampled dots. Either with a polyline, or a smooth curve, or an interpolated curve.

Either way your resulting curve will be an approximation of your ideal curve. To create an analytically exact shape you will have to generate the elliptical or circular arcs yourself.

thank you, your way of thinking is right but what I want to do to get the curve is to find a strategy to position the exact points in that space. Before I had found these points with rhino, studying the geometry of the spline. Now I am looking to divide the problem into small parts. One of these problems is obtaining three maximum points of the curve, how it is shown in the image (the red part).


I thought of checking these three points with

where t parameter regulates the height of the z axis and the g parameter reduces the radius of the curve. Do you think this is the right strategy? I tried to do this with grasshopper but nothing happens because surely I made a mistake.

2 posts were split to a new topic: Per-object rotation

Hi, what if I want to apply this long sine wave to a circle? Does anyone know how to do it? Thanks you very much (10.4 KB)

P.S. Later… version ‘b’: (11.1 KB)

Does the generated curvature have to absolutely match that of sine curves?

I’ve made a bunch of very similar looking Interpolated curves based solely on points at the peaks and valleys of the sine curves. These points are simple to make from divided circles.

There appear to be “harmonics”(?) between ‘Cycles’ and ‘Count(resolution) values.
Perhaps off-by-one errors? (17.3 KB)

Good case for creating a cluster for duplicate components…