Method for evenly distributing points on a sphere with a symmetry constraint All of the methodologies for evenly distributing points on a sphere that I have found are largely asymmetric. I require an approximation that maximizes minimum distance between a given point and its neighbors under the constraint of reflectional symmetry across the X, Y, and Z axes.
In this case, an entire sphere of points could be generated from points distributed on one-fourth of a hemisphere (those whose cartesian coordinates are all positive, given an origin at the center of the sphere, for example).
What methods could be adapted to find a reasonable approximation given this constraint?
 A: Let your desired minimum distance between points be d. We are going to adapt Robert Bridson's Poisson-disc sampling algorithm, which guarantees a separation of at least d between points, for the positive octant of the sphere.
Since the distribution is symmetric about the three axes, any point that comes within $\frac d2$ distance of the xy, xz or yz planes will be too close to its symmetrical image and can be discarded. Call the remaining part of the octant T, and do the following:


*

*Pick a point at random within T to seed the algorithm. Initialise an output list and an active list with this point.

*(1) Until the active list is empty:


*

*Pick a random point P in the active list.

*(2) For k iterations, where k is a number that determines the tightness of the point distribution (I prefer 32):


*

*Generate a random point in the annulus of inner radius d and outer radius $2d$ centred on P.

*Check if this point is within T and at least a distance d from all other points in the output list (any efficient data structure, like an octree, can be used to test the latter condition). If both checks pass, add the generated point to the active and output lists, and return to (1); otherwise start a new iteration of (2).


*If k iterations pass without a new point being accepted, remove P from the active list and return to (1).


*When no more points remain in the active list, the algorithm has terminated. Return the points in the output list, reflected in the three axes to enforce the symmetry constraint.

