def main(): # Creating parameters for box size side = 4.0 thk = 0.3 s2 = 2 * side - thk s3 = 2 * side + thk # Creating the 6 walls wallR = box(pos=(side, 0, 0), size=(thk, s3, s2), color=(1, 0, 0)) wallL = box(pos=(-side, 0, 0), size=(thk, s3, s2), color=(1, 0, 0)) wallB = box(pos=(0, -side, 0), size=(s3, thk, s3), color=(0, 0, 1)) wallT = box(pos=(0, side, 0), size=(s3, thk, s3), color=(0, 0, 1)) wallBK = box(pos=(0, 0, -side), size=(s2, s2, thk), color=(0.7, 0.7, 0.7)) # Creating the ball ball = sphere(radius=0.4, color=(0, 1, 0)) ball.vector = vector(-0.15, -0.23, 0.27) side = side - thk * 0.5 - ball.radius ball.t = 0.0 ball.dt = 0.5 def anim(): # Creating the animation function which will be called at # uniform timeperiod through the iterate function ball.t = ball.t + ball.dt ball.pos = ball.pos + ball.vector * ball.dt if not (side > ball.x > -side): ball.vector.x = -ball.vector.x if not (side > ball.y > -side): ball.vector.y = -ball.vector.y if not (side > ball.z > -side): ball.vector.z = -ball.vector.z a = iterate(20, anim) show() return a
def main(): # Creating parameters for box size side = 4.0 thk = 0.3 s2 = 2 * side - thk s3 = 2 * side + thk # Creating the 6 walls wallR = box(pos=(side, 0, 0), size=(thk, s3, s2), color=(1, 0, 0)) wallL = box(pos=(-side, 0, 0), size=(thk, s3, s2), color=(1, 0, 0)) wallB = box(pos=(0, -side, 0), size=(s3, thk, s3), color=(0, 0, 1)) wallT = box(pos=(0, side, 0), size=(s3, thk, s3), color=(0, 0, 1)) wallBK = box(pos=(0, 0, -side), size=(s2, s2, thk), color=(0.7, 0.7, 0.7)) # Creating the ball ball = sphere(radius=0.4, color=(0, 1, 0)) ball.vector = vector(-0.15, -0.23, 0.27) side = side - thk * 0.5 - ball.radius ball.t = 0.0 ball.dt = 0.5 def anim(): #Creating the animation function which will be called at #uniform timeperiod through the iterate function ball.t = ball.t + ball.dt ball.pos = ball.pos + ball.vector * ball.dt if not (side > ball.x > -side): ball.vector.x = -ball.vector.x if not (side > ball.y > -side): ball.vector.y = -ball.vector.y if not (side > ball.z > -side): ball.vector.z = -ball.vector.z a = iterate(20, anim) show() return a
from enthought.tvtk.tools.visual import curve, box, vector, show from numpy import arange, array lorenz = curve(color=(1, 1, 1), radius=0.3) # Draw grid for x in xrange(0, 51, 10): curve(points=[[x, 0, -25], [x, 0, 25]], color=(0, 0.5, 0), radius=0.3) box(pos=(x, 0, 0), axis=(0, 0, 50), height=0.4, width=0.4, length=50) for z in xrange(-25, 26, 10): curve(points=[[0, 0, z], [50, 0, z]], color=(0, 0.5, 0), radius=0.3) box(pos=(25, 0, z), axis=(50, 0, 0), height=0.4, width=0.4, length=50) dt = 0.01 y = vector(35.0, -10.0, -7.0) pts = [] for i in xrange(2000): # Integrate a funny differential equation dydt = vector(-8.0 / 3 * y[0] + y[1] * y[2], -10 * y[1] + 10 * y[2], -y[1] * y[0] + 28 * y[1] - y[2]) y = y + dydt * dt pts.append(y) if len(pts) > 20: lorenz.extend(pts) pts[:] = [] show()
box (pos = (xx,yy,zz), length=x, height=y, width=z, color=(red,green,blue)) def wirecube(s): c = curve(color = (1,1,1), radius=1) pts = [(-s, -s, -s),(-s, -s, s), (-s, s, s), (-s, s, -s), (-s, -s, -s), (s, -s, -s), (s, s, -s), (-s, s, -s), (s, s, -s), (s, s, s), (-s, s, s), (s, s, s), (s, -s, s), (-s, -s, s), (s, -s, s),(s, -s, -s)] for pt in pts: c.append(pt) side = 150.0 cube = box(size = (side,side,side), representation = 'w' ) i = 0 while i < 100: random_box() i = i + 1 arrow(axis=(0,12,0), radius_shaft=3.5, color = (1,0,0)) ball = sphere(pos=(-side/2.,-side/2.,-side/2.),color=(1,1,0),radius=3) disk = cylinder(pos=(side/2.,side/2.,-side/2.),color=(.3,.3,1),axis=(1,1,0),radius=5) xx = arange(0,4*pi,pi/10.) spring=curve(color=(1,.7,.1), radius=0.4) for y in xx: spring.append([20+cos(2*y), y/2.-30, -20+sin(2*y)+30]) show()
size=(grosor, largo + 2*grosor, grosor), \ color=(0.6, 0.3, 0.0) ) muro_d = visual.box( pos=(ancho/2., -grosor/2., 0.0), \ size=(ancho + 2*grosor, grosor, grosor), \ color=(0.6, 0.3, 0.0) ) muro_u = visual.box( pos=(ancho/2., largo+grosor/2., 0.0), \ size=(ancho + 2*grosor, grosor, grosor), \ color=(0.6, 0.3, 0.0) ) #ITERACION DEL SISTEMA def anim(): #Evolucion de la bola 1 bola1.t = bola1.t + bola1.dt i = bola1.t bola1.pos = visual.vector(x1_t[i], y1_t[i], r1) #Evolucion de la bola 2 bola2.t = bola2.t + bola2.dt i = bola2.t bola2.pos = visual.vector(x2_t[i], y2_t[i], r2) #Evolucion de la bola 3 bola3.t = bola3.t + bola3.dt i = bola3.t bola3.pos = visual.vector(x3_t[i], y3_t[i], r3) a = visual.iterate(10, anim) visual.show()
def main(): dt = 0.1 x = arange(-50, 50) wpoints1 = zeros((100, 3), float) wpoints2 = zeros((100, 3), float) wpoints3 = zeros((100, 3), float) wpoints4 = zeros((100, 3), float) for i in range(0, 100, 1): wpoints1[i] = [x[i], -30, 0] wpoints2[i] = [x[i], -15, 0] wpoints3[i] = [x[i], 0, 0] wpoints4[i] = [x[i], 15, 0] band1 = Curve(points=wpoints1, k=6.0, color=(1, 0, 0), mass=2.0, radius=0.5, momentum=zeros((100, 3), float)) band2 = Curve(points=wpoints2, k=6.0, color=(1, 1, 0), mass=2.0, radius=0.5, momentum=zeros((100, 3), float)) band3 = Curve(points=wpoints3, k=6.0, color=(0, 1, 0), mass=2.0, radius=0.5, momentum=zeros((100, 3), float)) band4 = Curve(points=wpoints4, k=6.0, color=(0, 0, 1), mass=2.0, radius=0.5, momentum=zeros((100, 3), float)) for i in range(0, 25, 1): band1.momentum[i, 1] = sin(x[i] * pi / 25.0) * 3 # half-wave pulse for i in range(0, 25, 1): band2.momentum[i, 1] = sin(x[i] * 2 * pi / 25.0) * 5 # full-wave pulse for i in range(0, 25, 1): band3.momentum[i, 0] = sin(x[i] * pi / 25.0) * 5 # compresion pulse for i in range(0, 100, 1): band4.momentum[i, 1] = sin(x[i] * 4 * pi / 100.0) * 2 # standing wave def anim(): band1.momentum[0] = band1.momentum[-1] = MVector(0, 0, 0) band2.momentum[0] = band2.momentum[-1] = MVector(0, 0, 0) band3.momentum[0] = band3.momentum[-1] = MVector(0, 0, 0) band4.momentum[0] = band4.momentum[-1] = MVector(0, 0, 0) band1.points = band1.points + (band1.momentum / band1.mass * dt) band2.points = band2.points + (band2.momentum / band2.mass * dt) band3.points = band3.points + (band3.momentum / band3.mass * dt) band4.points = band4.points + (band4.momentum / band4.mass * dt) force1 = band1.k * (band1.points[1:] - band1.points[:-1]) force2 = band2.k * (band2.points[1:] - band2.points[:-1]) force3 = band3.k * (band3.points[1:] - band3.points[:-1]) force4 = band4.k * (band4.points[1:] - band4.points[:-1]) band1.momentum[:-1] = band1.momentum[:-1] + force1 * dt band2.momentum[:-1] = band2.momentum[:-1] + force2 * dt band3.momentum[:-1] = band3.momentum[:-1] + force3 * dt band4.momentum[:-1] = band4.momentum[:-1] + force4 * dt band1.momentum[1:] = band1.momentum[1:] - force1 * dt band2.momentum[1:] = band2.momentum[1:] - force2 * dt band3.momentum[1:] = band3.momentum[1:] - force3 * dt band4.momentum[1:] = band4.momentum[1:] - force4 * dt a = iterate(20, anim) show() return a
muro_r = visual.box( pos=(ancho+grosor/2., largo/2., 0.0), \ size=(grosor, largo + 2*grosor, grosor), \ color=(0.6, 0.3, 0.0) ) muro_d = visual.box( pos=(ancho/2., -grosor/2., 0.0), \ size=(ancho + 2*grosor, grosor, grosor), \ color=(0.6, 0.3, 0.0) ) muro_u = visual.box( pos=(ancho/2., largo+grosor/2., 0.0), \ size=(ancho + 2*grosor, grosor, grosor), \ color=(0.6, 0.3, 0.0) ) #ITERACION DEL SISTEMA def anim(): #Evolucion de la bola 1 bola1.t = bola1.t + bola1.dt i = bola1.t bola1.pos = visual.vector( x1_t[i], y1_t[i], r1 ) #Evolucion de la bola 2 bola2.t = bola2.t + bola2.dt i = bola2.t bola2.pos = visual.vector( x2_t[i], y2_t[i], r2 ) #Evolucion de la bola 3 bola3.t = bola3.t + bola3.dt i = bola3.t bola3.pos = visual.vector( x3_t[i], y3_t[i], r3 ) a = visual.iterate(10, anim) visual.show()
def main(): dt = 0.1 x = arange(-50,50) wpoints1 = zeros((100,3), float) wpoints2 = zeros((100,3), float) wpoints3 = zeros((100,3), float) wpoints4 = zeros((100,3), float) for i in range (0,100,1): wpoints1[i] = [x[i], -30, 0] wpoints2[i] = [x[i], -15, 0] wpoints3[i] = [x[i], 0, 0] wpoints4[i] = [x[i], 15, 0] band1 = Curve(points = wpoints1, k = 6.0, color = (1,0,0), mass = 2.0, radius = 0.5, momentum = zeros((100, 3), float)) band2 = Curve(points = wpoints2, k = 6.0, color = (1,1,0), mass = 2.0, radius = 0.5, momentum = zeros((100, 3), float)) band3 = Curve(points = wpoints3, k = 6.0, color = (0,1,0), mass = 2.0, radius = 0.5, momentum = zeros((100, 3), float)) band4 = Curve(points = wpoints4, k = 6.0, color = (0,0,1), mass = 2.0, radius = 0.5, momentum = zeros((100, 3), float)) for i in range(0,25,1): band1.momentum[i,1] = sin(x[i]*pi/25.0)*3 # half-wave pulse for i in range(0,25,1): band2.momentum[i,1] = sin(x[i]*2*pi/25.0)*5 # full-wave pulse for i in range(0,25,1): band3.momentum[i,0] = sin(x[i]*pi/25.0)*5 # compresion pulse for i in range(0,100,1): band4.momentum[i,1] = sin(x[i]*4*pi/100.0)*2 # standing wave def anim(): band1.momentum[0] = band1.momentum[-1] = MVector(0,0,0) band2.momentum[0] = band2.momentum[-1] = MVector(0,0,0) band3.momentum[0] = band3.momentum[-1] = MVector(0,0,0) band4.momentum[0] = band4.momentum[-1] = MVector(0,0,0) band1.points = band1.points + (band1.momentum/band1.mass*dt) band2.points = band2.points + (band2.momentum/band2.mass*dt) band3.points = band3.points + (band3.momentum/band3.mass*dt) band4.points = band4.points + (band4.momentum/band4.mass*dt) force1 = band1.k * (band1.points[1:] - band1.points[:-1]) force2 = band2.k * (band2.points[1:] - band2.points[:-1]) force3 = band3.k * (band3.points[1:] - band3.points[:-1]) force4 = band4.k * (band4.points[1:] - band4.points[:-1]) band1.momentum[:-1] = band1.momentum[:-1] + force1 * dt band2.momentum[:-1] = band2.momentum[:-1] + force2 * dt band3.momentum[:-1] = band3.momentum[:-1] + force3 * dt band4.momentum[:-1] = band4.momentum[:-1] + force4 * dt band1.momentum[1:] = band1.momentum[1:] - force1 * dt band2.momentum[1:] = band2.momentum[1:] - force2 * dt band3.momentum[1:] = band3.momentum[1:] - force3 * dt band4.momentum[1:] = band4.momentum[1:] - force4 * dt a = iterate(20, anim) show() return a