To make it work in code form, you need to parameterize the surface in 2D. For example, in the case of the ball (r, theta, psi), the radius is constant (drops out), and the points are set (theta, psi), which is 2D.
Scipy Delaunay is an N-dimensional triangulation, so if you give 3D points, it returns 3D objects. Give it 2D points and it will return 2D objects.
Below is the script that I used to create polyhedrons for openSCAD. U and V are my parameterization (x and y), and these are the coordinates that I give to Delaunay. Please note that now the “Delaunay triangulation properties” are applied only in u, v coordinates (angles are maximized in uv-space, but not in xyz-space, etc.).
An example is a modified copy of http://matplotlib.org/1.3.1/mpl_toolkits/mplot3d/tutorial.html , which initially uses the triangulation function (maps in the end?)
import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D import matplotlib.tri as mtri from scipy.spatial import Delaunay

Below is a (slightly more structured) text:
polyhedron( faces = [[2,1,0], [3,2,0], [4,2,3], [2,4,1], ], points = [[0.000000,0.000000,0.000000], [0.000000,1.000000,0.000000], [0.500000,0.500000,1.000000], [1.000000,0.000000,0.000000], [1.000000,1.000000,0.000000], ]);