1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# Animation of mass spring system using Euler method of integration
from visual import *

wall = box (pos=(-.5,0,0), length=1, height=1, width=1, color=color.yellow)
ball = sphere (pos=(4,0,0), radius=1, color=color.red)
spring = helix(pos=(0,0,0), axis=(4,0,0), radius=0.35, color=color.white)

t = 0         # start time
dt = 0.1
x = 2.0       # initial position & velocity
v = 0.0
k = 30.0
m = 1.0
damping = .1  # damping factor, change this and run again

while 1:
rate(20)
f = -k * x  - damping * v  # velocity dependent damping
v =  v + (f/m) * dt        # a = F/m;  a = dv/dt
x =  x + v * dt            # v = dx/dt
t = t + dt
spring.length =  4 + x     # x is the compression or expansion
ball.x =  x + 4