How to generate equidistributed points (evenly distributed) on the surface of a sphere, specifying the distance between neighbouring points

Viewed 589

In a nutshell:

I need an algorithm that can generate points on the surface of a sphere, and the euclidean distance between each point and its neighbors must be the same.

Here is a quick explanation about what I mean about that:

If the sphere was represented as a "geodesic polyhedron" ("geodesic sphere"), each side of all the triangles would have the same length. Note that it doesn't have to be a Geodesic grid or a geodesic polyhedron, it could be something else. I'm open to all suggestions.

The difficulty is that we must be able to specify the distance between the neighbouring points.

If it was a graph I would say that the edges should be the same length, and that the distance between the adjacent nodes / vertices should the same.

What I'm looking for:

  • an existing libray / function or algorithm that already solves this problem (but I doubt that it would be the case because I did a lot of research)
  • an implementation

Constraints of the algorithm:

Output:

  • an array of 3D (x,y,z) coordinates.

Input parameters:

  • 3D (x,y,z) coordinates of the sphere center
  • radius of the sphere
  • distance between neighbouring points (adjacent nodes)

What I've done:

  • I did a lot of research about the subject
  • I've read a lot of papers an articles
  • I implemented some algorithms I found

I found a lot of good papers and resources about related problems, but nothing for this specific case. So after days of research, I ask people that have specialised knowledge of this area some help.

The closest solution I've found is the Deserno algorithm (see link below), but the problem is that its input parameters are the radius and a number of points to generate (we can't sepcify the coordinates of the sphere center an the distance between neighbouring points).

If it helps, here are some related questions and useful resources:

Evenly distributing n points on a sphere

Plotting points on the surface of a sphere in Python's matplotlib

https://en.wikipedia.org/wiki/Geodesic_grid

https://en.wikipedia.org/wiki/Geodesic_polyhedron

https://en.wikipedia.org/wiki/Spherical_polyhedron

Deserno algorithm: https://www.cmu.edu/biolphys/deserno/pdf/sphere_equi.pdf

Some representations to give an idea:

Evenly distributed points: enter image description here

Geodesic grid / geodesic polyhedron: enter image description here

Geodesic polyhedron zoom: Here, each point is at 10 centimeters of distance from its neighbors. enter image description here

0 Answers
Related