Spherical helicoid equation


I need help understanding how to properly set up a parametric equation for a spherical helicoid.

I found this article:

I am wondering if this is translatable into an expression within GH. I have seen people grabbing a method from Wolfram then throwing it into grasshopper - if I search for a regular helicoid equation on wolfram and find:

x(u, v) = u cos(v)
y(u, v) = u sin(v)
z(u, v) = c v

I then intuit this needs to be modified so that the resulting surface respects a spherical boundary. I also guess the task is inherently complex given the different natures of the surfaces. On top of the whole thing I admit I’m truly ignorant here.

How should parameters in those equations be varied so that a resulting surface is ‘confined’ within a spherical boundary in a way that the system can be scaled?

Something I was getting by with was faking a helicoid (mainly a ruled surface of rotating lines around an axis, not via an equation), and then intersecting it with a sphere, however this method is more brute-force than it is reliable.

I found this method by @TomTom , from years ago, to make a general helicoid; would you know how to adapt it?

Thank you taking a look and for your time.

spherical_helicoid.gh (6.7 KB)

simple with the expression component

1 Like

you can even get this surface trivially

1 Like


For you! Because you know what you’re doing unlike me!

Based on my trial-and-errors I was definitely approaching this wrong. Looks like the solution for sure. I am going to both check and learn from it then report back here. I might have a follow-up question just to make sure I grasp the matter. Thank you Adel, for real.

1 Like


this gives you the equation:

x = sqrt( r^2 - t^2 ) * cos( t / c )
y = sqrt( r^2 - t^2 ) * sin( t / c )
z = t

which means that we can calculate the xyz coordinates of a point on the spherical helicoid as t varies. therefore we need to set up how t varies.

t ranges between -r and r (the radius of the sphere around which the helicoid wraps).

so if r = 3 for example you will have t in the range of [ -3, 3 ]. so we need to sample a number of t values from that range, and this is what this does:

it extract 80 consecutive samples from that range

now that we have these values we pass them to the formula. we already know r = 3 and we set a slider for c , a variable which controls how many times the curve goes around the sphere, the lower the number, the more cycles.

now in the formula you see this:

{sqrt(r^2 - t^2)*cos(t/c) , sqrt(r^2 - t^2)*sin(t/c) , t}

the { } means it’s a list, where each value is separated by a comma. we need there values { x , y , z }. so we plug in the equations.

because we specified a return type list, and since it’s three numbers, we can already use those as vertices, and we can pass those vertices to an interpolate curve component


Geometric solution (twisted arc).

240405a_spherical_helicoid.gh (7.5 KB)



Thank you for teaching me this :raised_hands:t4:

I confess that though the quest was to plot the equation, I prefer geometric approaches. Thank you for looking into it Kevin - it’s beautiful and I will use it.