Golf ball? Evenly spaced points on a sphere?


The search feature on this forum often fails to find results where a Google search is more successful, but in this case, it’s not very helpful either (though I didn’t dig too deep):

I found this Grasshopper effort by @ckmok (a member of this forum) but the GH is incomplete, not fully parametric and relies on a list of 780 triangular surfaces in a Rhino file that form a sphere to generate 392 dimples. I can’t recommend it.

FYI, from Wikipedia:

The Rules of Golf […] state that the diameter of a “conforming” golf ball cannot be any smaller than 1.680 inches ( 42.67 mm )…

I found these helpful pages answering the question “How many dimples on a golf ball?”, and providing interesting insights into the effects of dimples:

… golf ball manufacturers have left no dimple unturned in their quest for the best-performing ball. Back in the 1970s, Uniroyal (yes, the US rubber tire company) made a big splash in clubhouses with its Royal Plus Six ball featuring hexagon-shaped depressions. At the same time, the Wilson golf balls won over consumers with its ProStaff line that had little truncated cones.

The zenith for dimple experimentation was reached in 1970’s with the release of the Polara. This magical orb differentiated the size of the dimples by featuring lighter pits towards the ends than it did in its middle. The results it produced were so good that they were deemed illegal by the United States Golf Association. The original Polara was outlawed for its superiority, but golfers couldn’t resist; in fact, you can still buy the “outlawed” Polara ball today from certain retailers.

Summarized most succinctly in the last one:

The number of dimples on a golf ball varies, depending on the manufacturer and may even be different for different models made by the same manufacturer. The dimples are usually the same size as one another, but some golf balls have several different sizes of dimple on the same ball. Any number between 300 and 500 dimples is reasonable, and 336 is a common number. Not just any number will do. Golf balls are usually covered with dimples in a highly symmetrical way, and for many values of N, it is impossible to cover the golf ball uniformly without gaps. Symmetry is important or the ball will wobble or its flight will depend on which part of the ball is forwards or sideways as the ball spins. You can get an idea of how to space dimples uniformly around a sphere by thinking about the “platonic solids”…

I don’t particularly need a GH model for this myself, and am guessing a plugin may be required? But I am surprised that there isn’t already an off-the-shelf GH solution on this forum?

I think you could just make a mesh polyhedra at that dimple count and indent the faces. Check out @dale’s Polyhedra and IcoSphere plugins for Rhino which has a big library of them that you can probably use as a base.

I had seen RhinoPolyhedra and just installed IcoSphere but a) these are Rhino commands, not GH(?) and b) no matter what I try, including MeshIcoSphere, I can’t seem to set the number of sides? I don’t know how to get IcoSphere to work at all?

I also saw the LunchBox Platonic Icosahedron but it implies 20 sides, fixed, not polyhedron?

I squandered more time investigating a C# component I found here, in a model by @laurent_delrieu :

It looked promising but the C# code looks sketchy and produces output in steps, as ‘nfaces’ ranges from 1 to one hundred thousand(!), the actual number of mesh faces are 20, 80, 320, 1280, 5120, 20480 or 81920. Weird.

This part must be a very common GH question, so why is the answer so hard to find?

I had seen RhinoPolyhedra and just installed IcoSphere but a) these are Rhino commands, not GH(?)

See my comment where I say “that you can probably use as a base.”
My initial instinct would be to start with one of those geometries referenced into GH and then subdivide it in GH possibly with weaverbird or some other mesh subdivider. You can probably do the same with the Lunchbox one as a base for further subdividing.

In other words, nothing exists in Grasshopper to create a polyhedron with and arbitrary number of sides? That’s a big WOW:frowning:

How about PopGeo on a sphere and then use Kangaroo to rearrange the points evenly?

This is way too much work for a trivial part of an unrelated model.

There is Facet Dome under the Mesh > Triangulation tab

If you want something symmetrical it makes sense to base the point distribution on a platonic solid.
I didn’t see a picture, but I’d guess that the 336 dimples would be arranged with 28 similarly arranged on each face of a dodecahedron (projected to a sphere)

Quick Implementation with RhinoPolyhedra’s Dual Geodesic Icosahedron(Face count 312)+Catmull-Clack subdivision.


@Joseph_Oster my script is a reproduction of that
I preferred to put a number of face because it is better than a subdivision level.

I don’t don’t have the knowledge and skills needed for Kangaroo or “Catmull-Clack subdivision” solutions, if they exist without using Rhino commands. (18.9 KB)

A picture of a golf ball? Some images from Google are “fake” CAD efforts, clearly flawed. Even real golf balls differ widely in patterns, some using a mixture of different size dimples. Here’s one from Titleist:

Heh, heh. Looks pretty good but I already failed at RhinoPolyhedra today and prefer a pure GH solution anyway. The reference to Catmull-Clack may be useful if I wanted to go even deeper into these weeds (or this rough, so to speak), but all of this is very far removed from my project. I’m often willing to research tangential subjects but I’ve had it with this one for now. I want an an off-the-shelf GH solution for generating evenly spaced points on a sphere, at the very least. With that, I can make the dimples.

1 Like

Thanks @dale, I saw that one too and followed the link to RhinoPolyhedra. I thought I had already installed it but to be sure, I downloaded and installed it again. Restarted Rhino. But I’m lost in trying to use it or IcoSphere.


How do I invoke your plugins? Why is WatermanPolyhedron showing up when I have disabled it? (though as expected, I get this when I use it: “Unknown command: WatermanPolyhedron”) Where do ‘HugelPolyhedron’, ‘PentagonPolyhedron’ and ‘SchonhardtPolyhedron’ come from?

P.S. I found ‘MeshIcoSphere’ but again, can’t seem to control the number of faces or vertices?

There is some math that describes packing circles onto a sphere in the Rhino Python Primer, (page 61/62). Maybe that helps?

I’ve only used methods recommended by others to create a similar effect with Polyhedra & Mesh subdivision.
You can do it the way you want. It’s a personal preference.
BTW, what’s so meaningful about Pure GH way? Is it a kind of game with no plugin challenge?:wink:
Anyway, it won’t be hard to use Nurbs, either. It’s just that it takes more calculations…


I mistakenly replied in an old thread and am now prevented from re-posting my reply here…

I scrolled down that page and started to watch the video (out of desperation) and noticed a reference to this wiki page, which I carefully typed in by hand:
This topic does not exist yet

So searched the wiki for “rhinopolyhedra” and clicked the suggested link under “Matching pagenames”:

It goes here:

Endless loop! Wild goose chase. This has been a colossal and frustrating distraction.

I can’t seem to do it any way all. How pathetic.

Yes. To elaborate slightly, I’m not entirely opposed to plugins. Sometimes it’s the best or only way to get the job done. This morning I needed a standard hexhead bolt and nut so I explored and tried some things, found the GH solutions wanting and quickly settled on the BoltGen Rhino plugin. I got exactly what I needed quickly and moved on.

Evenly spaced points on a sphere (or other surface) is a common question on this forum that I’ve never paid much attention to as I didn’t need it. Devoting most of an entire day searching and failing to get anywhere close to my objective is quite annoying!!

I have no idea why suggestions from you and @dale don’t work for me?

I find it pretty interesting that there are asymmetric designs for the dimple distribution that can supposedly correct badly hit shots!

Optimal distributions of particular numbers of circles on a sphere is an interesting problem generally, as for many numbers the solution is not symmetrical, and for even quite low numbers there isn’t a proven optimum known. See the Tammes problem and Thomson problem:

(This is an aside though - if the aim is to model something that looks like a typical golf ball for a rendering, then I think several of the methods already posted above can get you there)

1 Like

I find it pretty interesting that there are asymmetric designs for the dimple distribution that can supposedly correct badly hit shots!

Same goes for the patterning on the club :smiley:




Here’s a circle packing on a sphere in the current Kangaroo: (9.9 KB)

It’s still not clear to me exactly what you are after though.
Is this literally for a rendering of a golf ball? or you want to actually make a golf ball? or is it a more general question for some other application, and if so what?

If the requirement is to have a distribution of points (or dimple centres) on a sphere, all at exactly the same distance from their neighbours, then this is only possible for 4,6,8,12 or 20 points (ie the vertices of the 5 Platonic solids).
If instead you only want approximately equal distances, there are many possible options depending on exactly how you define the problem.

If you want something symmetrical and regular looking, and don’t need to be able to choose arbitrary numbers of points, I think subdividing an icosahedron using Weaverbird is the easiest way to do this in Grasshopper, like what @HS_Kim showed above.


Thank you very much Daniel, this is wonderful, both as a “good enough” solution and a concise example of how to use Kangaroo.
Having this little gem early yesterday would have spared me a world of grief…

I am not trying to design a better golf ball. It’s more a general question, motivated by failure to locate a decent CAD golf ball as a trivial part of an entirely unrelated project.

Would love to try that but no such code has been provided in this thread. While I’ve had Weaverbird and Kangaroo2 installed for a long time, I don’t use them or know how, so casual references aren’t helpful. I’m not prepared to invest the time to “master” mesh skills just to get a golf ball for rendering. I don’t even golf! :sunglasses:

Even to reconstruct a model from a screen shot, which I didn’t have until your post this morning, is asking a lot at this point. I may get there but have other things to do.

To the extent that earlier suggestions depended on RhinoPolyhedra and IcoSphere, I tried very hard but failed to to invoke those plugins, and still have no idea why? (because I’m using R5?)
‘BoltGen’, a Rhino plugin/command that I installed yesterday morning, worked immediately but not so with these two.

For whatever it’s worth, I mucked around with your code a little, not changing the guts at all but adding a separate ‘radius’ slider to Circle because they overlapped slightly using the same radius supplied earlier to SphereCollide. Then added Pull Curve to get the circles onto the surface of the sphere and Surface Split to cut holes.
WARNING!!! Both should be disabled when manipulating inputs to Kangaroo. Aside: there always seems to be one circle left uncut… but that’s irrelevant to the primary objective.

I also added a "Round to multiple of "Platonic values" group. No surprise that 360 is evenly divisible by all five “Platonic values”.

Thanks again very much. Pretty cool. (25.2 KB)