Un oggetto si muove in orizzontale secondo la legge di Hooke
![]() | |||
![]() | ![]() | ||
![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() |
La posizione iniziale dipende dalla costante START
from vpython import *
DIM = 1 # LATO DEL CUBO
START = +DIM # ASCISSA POSIZIONE INIZIALE
SPESS = DIM/10
parete = box (pos=vector(-2*DIM, 0, 0) , size=vector(SPESS, DIM, DIM))
pavimento = box (pos=vector(0, -(DIM+SPESS)/2, 0), size=vector(4*DIM, SPESS, DIM))
zero = box (pos=vector(0, -(DIM+SPESS)/2, 0), size=vector(SPESS, SPESS, DIM),
color=color.red)
molla = helix(pos=vector(-2*DIM, 0, 0) , size=vector(DIM+START, DIM/2, DIM/2),
color=color.cyan , coils=20)
oggetto = box (pos=vector(START, 0, 0) , size=vector(DIM, DIM, DIM),
color=color.yellow)
oggetto.velocità = vector(0,0,0)
k = 1 # costante elastica
m = 1 # massa dell'oggetto
t = 0 # tempo
dt = 0.05
while(True):
rate(25)
F = -k*oggetto.pos.x
a = F/m
oggetto.velocità += vector(a, 0, 0) * dt
oggetto.pos += oggetto.velocità * dt
molla.length = 2*DIM + oggetto.pos.x
t += dt

Il grafico rappresenta la posizione dell’oggetto al variare del tempo.
from vpython import *
c = canvas()
g = graph(title = "x(t)")
gc = gcurve(color=color.cyan, width=5)
DIM = 1 # LATO DEL CUBO
START = +DIM # ASCISSA POSIZIONE INIZIALE
SPESS = DIM/10
parete = box (pos=vector(-2*DIM, 0, 0) , size=vector(SPESS, DIM, DIM))
pavimento = box (pos=vector(0, -(DIM+SPESS)/2, 0), size=vector(4*DIM, SPESS, DIM))
zero = box (pos=vector(0, -(DIM+SPESS)/2, 0), size=vector(SPESS, SPESS, DIM) ,
color=color.red)
molla = helix(pos=vector(-2*DIM, 0, 0) , size=vector(DIM+START, DIM/2, DIM/2),
color=color.cyan , coils=20)
oggetto = box (pos=vector(START, 0, 0) , size=vector(DIM, DIM, DIM) ,
color=color.yellow)
oggetto.velocità = vector(0,0,0)
k = 1 # costante elastica
m = 1 # massa dell'oggetto
t = 0 # tempo
dt = 0.05
while(t < 2*tau):
rate(25)
F = -k*oggetto.pos.x
a = F/m
oggetto.velocità += vector(a, 0, 0) * dt
oggetto.pos += oggetto.velocità * dt
molla.length = 2*DIM + oggetto.pos.x
gc.plot(t, oggetto.pos.x)
c.caption = "t = " + str(round(t, 2)) + \
"\nx = " + str(round(oggetto.pos.x, 2))
t += dt