Inviluppi di sfere

Più sfere, disposte in modo strategico, realizzano delle figure interessanti

  • le coordinate x,y,z dipendono da una formula matematica
  • anche il colore è legato a una formula per rendere le figure più interessanti

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
    c = abs(cos(angolo))    
 
    sphere(color  = vector(c, 1-c, 1), 
           pos    = vector(x,   0, 0), 
           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)  
   
    sphere(color  = vector(0, abs(y), abs(z)), 
           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
    r = abs(cos(angolo))
 
    sphere(color  = vector(r, 0, 1-r),
           pos    = vector(x, 0,   0),
           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)
 
    sphere(color  = vector(abs(x), abs(y), 0),
           pos    = vector(     x,      y, 0), 
           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)
    r = abs(x)

    sphere(color  = vector(abs(x), 0, abs(y)),
           pos    = vector(     x, y,      0),
           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)
    r = sqrt(x*x+(1-y)*(1-y))

    sphere(color  = vector(abs(y), 0, abs(x)),
           pos    = vector(     x, y,      0),
           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)
    r = sqrt(x*x+(1-y)*(1-y))/2

    sphere(color  = vector(0, abs(y), abs(x)),
           pos    = vector(x,      y,      0),
           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)