A questo punto un carillon ha bisogno delle lamelle che devono vibrare sollecitate dai dentini.
#default { finish { ambient 0.4 } } #include "colors.inc" #include "textures.inc" #include "metals.inc" #include "functions.inc" #include "transforms.inc" global_settings { ambient_light <0.99,0.99,0.99> } sky_sphere { pigment { gradient y color_map { [0 color rgb <0.6,0.3,0.5>] [1 color rgb <0.6,0.3,0.0>] } scale 2 translate -1 } } camera { location <-2, 3.5, -5> look_at <0, 2.4, -2> aperture .2 focal_point <0,0,0> angle 60 } light_source { <200, 100, -100> color rgb <0.99,0.99,0.99> spotlight radius 450 falloff 180 point_at <0,0,3> } light_source { <-5, -5, -5> color rgb <0.99,0.99,0.99> spotlight radius 450 falloff 180 point_at <0,0,3> } #declare N_LAMELLE=36; // numero di lamelle che determina anche la larghezza del rullo #declare RAGGIO_TAMBURO = 2; // posizionamento dei denti che colpiscono le lamelle #declare COLPI = array[5][2] { { 1, 0 }, { 7, 1 }, { 10, 2 }, { 8, 3 }, { 6, 4 } } #declare POSIZIONI=100; // intervallo di valori per determinare la posizione del dente nella circonferenza del tamburo #declare GRADI_ROTAZIONE_TAMBURO = 0; #declare GRADI_PER_POSIZIONE=360/POSIZIONI; // di quanto ruota ogni posizione #declare N_COLPI=dimension_size(COLPI,1); // numero di denti definiti nell'array #declare PRISMOTTO = object { prism { linear_sweep linear_spline -1, 1, 3, <-1,0>, <0,-0.3>, <1,0> } scale .1 } #declare DENTE = object { PRISMOTTO rotate <0,180,0> } // dente che sporge dal tamburo #declare SVASO = object { PRISMOTTO } // svaso che rientra nel tamburo #declare SVASI = union { // tutti i denti definiti nell'array #declare NDX_COLPO=0; #while (NDX_COLPO < N_COLPI) #declare POSIZIONE=(COLPI[NDX_COLPO][1]); #declare GRADI_POSIZIONE=GRADI_PER_POSIZIONE*POSIZIONE; object { SVASO translate <0.2*(COLPI[NDX_COLPO][0]),RAGGIO_TAMBURO,0> rotate <GRADI_POSIZIONE-90,0,0>} #declare NDX_COLPO=NDX_COLPO+1; #end } #declare DENTI = union { // tutti gli svasi definiti nell'array #declare NDX_COLPO=0; #while (NDX_COLPO < N_COLPI) #declare POSIZIONE=(COLPI[NDX_COLPO][1]); #declare GRADI_POSIZIONE=GRADI_PER_POSIZIONE*POSIZIONE; object { DENTE translate <0.2*(COLPI[NDX_COLPO][0]),RAGGIO_TAMBURO,0> rotate <GRADI_POSIZIONE-90,0,0>} #declare NDX_COLPO=NDX_COLPO+1; #end } #declare LAMELLA = box { <0,-0.03,0>, <0.15,0,-2> translate <0,0,0 - RAGGIO_TAMBURO> } #declare LAMELLE = union { #declare N_LAMELLA=1; #while (N_LAMELLA <= N_LAMELLE) object { LAMELLA translate <-0.10+N_LAMELLA*0.20,0,0> } #declare N_LAMELLA=N_LAMELLA+1; #end prism { -0.03, 0, 4, <0.05,-5>, <N_LAMELLE * 0.20,-5>, <N_LAMELLE * 0.20,-3>, <0.05,-4> } translate <0,0,-0.1> } #declare TAMBURO = union { // somma tra cilindro "svasato" e denti difference { // differenza tra cilindro e svasi cylinder { <0,0,0>, <N_LAMELLE * 0.20,0,0>, RAGGIO_TAMBURO } object { SVASI } } object { DENTI } rotate <0 - GRADI_ROTAZIONE_TAMBURO,0,0> } #declare CARILLON = union { object { TAMBURO } object { LAMELLE } texture { T_Copper_5A } } object { CARILLON translate <-1,2,1.5> scale 1 }
Nessun commento:
Posta un commento