# To run Cartoon1_Talk_time_4s.py # first : Open Terminal Linux, ipython3 --matplotlib=qt (hit enter), %run Cartoon1_Talk_time_4s.py from mayavi import mlab import numpy as np from numpy import * # %% mlab.clf() # %% """ ## Ground Surface """ # %% xx=linspace(-20,40); yy=linspace(-10*pi,1*pi); [x,y]=meshgrid(xx,yy); z=sin(y)*cos(x); mlab.mesh(x,y,z-3) # %% #Adjustments wrt surface YM1 = -13 ZM1 = -1.5 XM2 = 31 ZMm = -10 # %% """ ## Mushrooms """ # %% x01 = -1.75 x02 = 4.25 s,t = mgrid[0:pi*2:100j, 0:pi*2:100j] r = 0.8*(t/(2*pi)) x = r * cos(s) y = r * sin(s) z = 3 - 2*(x*x + y*y) head1 = mlab.mesh(7*(x+x01),7*y-23,7*(z)+ZMm,colormap = 'afmhot') head2 = mlab.mesh(7*(x+x02),7*y-23,7*(z)+ZMm,colormap = 'afmhot') r = (0.5 - 0.1*sin(t/2)) x1 = r* cos(s) +x01 x2 = r* cos(s) +x02 y = r * sin(s) z= (t/(2*pi)*(1) + 1) stalk1 = mlab.mesh(7*x1,7*y-23,7*(z)+ZMm,colormap = 'copper') stalk2 = mlab.mesh(7*x2,7*y-23,7*(z)+ZMm,colormap = 'copper') # %% """ # Creature 1 """ # %% """ ## body - hyperboloid """ # %% u = linspace(-2,2,90) v = linspace(0,2*pi,90) [uu,vv] = meshgrid(u,v) x = cosh(uu)*cos(vv) y = cosh(uu)*sin(vv) z = sinh(uu) mlab.mesh(x,y+YM1,z+5+ZM1,colormap="flag") # %% """ ## circular swirl - Klien Bottle """ # %% aa=3;s=1; uu = linspace(0,2*pi) vv = linspace(0,6) [u,v] = meshgrid(uu,vv) x = (aa+cos(v/2)*sin(u)-sin(v/2)*sin(2*u))*cos(v) y = (aa+cos(v/2)*sin(u)-sin(v/2)*sin(2*u))*sin(v) z = sin(v/2)*sin(u)+cos(v/2)*sin(2*u) mlab.mesh(0.9*x,0.9*y+YM1,0.9*z+5+ZM1, colormap="BuPu") # %% """ ## face - sphere """ # %% uu = linspace(0,3) vv = linspace(0,6) u,v = meshgrid(uu,vv) x = cos(u)*cos(v) y = sin(u)*cos(v) z = sin(v) #mlab.clf() mlab.mesh(4*x,4*y+YM1,4*z+10+ZM1, colormap="Pastel2") # %% """ ## eye balls """ # %% x,y = mgrid[0:pi*2:1000j, 0:pi*2:1000j] u,v,w = 0.5*sin(y)*sin(x), 0.5*cos(y)*sin(x), 0.5*cos(x) mlab.mesh(u+1.3,v+2+YM1,w+13.5+ZM1,color=(0,0,0)) mlab.mesh(u-1.5,v+2+YM1,w+13.5+ZM1,color=(0,0,0)) # %% """ ## antenna - spring """ # %% t = linspace(0,45*pi, 100) x,y = 0.3*sin(t), 0.3*cos(t) z = 0.02*t mlab.plot3d(x-1,y+YM1,z+13.7+ZM1, color=(1,0,0)) mlab.plot3d(x+1,y+YM1,z+13.7+ZM1, color=(1,0,0)) # %% """ ## mouth - plate """ # %% xx=linspace(-0.5,0.5); yy=linspace(0,pi); [x,y]=meshgrid(xx,yy); z=5*sin(y); mlab.mesh(y-1.5,0.5*z+3.5+YM1,x+10.7+ZM1, colormap="Reds") # %% """ ## legs - cylinder """ # %% uu = linspace(0,2*pi,50); vv = linspace(0,2*pi,50); [u,v] = meshgrid(uu,vv); x = cos(u); y = sin(u); z = v; mlab.mesh(0.5*x-2,0.5*y+YM1,0.5*z-1.5+ZM1, colormap="prism") mlab.mesh(0.5*x+2,0.5*y+YM1,0.5*z-1.5+ZM1, colormap="prism") # %% """ # Creature 2 """ # %% """ ## body - a sea creature """ # %% xx,yy = mgrid[-5:5:17j, -5:5:17j] z = sin(np.sqrt(xx ** 2 + yy ** 2)) mlab.surf(xx-20+XM2,yy-20,z,warp_scale="auto", colormap="rainbow") # %% """ ## coverplate """ # %% xx= linspace(-5,5,10); yy=linspace(-5,5,10); [x,y]=meshgrid(xx,yy); sx = np.multiply(x,x) sy = np.multiply(y,y) z = sqrt(125-sx-sy); mlab.mesh(x-17+XM2,y-17,z-4, colormap="rainbow"); # %% """ ## outer eye """ # %% u, v = np.mgrid[0:2*np.pi:20j, 0:np.pi:10j] x = np.cos(u)*np.sin(v) y = np.sin(u)*np.sin(v) z = np.cos(v) mlab.mesh(2*x-18+XM2, 2*y-13.5, 2*z+2, color =(1,1,1)) # %% """ ## inner eye """ # %% u, v = np.mgrid[0:2*np.pi:20j, 0:np.pi:10j] x = np.cos(u)*np.sin(v) y = np.sin(u)*np.sin(v) z = np.cos(v) mlab.mesh(x-18.3+XM2, y-12.3, z+2.3, color=(0,0,0)) # %% """ ## mouth - boat shape """ # %% r = linspace(0,1) ; th = linspace(0,2*pi) ; [R,TH] = meshgrid(r,th) ; small_x = np.multiply(R,sin(TH)); x = 4*small_x ; y = np.multiply(R,cos(TH/2)); z = 3*np.multiply(R,R); mlab.mesh(x-18.5+XM2,y-11.3,z-0.8, colormap='Reds') # %% """ ## antenna - looping spherical harmonic """ # %% dphi, dtheta = pi/250.0, pi/250.0 [phi,theta] = mgrid[0:pi+dphi*1.5:dphi,0:2*pi+dtheta*1.5:dtheta] m0 = 4; m1 = 3; m2 = 2; m3 = 3; m4 = 6; m5 = 2; m6 = 6; m7 = 4; r = sin(m0*phi)**m1 + cos(m2*phi)**m3 + sin(m4*theta)**m5 + cos(m6*theta)**m7 x = r*sin(phi)*cos(theta) y = r*sin(phi)*sin(theta) z = r*cos(phi) for i in np.arange(16,19,0.5): mlab.mesh(x-i+XM2, y-17, z+7.9, colormap="rainbow") print("It took: seconds")