from visual import * from helix import * L=0.1 scene.autoscale=0 scene.range=1.2*L scene.background=color.white wall=box(pos=vector(-L,0,0), width=L/2., height=L/2., length=L/20., color=color.red) mass=cylinder(pos=vector(L/2.,0,0), axis=vector(L/20.,0,0), radius=L/10., color=(0.2,0.2,0.2)) spring=helix(pos=wall.pos, axis=mass.pos-wall.pos, radius=L/10., color=(1,0.7,0.2), thickness=L/100.) mass.m=0.1 mass.v=vector(0,0,0) mass.p=mass.m*mass.v k=20 dt=0.001 t=0 while 1: rate(100) s=mag(mass.pos-wall.pos)-L rhat=norm(mass.pos-wall.pos) Fnet=-k*s*rhat mass.p=mass.p+Fnet*dt mass.pos=mass.pos+mass.p/mass.m*dt spring.modify(axis=mass.pos-spring.pos) t=t+dt