
from vpython import *
C1 = color.yellow
C2 = color.red
C3 = color.green
C4 = color.blue
#----------------------- CUBO interno
p11 = vector( 1, 1, 1)
p12 = vector( 1, -1, 1)
p13 = vector(-1, -1, 1)
p14 = vector(-1, 1, 1)
p15 = vector( 1, 1, -1)
p16 = vector( 1, -1, -1)
p17 = vector(-1, -1, -1)
p18 = vector(-1, 1, -1)
#----------------------- CUBO esterno
p21 = vector( 2, 2, 2)
p22 = vector( 2, -2, 2)
p23 = vector(-2, -2, 2)
p24 = vector(-2, 2, 2)
p25 = vector( 2, 2, -2)
p26 = vector( 2, -2, -2)
p27 = vector(-2, -2, -2)
p28 = vector(-2, 2, -2)
R1 = 0.2
R2 = 0.1
#----------------------------------------------------- SFERE gialle
sphere(color = C1, pos = p11, radius = R1)
sphere(color = C1, pos = p12, radius = R1)
sphere(color = C1, pos = p13, radius = R1)
sphere(color = C1, pos = p14, radius = R1)
sphere(color = C1, pos = p15, radius = R1)
sphere(color = C1, pos = p16, radius = R1)
sphere(color = C1, pos = p17, radius = R1)
sphere(color = C1, pos = p18, radius = R1)
sphere(color = C1, pos = p21, radius = R1)
sphere(color = C1, pos = p22, radius = R1)
sphere(color = C1, pos = p23, radius = R1)
sphere(color = C1, pos = p24, radius = R1)
sphere(color = C1, pos = p25, radius = R1)
sphere(color = C1, pos = p26, radius = R1)
sphere(color = C1, pos = p27, radius = R1)
sphere(color = C1, pos = p28, radius = R1)
#----------------------------------------------------------- CILINDRI rossi
cylinder(axis = p12-p11, color = C2, pos = p11, radius = R2)
cylinder(axis = p13-p12, color = C2, pos = p12, radius = R2)
cylinder(axis = p14-p13, color = C2, pos = p13, radius = R2)
cylinder(axis = p11-p14, color = C2, pos = p14, radius = R2)
cylinder(axis = p16-p15, color = C2, pos = p15, radius = R2)
cylinder(axis = p17-p16, color = C2, pos = p16, radius = R2)
cylinder(axis = p18-p17, color = C2, pos = p17, radius = R2)
cylinder(axis = p15-p18, color = C2, pos = p18, radius = R2)
cylinder(axis = p15-p11, color = C2, pos = p11, radius = R2)
cylinder(axis = p16-p12, color = C2, pos = p12, radius = R2)
cylinder(axis = p17-p13, color = C2, pos = p13, radius = R2)
cylinder(axis = p18-p14, color = C2, pos = p14, radius = R2)
#----------------------------------------------------------- CILINDRI verdi
cylinder(axis = p22-p21, color = C3, pos = p21, radius = R2)
cylinder(axis = p23-p22, color = C3, pos = p22, radius = R2)
cylinder(axis = p24-p23, color = C3, pos = p23, radius = R2)
cylinder(axis = p21-p24, color = C3, pos = p24, radius = R2)
cylinder(axis = p26-p25, color = C3, pos = p25, radius = R2)
cylinder(axis = p27-p26, color = C3, pos = p26, radius = R2)
cylinder(axis = p28-p27, color = C3, pos = p27, radius = R2)
cylinder(axis = p25-p28, color = C3, pos = p28, radius = R2)
cylinder(axis = p25-p21, color = C3, pos = p21, radius = R2)
cylinder(axis = p26-p22, color = C3, pos = p22, radius = R2)
cylinder(axis = p27-p23, color = C3, pos = p23, radius = R2)
cylinder(axis = p28-p24, color = C3, pos = p24, radius = R2)
#----------------------------------------------------------- CILINDRI blu
cylinder(axis = p21-p11, color = C4, pos = p11, radius = R2)
cylinder(axis = p22-p12, color = C4, pos = p12, radius = R2)
cylinder(axis = p23-p13, color = C4, pos = p13, radius = R2)
cylinder(axis = p24-p14, color = C4, pos = p14, radius = R2)
cylinder(axis = p25-p15, color = C4, pos = p15, radius = R2)
cylinder(axis = p26-p16, color = C4, pos = p16, radius = R2)
cylinder(axis = p27-p17, color = C4, pos = p17, radius = R2)
cylinder(axis = p28-p18, color = C4, pos = p18, radius = R2)
Prova il codice seguente
- il cubo rosso interno si muove…
- se togli i commenti alla fine si muove anche il cubo verde
from vpython import *
C1 = color.yellow
C2 = color.red
C3 = color.green
C4 = color.blue
R1 = 0.2
R2 = 0.1
PUNTI_IN_A = [vector(1,1,1), vector(1,-1,1), vector(-1,-1,1), vector(-1,1,1)]
PUNTI_IN_P = []
PUNTI_OUT_A = []
PUNTI_OUT_P = []
SFERE_IN = []
SFERE_OUT = []
CILINDRI_IN = []
CILINDRI_OUT = []
CILINDRI = []
for pa in PUNTI_IN_A:
pp = vector(pa.x, pa.y, -1) ; PUNTI_IN_P.append(pp)
Pa = 2*pa ; PUNTI_OUT_A.append(Pa)
Pp = 2*pp ; PUNTI_OUT_P.append(Pp)
s = sphere(color = C1, pos = pa, radius = R1); SFERE_IN.append(s)
s = sphere(color = C1, pos = pp, radius = R1); SFERE_IN.append(s)
s = sphere(color = C1, pos = Pa, radius = R1); SFERE_OUT.append(s)
s = sphere(color = C1, pos = Pp, radius = R1); SFERE_OUT.append(s)
c = cylinder(axis = Pa-pa, color = C4, pos = pa, radius = R2)
c.pos2 = Pa ; CILINDRI.append(c)
c = cylinder(axis = Pp-pp, color = C4, pos = pp, radius = R2)
c.pos2 = Pp ; CILINDRI.append(c)
for i in range(4):
p1 = PUNTI_IN_A[i]
p2 = PUNTI_IN_A[(i+1)%4]
c = cylinder(axis = p2-p1, color = C2, pos = p1, radius = R2)
c.pos2 = p2 ; CILINDRI_IN.append(c)
p1 = PUNTI_IN_P[i]
p2 = PUNTI_IN_P[(i+1)%4]
c = cylinder(axis = p2-p1, color = C2, pos = p1, radius = R2)
c.pos2 = p2 ; CILINDRI_IN.append(c)
p1 = PUNTI_IN_A[i]
p2 = PUNTI_IN_P[i]
c = cylinder(axis = p2-p1, color = C2, pos = p1, radius = R2)
c.pos2 = p2 ; CILINDRI_IN.append(c)
p1 = PUNTI_OUT_A[i]
p2 = PUNTI_OUT_A[(i+1)%4]
c = cylinder(axis = p2-p1, color = C3, pos = p1, radius = R2)
c.pos2 = p2 ; CILINDRI_OUT.append(c)
p1 = PUNTI_OUT_P[i]
p2 = PUNTI_OUT_P[(i+1)%4]
c = cylinder(axis = p2-p1, color = C3, pos = p1, radius = R2)
c.pos2 = p2 ; CILINDRI_OUT.append(c)
p1 = PUNTI_OUT_A[i]
p2 = PUNTI_OUT_P[i]
c = cylinder(axis = p2-p1, color = C3, pos = p1, radius = R2)
c.pos2 = p2 ; CILINDRI_OUT.append(c)
while(True):
rate(20)
rumore1 = vector.random()/10
#rumore2 = vector.random()/10
for s in SFERE_IN: s.pos += rumore1
#for s in SFERE_OUT: s.pos += rumore2
for c in CILINDRI:
c.pos += rumore1
# c.pos2 += rumore2
c.axis = c.pos2 - c.pos
for c in CILINDRI_IN:
c.pos += rumore1
c.pos2 += rumore1
c.axis = c.pos2 - c.pos
#for c in CILINDRI_OUT:
# c.pos += rumore2
# c.pos2 += rumore2
# c.axis = c.pos2 - c.pos