8 c = [(0.25*N, 0.25*N, 0.25*N), (0.75*N, 0.75*N, 0.25*N),
9 (0.75*N, 0.25*N, 0.75*N), (0.25*N, 0.75*N, 0.75*N)]
10 g = np.arange(N) + 0.5
11 X, Y, Z = np.meshgrid(g, g, g, indexing=
"ij")
12 sdf = np.full((N, N, N), 1e30)
13 for (cx, cy, cz)
in c:
14 dx = np.abs(X-cx); dx = np.minimum(dx, N-dx)
15 dy = np.abs(Y-cy); dy = np.minimum(dy, N-dy)
16 dz = np.abs(Z-cz); dz = np.minimum(dz, N-dz)
17 sdf = np.minimum(sdf, np.sqrt(dx*dx+dy*dy+dz*dz) - R)