In progress…
from vpython import *
#------------------------------------------------------------------------------------ ASSI
DIST = 100 # Asse x positivo
DIST2 = DIST/2 #
DIST3 = DIST/3 #
DIST4 = DIST/4 #
DIST6 = DIST/6 # Raggio spirale
DIST8 = DIST/8 # Campo magnetico
DURATA = 10 # Durata, da x=0 a x=DIST
RATE = 25 # Numero frame al secondo
x0 = 0 # Posizione iniziale x
#-------------------------------------------------------------------------------------
X_max = DIST ; X_min = -DIST4
Y_max = DIST2; Y_min = -DIST4
Z_max = DIST2; Z_min = -DIST2
asseX = arrow(axis = vector(X_max-X_min, 0, 0), pos = vector(X_min, 0, 0), color = color.red , headlength=2, headwidth=1.5, shaftwidth = 0.5)
asseY = arrow(axis = vector(0, Y_max-Y_min, 0), pos = vector(0, Y_min, 0), color = color.green, headlength=2, headwidth=1.5, shaftwidth = 0.5)
asseZ = arrow(axis = vector(0, 0, Z_max-Z_min), pos = vector(0, 0, Z_min), color = color.blue , headlength=2, headwidth=1.5, shaftwidth = 0.5)
label(box = False, opacity = 0, pos = vector(X_max+2, 0, 0), text = "x")
label(box = False, opacity = 0, pos = vector(0, Y_max+2, 0), text = "y")
label(box = False, opacity = 0, pos = vector(0, 0, Z_max+2), text = "z")
#------------------------------------------------------------------------------------ CAMPO MAGNETICO
magn_1 = arrow(axis = vector(X_max-X_min, 0, 0), pos = vector(X_min, 3*DIST8, 0), color = color.cyan, headlength=2, headwidth=1.5, shaftwidth = 0.5)
magn_2 = arrow(axis = vector(X_max-X_min, 0, 0), pos = vector(X_min, 2*DIST8, 0), color = color.cyan, headlength=2, headwidth=1.5, shaftwidth = 0.5)
magn_3 = arrow(axis = vector(X_max-X_min, 0, 0), pos = vector(X_min, DIST8, 0), color = color.cyan, headlength=2, headwidth=1.5, shaftwidth = 0.5)
label(box = False, opacity = 0, pos = vector(X_max+2, 3*DIST8, 0), text = "-")
label(box = False, opacity = 0, pos = vector(X_max+2, 2*DIST8, 0), text = "-")
label(box = False, opacity = 0, pos = vector(X_max+2, DIST8, 0), text = "-")
#------------------------------------------------------------------------------------ SFERA
sfera = sphere(color = color.yellow, radius = 1,
make_trail = True, trail_color = color.white, retain = 250)
vx = DIST/DURATA # Velocità orizzontale
va = pi # Velocità angolare (mezzo giro al secondo)
dt = 1/RATE # Passo del tempo
x = x0
angolo = pi/2 # angolo iniziale
while(True):
rate(RATE) # sincronizza...
sfera.pos = vector(x, DIST6+DIST6*sin(angolo), -DIST6*cos(angolo))
x += vx*dt # aggiorna la posizione orizzontale
angolo += va*dt # aggiorna l'angolo
if(x > DIST):
x = x0