from vpython import *
#----------------------------------------------------------------
g = 9.81
gradi = 90
lunghezza = 10
raggio = 1
angolo0 = radians(gradi)
x0 = +lunghezza*sin(angolo0)
y0 = -lunghezza*cos(angolo0)
#----------------------------------------------------------------
c = canvas(width=480, height=480)
pivot = vector(0,0,0)
punto = sphere (color=color.yellow, radius=raggio/5, pos=pivot)
sfera = sphere (color=color.cyan , radius=raggio , pos=vector(x0,y0,0),
make_trail=True, retain= 50)
filo = cylinder(color=color.yellow, radius=raggio/10, pos=pivot,
axis=sfera.pos-pivot)
#----------------------------------------------------------------
g_xy = graph(fast=False, xmin=0, xmax=tau, scroll=True)
g_x = gcurve(color=color.red , label="x(t)", dot=True, graph=g_xy)
g_y = gcurve(color=color.blue, label="y(t)", dot=True, graph=g_xy)
g_av = graph(fast=False, xmin=0, xmax=tau, scroll=True)
g_a = gcurve(color=color.red , label="a(t)", dot=True, graph=g_av)
g_v = gcurve(color=color.blue, label="v(t)", dot=True, graph=g_av)
#----------------------------------------------------------------
angolo = angolo0
v_ang = 0
t = 0
dt = 0.01
while(True):
rate(100)
a_ang = -(g/lunghezza) * sin(angolo)
v_ang += a_ang * dt
angolo += v_ang * dt
x = +lunghezza * sin(angolo)
y = -lunghezza * cos(angolo)
sfera.pos = vector(x,y,0)
filo.axis = sfera.pos - pivot
g_x.plot(t,x ); g_y.plot(t,y )
g_a.plot(t,a_ang); g_v.plot(t,v_ang)
t += dt