How to find evenly spaced coordinates/point cloud of an object? I'd like to convert a mesh object into a point cloud. I started using the vertices:

coordinates = []
for x in range(len(obj.data.vertices)):
    v = obj.matrix_world * obj.data.vertices[x].co
    coordinates.append(v)


Plotting the coordinates I get a point cloud as expected:


However, depending on the mesh, there are huge irregular gaps between the points. Is there a way to "interpolate" between the coordinates to get a regular pointcloud? 

I found this proposal but couldn't make use of it.
A solution is to set particles on the object and to use GRID instead of (default) random in the settings
(Note that also works on Volume, if the case, to fill with points)

Use No for physics to get fixed particles.



To further get the coordinates of those particles use:

gridVectors = [p.location for p in bpy.data.objects['Cube'].particle_systems[0].particles]


that if u need to further use coords in script



Also note that the grid acts a bit weird sometimes, more like the remesh tools, so the particles may or may not be on the faces, but rather at a distance, not quite controllable.

In the pic, I added particles to these meshes with settings as shown.