Più sfere, disposte in modo strategico, realizzano delle figure interessanti.
La figura ottenuta dipende dalla posizione e dal raggio di ogni sfera.

from vpython import *
NUMERO = 100 # Quante sfere
DURATA = 5 # Quanti secondi
RATE = NUMERO/DURATA # Sfere al secondo
START = -pi # Primo angolo
STOP = +pi # Ultimo angolo
STEP = (STOP-START)/NUMERO # Passo tra due angoli
RAGGIO = 0.5
for angolo in arange(START, STOP, STEP):
rate(RATE)
x = angolo
y = 0
z = 0
sphere(pos = vector(x, y, z),
radius = RAGGIO )
Le costanti iniziali permettono di decidere
- il numero di sfere
- la durata dell’animazione
- …
Variando il colore di ciascuna sfere si rende più interessante il risultato finale

from vpython import *
NUMERO = 100 # Quante sfere
DURATA = 5 # Quanti secondi
RATE = NUMERO/DURATA # Sfere al secondo
START = -pi # Primo angolo
STOP = +pi # Ultimo angolo
STEP = (STOP-START)/NUMERO # Passo tra due angoli
RAGGIO = 0.5
for angolo in arange(START, STOP, STEP):
rate(RATE)
x = angolo
y = 0
z = 0
red = abs(cos(angolo))
green = 1-red
blue = 1
sphere(color = vector(red, green, blue),
pos = vector( x, y, z),
radius = RAGGIO )

from vpython import *
NUMERO = 100
DURATA = 5
RATE = NUMERO/DURATA
START = -2*pi
STOP = +2*pi
STEP = (STOP-START)/NUMERO
RAGGIO = 1
for angolo in arange(START, STOP, STEP):
rate(RATE)
x = angolo
y = cos(angolo)
z = sin(angolo)
red = 0
green = abs(y)
blue = abs(z)
sphere(color = vector(red, green, blue),
pos = vector( x, y, z),
radius = RAGGIO )

from vpython import *
NUMERO = 100
DURATA = 5
RATE = NUMERO/DURATA
START = -pi/2
STOP = +pi/2
STEP = (STOP-START)/NUMERO
for angolo in arange(START, STOP, STEP):
rate(RATE)
x = angolo
y = 0
z = 0
r = abs(cos(angolo))
red = r
green = 0
blue = 1-r
sphere(color = vector(red, green, blue),
pos = vector( x, y, z),
radius = r )

from vpython import *
NUMERO = 100
DURATA = 5
RATE = NUMERO/DURATA
START = 0
STOP = 2*pi
STEP = (STOP-START)/NUMERO
RAGGIO = 0.5
for angolo in arange(START, STOP, STEP):
rate(RATE)
x = cos(angolo)
y = sin(angolo)
z = 0
red = abs(x)
green = abs(y)
blue = 0
sphere(color = vector(red, green, blue),
pos = vector( x, y, z),
radius = RAGGIO )

from vpython import *
NUMERO = 200
DURATA = 5
RATE = NUMERO/DURATA
START = 0
STOP = 2*pi
STEP = (STOP-START)/NUMERO
for angolo in arange(START, STOP, STEP):
rate(RATE)
x = cos(angolo)
y = sin(angolo)
z = 0
r = abs(x)
red = abs(x)
green = 0
blue = abs(y)
sphere(color = vector(red, green, blue),
pos = vector( x, y, z),
radius = r )

from vpython import *
NUMERO = 200
DURATA = 5
RATE = NUMERO/DURATA
START = pi
STOP = 3*pi
STEP = (STOP-START)/NUMERO
for angolo in arange(START, STOP, STEP):
rate(RATE)
x = cos(angolo)
y = sin(angolo)
z = 0
r = sqrt(x*x+(1-y)*(1-y))
red = abs(y)
green = 0
blue = abs(x)
sphere(color = vector(red, green, blue),
pos = vector( x, y, z),
radius = r )

from vpython import *
NUMERO = 200
DURATA = 5
RATE = NUMERO/DURATA
START = pi
STOP = 3*pi
STEP = (STOP-START)/NUMERO
for angolo in arange(START, STOP, STEP):
rate(RATE)
x = cos(angolo)
y = sin(angolo)
z = 0
r = sqrt(x*x+(1-y)*(1-y))/2
red = 0
green = abs(y)
blue = abs(x)
sphere(color = vector(red, green, blue,
pos = vector( x, y, z),
radius = r )

from vpython import *
NUMERO = 100
DURATA = 5
RATE = NUMERO/DURATA
START = 0
STOP = 2*pi
STEP = (STOP-START)/NUMERO
RAGGIO = 0.2
for angolo in arange(START, STOP, STEP):
rate(RATE)
x = cos(angolo)
y = sin(angolo)
sphere(color = vector(abs(x), abs(y), 0), pos = vector(x, y, 0), radius = RAGGIO)
sphere(color = vector(abs(x), 0, abs(y)), pos = vector(x, 0, y), radius = RAGGIO)
sphere(color = vector( 0, abs(x), abs(y)), pos = vector(0, x, y), radius = RAGGIO)