# Untitled

unknown
plain_text
3 years ago
2.0 kB
0
Indexable
Never
```#Importamos vpython para generar la animacion
from vpython import*
#definimos la distancia de los
length = 30.

fric = 0.01
massball=1
mass=massball

#Información del sistema
scene2 = canvas(title='Masa con dos sistemas', width=400, height=200, center=vector(0,0,0), background=color.white)

#Información de la esfera

#Información de la pared derecha
wall_right=box(pos=vector(length,0,0), size= vector(0.2, 5, 5), color = color.green)

#Información de la pared izquierda
wall_left=box(pos=vector(-length,0,0), size= vector(0.2, 5, 5), color = color.green)

#información del resorte derecho
spring_right=helix(pos=wall_right.pos,axis=ball.pos - wall_right.pos,constant=1,coils = 10,thickness=0.2,radius=1, color = color.red)

#Información del resorte izquierdo
spring_left=helix(pos=wall_left.pos,axis=ball.pos-wall_left.pos,constant=1,coils = 10,thickness=0.2,radius=1, color = color.red)

#Interacción de la masa y resortes

def acc():
dr_right = ball.pos - wall_right.pos
force_right = -spring_right.constant*(mag(dr_right) - length)*norm(dr_right)
dr_left = ball.pos - wall_left.pos
force_left = -spring_left.constant*(mag(dr_left) - length)*norm(dr_left)
return (force_right+force_left)/ball.mass

#sliders para cambiar variables
scene2.caption = "Variación de la masa: Variación del radio:"
sl = slider(min=0.3, max=10, value=massball, length=220, bind=acc(), right=15)

sl2 = slider(min=0.3, max=10, value=radius, length=220, bind=acc(), right=15)

ball.trail=curve(color=ball.color)
t=0
dt=0.01

#ciclo principal
while (t<100):
rate(500)
ball.velocity=ball.velocity+acc()*dt
ball.pos=ball.pos+ball.velocity*dt
spring_right.axis=ball.pos - wall_right.pos
spring_left.axis=ball.pos - wall_left.pos
ball.trail.append(pos=ball.pos)
t=t+dt```