#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