def mtest(self): from enthought.mayavi import mlab # Create the data. from numpy import pi, sin, cos, mgrid, arange, array ni = 100.0 dtheta, dphi = pi/ni, pi/ni #[theta,phi] = mgrid[0:pi+dtheta:dtheta,0:2*pi+dphi:dphi] #tlin = arange(0,pi+dtheta,dtheta) #plin = arange(0,2*pi+dphi,dphi) tlin = pi*array([0,.12,.2,.31,.43,.56,.63,.75,.87,.92,1]) plin = 2*pi*array([0,.11,.22,.34,.42,.58,.66,.74,.85,.97,1]) theta,phi = ndgrid(tlin,plin) fp = (1.0/6.0)*(cos(3.0*phi)+5.0) ft = (1.0/6.0)*(cos(10.0*theta)+5.0) r = fp*ft x = r*sin(theta)*cos(phi) y = r*sin(theta)*sin(phi) z = r*cos(theta) # View it. s = mlab.mesh(x, y, z, scalars=r) mlab.show() return
def etest(self): from enthought.mayavi import mlab from numpy import pi, sin, cos, exp, arange, array ni=10 dr, dphi, dtheta = 1.0/ni, 2*pi/ni, pi/ni rlin = arange(0.0,1.0+dr,dr) plin = arange(0.0,2*pi+dphi,dphi) tlin = arange(0.0,pi+dtheta,dtheta) r,phi,theta = ndgrid(rlin,plin,tlin) a=1 fr = .5*exp(-r/a)*(cos(2*pi*r/a)+1.0) fp = (1.0/6.0)*(cos(3.0*phi)+5.0) ft = (1.0/6.0)*(cos(10.0*theta)+5.0) f = fr*fp*ft x = r*sin(theta)*cos(phi) y = r*sin(theta)*sin(phi) z = r*cos(theta) #mayavi #mlab.contour3d(x,y,z,f) #mlab.contour3d(r,phi,theta,f) i=7 #mlab.mesh(x[i],y[i],z[i],scalars=f[i]) mlab.mesh(f[i]*x[i],f[i]*y[i],f[i]*z[i],scalars=f[i]) mlab.show() return
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