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