lab5
unknown
python
8 months ago
1.5 kB
3
Indexable
Web VPython 3.2
from visual import *
scene = canvas(background = color.white)
ground = box(pos = vec(0,-0.02,0), size = vec(3,0.02,0.4), color = color.green)
g = 9.8
mu = 0.01
L = 2.5
k = 5
L_0 = 2
mass = 2
anchor = box( pos=vec(-1,0.1,0), size = vec(0.4,0.2,0.1), color = color.black, make_trail=True)
ball = box ( pos = anchor.pos + vec(L,0,0), v = vec(0,0,0), m = mass, size = vec(0.2,0.2,0.1), color = color.red, make_trail = True , retain = 60)
ball.p = ball.v*ball.m
ball.v = vec(0,0,0)
spring = helix( pos = anchor.pos, axis = ball.pos - anchor.pos, radius = 0.05 , color = color.orange )
vgraph = graph(title = 'velocity' , xtitle = 't', ytitle = 'v(t)' )
vx_s = gcurve(graph = vgraph, color = color.cyan)
fgraph = graph(title = 'Force' , xtitle = 't', ytitle = 'N' )
fscurve = gcurve (graph = fgraph, color = color.orange)
ffcurve = gcurve(graph = fgraph, color = color.red)
T = 0
t = 0
dt = 0.01
ball.T = 0
ball.old_v = ball.v
while t < 15:
rate(200)
L = ball.pos-anchor.pos
Ff = -mu*(mass*g)*ball.v.hat
Fs = -k * (L.mag - L_0) * L.hat
F = Ff+Fs
Vold = ball.v
ball.p = ball.p + F*dt
ball.v = ball.p/ball.m
ball.pos = ball.pos + ball.v*dt
spring.axis = ball.pos - anchor.pos
vx_s.plot(t,ball.v.x)
fscurve.plot(t,Fs.x)
ffcurve.plot(t,Ff.x)
Vnew = ball.v
if Vold.x>0 and Vnew.x<0:
print("period",ball.T)
ball.T = 0
t = t + dt
ball.T = ball.T + dt
Editor is loading...
Leave a Comment