There is no quick or certain algorithm to find the best arrangement of N nodes on a sphere, but here are three that may be good enough.

The first column shows Dave Rusin's "disco ball": place the nodes along rows equally spaced by latitude, with as many in each row as will fit at that same distance from each other. (I also show what happens if the spacing is tightened to admit at least one more node without changing the number of rows.)

The other two rules each divide the sphere into bands of equal area, and place one node at some longitude in the middle of the band.

In the middle column, the longitude steps by a constant interval, a golden section of the circle. Because the golden section (sqrt(5)-1)/2 is the most irrational number, this avoids a near-repeat of the same longitude in any nearby band. (This method has been independently found by many amateurs including me.)

In the right column, the method of
Saff and Kuijlaars
places the nodes in a more obvious single spiral,
making the distance between adjacent nodes
approximately equal to that between successive turns
of the spiral.
(Note: The page cited confuses *phi* with *theta*.)

In these images the nodes are centers of white discs of equal size, chosen so that none overlap but somewhere on the sphere there is at least one point where two discs meet. The number below each image is the ratio of the diameter of the overall sphere to that of the discs.

The red rings around the white discs
show the half-distance to *that* node's nearest neighbor.
A perfectly even packing would show no red at all.

As you can see, Rusin's rule gives the densest packings, but because its anisotropy is more obvious I find it less pretty than the others; for the same reason I would not be surprised if it is less useful for some purposes.

Rusin's disco ball | golden sector | Saff & Kuijlaars | |
---|---|---|---|

006 | 1.414214 (optimal) |
1.587431 |
1.762795 |

007 | 1.701302 |
1.709011 |
1.912087 |

012 | 2.000000 |
2.244487 |
2.529424 |

014 | 2.309401 |
2.424840 |
2.737578 |

020 | 2.613126 |
2.898101 |
3.283709 |

023 | 2.923804 |
3.107512 |
3.525160 |

030 | 3.236068 |
3.548099 |
4.032681 |

034 | 3.402603 |
3.776758 |
4.295845 |

044 | 3.863703 |
4.295342 |
4.892192 |

049 | 4.178581 |
4.532396 |
5.164602 |

058 | 4.493959 |
4.930419 |
5.621770 |

064 | 4.609530 |
5.178784 |
5.906922 |

078 | 5.125831 |
5.716461 |
6.523982 |

085 | 5.464102 |
5.967150 |
6.811580 |

098 | 5.758770 |
6.406732 |
7.315756 |

106 | 6.010855 |
6.662840 |
7.609432 |

124 | 6.392453 |
7.205870 |
8.231983 |

133 | 6.726918 |
7.462578 |
8.526229 |

146 | 7.026674 |
7.818511 |
8.934159 |

156 | 7.201051 |
8.081644 |
9.235698 |

176 | 7.661298 |
8.583742 |
9.811012 |

186 | 7.931559 |
8.824082 |
10.086371 |

208 | 8.296230 |
9.331065 |
10.667169 |

222 | 8.684322 |
9.639817 |
11.020843 |

244 | 8.931404 |
10.105957 |
11.554764 |

255 | 9.249067 |
10.331142 |
11.812679 |

278 | 9.566772 |
10.786804 |
12.334540 |

290 | 9.882249 |
11.017061 |
12.598236 |

318 | 10.202297 |
11.536470 |
13.193047 |

331 | 10.520110 |
11.769834 |
13.460278 |

358 | 10.837951 |
12.240306 |
13.999004 |

386 | 11.567274 |
12.709821 |
14.536611 |

404 | 11.473713 |
13.002702 |
14.871956 |

434 | 12.217355 |
13.476700 |
15.414662 |

448 | 12.109566 |
13.692285 |
15.661490 |

480 | 12.869074 |
14.172741 |
16.211562 |

home | blog | links | Anton Sherwood

this page created 2004 Aug 08, modified Aug 21; links corrected 2013 Apr 08