#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} #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 } #declare NDX_COLPO=NDX_COLPO+1; #end } #declare TAMBURO = union { // somma tra cilindro "svasato" e denti difference { // differenza tra cilindro e svasi cylinder { <0,0,0>, , RAGGIO_TAMBURO } object { SVASI } } object { DENTI } rotate <0 - GRADI_ROTAZIONE_TAMBURO,0,0> } #declare CARILLON = union { object { TAMBURO } texture { T_Copper_5A } } object { CARILLON translate <-1,2,1.5> scale 1 }
Eseguendo il rendering con il comando:
povray +W400 +H300 carillon1.povsi ottiene l'immagine presente all'inizio del post
Nessun commento:
Posta un commento