def test(self): from enthought.mayavi import mlab from numpy import array,dot,arange,sin,ogrid,mgrid,zeros n=10 n2=2*n s = '-'+str(n)+':'+str(n)+':'+str(n2)+'j' exec 'x, y, z = ogrid['+s+','+s+','+s+']' del s #x, y, z = ogrid[-10:10:20j, -10:10:20j, -10:10:20j] #x, y, z = mgrid[-10:11:1, -10:11:1, -10:11:1] s = sin(x*y*z)/(x*y*z) #xl = [-5.0,-4.2,-3.5,-2.1,-1.7,-0.4,0.7,1.8,2.6,3.7,4.3,5.0] #yl = [-5.0,-4.3,-3.6,-2.2,-1.8,-0.3,0.8,1.7,2.7,3.6,4.4,5.0] #zl = [-5.0,-4.4,-3.7,-2.3,-1.9,-0.4,0.9,1.6,2.8,3.5,4.5,5.0] dx = 2.0*n/(2.0*n-1.0) xl = arange(-n,n+dx,dx) yl = xl zl = xl x,y,z = ndgrid(xl,yl,zl) s2 = sin(x*y*z)/(x*y*z) #shear the grid nx,ny,nz = x.shape A = array([[1,1,-1],[1,-1,1],[-1,1,1]]) #A = array([[3,2,1],[0,2,1],[0,0,1]]) #A = array([[4,7,2],[8,4,3],[2,5,3]]) #A = 1.0*array([[1,2,3],[4,5,6],[7,8,9]]).transpose() r = zeros((3,)) np=0 for i in range(nx): for j in range(ny): for k in range(nz): r[0] = x[i,j,k] r[1] = y[i,j,k] r[2] = z[i,j,k] #print np,r[0],r[1],r[2] np+=1 r = dot(A,r) x[i,j,k] = r[0] y[i,j,k] = r[1] z[i,j,k] = r[2] #end for #end for #end for s2 = sin(x*y*z)/(x*y*z) mlab.contour3d(x,y,z,s2) mlab.show() out = QAobject() out.x=x out.y=y out.z=z out.s=s2 out.A=A return out