// Desenho do contagio POV-ray
// Last edited on 2020-10-21 21:34:00 by Guilherme Londe
// ======================================================================
// CORES E TEXTURAS
background{ color rgb < 0.75, 0.80, 0.85 > }
#declare tx_plastico =
texture{
pigment{ color rgb < 0.80, 0.80, 0.80 > }
finish{ diffuse 0.8 ambient 0.1 specular 0.5 roughness 0.005 }
}
#declare tx_fosca =
texture{
pigment{ color rgb < 1.00, 0.30, 0.10 > }
finish{ diffuse 0.9 ambient 0.1 }
}
// ======================================================================
// DESCRICAO
// Partes da cena:
#declare pessoa =
cylinder{
<0.00, 0.00, 0.00>,
<0.00, 0.00, 0.6>,
0.30
texture{ tx_fosca }
}
#macro linha(P, newP)
union{
cylinder{
,
,
0.05
texture {tx_plastico}
}
}
#end
#declare roleta = seed(0);
#declare raio_cena = 60.0;
#macro arvore(P,S,A,B,T)
union{
object {pessoa translate }
#if (T > 0)
// n = numero de pessoas contagiadas a partir deste no
#local n = S/(S + 1);
#while (rand(roleta) < n)
#local difx = (rand(roleta)*0.2 - 0.1)*raio_cena;
#local dify = (rand(roleta)*0.2 - 0.1)*raio_cena;
#local difz = rand(roleta)*(B-A)+A;
// newP = posicao da proxima pessoa contagiada
#local newP = ;
object {linha(P, newP)}
object {arvore(newP, S, A, B, T-1)}
#end
#end
}
#end
#macro diagrama(N,S,A,B,T)
union{
#local i = 0;
#while(i < N)
#local newx = (rand(roleta) - 0.5) * raio_cena;
#local newy = (rand(roleta) - 0.5) * raio_cena;
#local P = ;
object{arvore(P, S, A, B, T-1)}
#local i = i + 1;
#end
}
#end
#declare chao =
box{ <-20,-20,-1>, <+20,+20,0> }
#include "eixos.inc"
// Aqui esta a cena, finalmente:
union{
object{ eixos(raio_cena/2.0) }
object{diagrama(20, 2, 3, 5, 10)}
}
#include "camlight.inc"
#declare centro_cena = < 0.00, 0.00, 15.00 >;
#declare dir_camera = < 7.00, 4.00, 0.50 >;
#declare dist_camera = 15*raio_cena;
#declare intens_luz = 1.20;
camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)