I am working on a script which generates Centroidal Voronoi Tesselations (CVT) of open surfaces in 3D space. The surfaces can be thought of as partial surfaces of smooth objects, represented by a point cloud. A simple example would be the top half of a sphere, represented by a numpy array of x,y,x points. [[x1, y1, z1], [x2, y2, z2], ..., [xn, yn, zn]].
My code splits this point cloud into CVT regions, where each x,y,z point is assigned to one region. For each point in a region, the surface centroid of that region is the closest centroid to that point.
A CVT region is analogous to a k-means clustering. In this case, all the points being clustered are on a "smooth" surface.
I want to plot the resultant regions as a smooth, meshed surface, with lines showing the borders between each region.
I've tried using scipy.spatial Delaunay, and other meshing tools, but they all come out very ugly. Some tesselations, such as with alphashape, attempt to make a 3D hull (convex or non-convex), which is not correct.