spring_pendulumΒΆ

3D animation of a spring pendulum


import math
import gr
import gr3

gr.setviewport(0, 1, 0, 1)
gr3.setbackgroundcolor(1, 1, 1, 1)

for t in range(200):
    f = 0.0375 * (math.cos(t*0.2) * 0.995**t + 1.3)
    n = 90
    points = [(math.sin(i*math.pi/8), n*0.035-i*f, math.cos(i*math.pi/8)) for i in range(n-5)]
    points.append((0, points[-1][1], 0))
    points.append((0, points[-1][1]-0.5, 0))
    points.append((0, points[-1][1]-1, 0))
    points.insert(0, (0, points[0][1], 0))
    points.insert(0, (0, points[0][1]+2, 0))
    colors = [(1, 1, 1)]*n
    radii = [0.1]*n
    gr3.clear()
    gr3.drawtubemesh(n, points, colors, radii)
    gr3.drawspheremesh(1, points[-1], colors, 0.75)
    gr.clearws()
    gr3.drawimage(0, 1, 0, 1, 500, 500, gr3.GR3_Drawable.GR3_DRAWABLE_GKS)
    gr.updatews()