# Geometry Nodes : How to round the profile of a sprial?

I have made a spiral using geometry nodes, starting from a cube, but as you can see in the image below, its profile is too flat. I'd like it to be more spherical (see red lines). It seems to be a simple task at first glance, but I don't know geo nodes well enough.

This is the node setup I'm using :

I've tried to act on the scale of the last Transform node, without success.

1. Starting with a spiral. The start/end radius isn't all that useful, i just set them both to the same value. Increase the rotation count a bit so we can see what's going on. And move the spiral down 1 unit so its center is at zero (that makes the following math easier)
2. Now i want to offset the curve points such that they form the sphere. Good old Pythagoras helps us here: We keep the Z component the same (so as to not distort the spiral's pitch). The distance to the Z axis must then be sqrt(x^2 + y^2) = sqrt(1 - z^2). Because the original spiral has a radius of 1 we can just multiply x and y by that factor, and voilà.
• Very clear and works perfectly, thanks!
– Karl
Commented Jun 4, 2022 at 17:32

I you want to have an exact sphere, you should go for the solution of lukas_t. But if you just want to have it a bit more spherical and want to play around with the shape, you may take a look at this approach.

Just as lukas_t, this solution starts with a spiral, that has start and end radius set to the same value.

Next we add an offset to the point positions. To calculate this offset, we map the z-position to a value between 0 and $$\pi$$. This allows us to use the sine function to get a factor, that we apply on the x- and y-position. Finally we use another factor to define the maximum radius of the spiral.

I have another solution that allows you to easily make any shape you like by mapping the XY scale to a float curve.

Spherical:

Custom shape:

Geometry nodes:

Start by setting the Start and End radius to the same value so we have a straight spiral. We then remap our Z position based on the height value. This gives us a 0 to 1 range that goes from the bottom to the top of the spiral. Next we plug that result into a float curve and multiply our X and Y positions by the result. Then combine that with our original Z value.

Now the float curve controls the width of the spiral over its height and you can reshape it however you like.