Something I found out recently. Been having fun playing with it:
vpython.org
from visual import *
for i in range(21):
for j in range(21):
for k in range(21):
u = i/10-1
v = j/10-1
w = k/10-1
factor = 1/(u*u+1)
angle = u * pi * .3
x = u
y = factor*(cos(angle)*v-sin(angle)*w)
z = factor*(sin(angle)*v+cos(angle)*w)
radius = sqrt(v*v + w*w)
if(abs(radius-.3)<.1 and y > 0):
box(pos=(x,y,z), size=(.05,.05,.05),color=color.cyan)