La legge di Hooke – 2

Un oggetto si muove in verticale secondo la legge di Hooke

  • y_0 = 0
  • k = 10, per bilanciare g
\vec{F_1} = -k\cdot \vec{y}
\vec{F_2} = m\vec{g}
\displaystyle \vec{F} = m \vec{a}\displaystyle \vec{a} = \frac{\vec{F}}{m}
\vec{v_0} = \vec{0}\displaystyle \frac{\vec{\Delta v}}{\Delta t} = \vec{a}\displaystyle \vec{\Delta v} = \vec{a}\cdot \Delta t\vec{v} += \vec{\Delta v}
\vec{s_0} = \vec{0}\displaystyle \frac{\vec{\Delta s}}{\Delta t} = \vec{v}\displaystyle \vec{\Delta s} = \vec{v}\cdot \Delta t\vec{s} += \vec{\Delta s}
from vpython import *

c  = canvas(width=480, height=640, align="left")
g  = graph(title = "y(t)", align="right")
gc = gcurve(color=color.cyan, width=5)

 
DIM   = 1        # LATO DEL CUBO
START = 0        # ORDINATA POSIZIONE INIZIALE
SPESS = DIM/10
 
parete    = box  (pos=vector(0, 2*DIM, 0)              , size=vector(DIM, SPESS, DIM))
pavimento = box  (pos=vector(0, -DIM/2, -(DIM+SPESS)/2), size=vector(DIM, 5*DIM, SPESS))
zero      = box  (pos=vector(0, 0, -(DIM+SPESS)/2)     , size=vector(DIM, SPESS, SPESS),
            color=color.red)
molla     = helix(pos=vector(0, 2*DIM, 0)              , size=vector(2*DIM, DIM/2, DIM/2),
            color=color.cyan, coils=20)  
oggetto   = box  (pos=vector(0, START, 0)              , size=vector(DIM, DIM, DIM), 
            color=color.yellow)

molla.rotate(angle=-pi/2, axis=vector(0,0,1))
oggetto.velocità = vector(0,0,0)
   
k = 10    # costante elastica
g = 9.81  # costante
m = 1     # massa dell'oggetto
t = 0     # tempo
 
dt = 0.05
while(t < 2*tau):
    rate(25)
   
    F = -k*oggetto.pos.y-m*g
    a = F/m
       
    oggetto.velocità += vector(0, a, 0) * dt
    oggetto.pos      += oggetto.velocità * dt  
    molla.length      = 2*DIM - oggetto.pos.y

    gc.plot(t, oggetto.pos.y)
   
    t += dt

Lascia un commento