File: spring3d.py

package info (click to toggle)
pycode-browser 1%3A1.02-1
  • links: PTS
  • area: main
  • in suites: stretch
  • size: 5,824 kB
  • ctags: 1,172
  • sloc: python: 2,232; xml: 152; makefile: 39
file content (36 lines) | stat: -rwxr-xr-x 902 bytes parent folder | download | duplicates (12)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#spring3d.py
from visual import *

base = box (pos=(0,-1,0), length=16, height=0.1, width=4, color=color.blue)
wall = box (pos=(0,0,0), length=0.1, height=2, width=4, color=color.white)
ball = sphere (pos=(4,0,0), radius=1, color=color.red)
spring = helix(pos=(0,0,0), axis=(4,0,0), radius=0.5, color=color.red)
ball2 = sphere (pos=(-4,0,0), radius=1, color=color.green)
spring2 = helix(pos=(0,0,0), axis=(-4,0,0), radius=0.5, color=color.green)

t = 0.0
dt = 0.01
x1 = 2.0
x2 = -2.0
v1 = 0.0
v2 = 0.0
k = 1000.0
m = 1.0

while 1:
  rate(20)

  f1 = -k * x1 
  v1 = v1 +  (f1/m ) * dt	# Acceleration = Force / mass ; dv = a.dt

  f2 = -k * x2 - v2		# damping proportional to velocity
  v2 = v2 +  (f2/m ) * dt	# Acceleration = Force / mass ; dv = a.dt
  
  x1 = x1 + v1 * dt
  x2 = x2 + v2 * dt
  t = t + dt
  
  spring.length =  4 + x1
  ball.x =  x1 + 4
  spring2.length = 4 - x2
  ball2.x =  x2 - 4