// Fabio de Souza Azevedo - RA 952215
// 2021-09-15
//
// TP04
// Exemplo de arquivo de descricao de cena para POV-ray
// Last edited on 2021-12-09 09:44:08 by stolfi
// ======================================================================
// CORES E TEXTURAS
background{ color rgb < 0.75, 0.80, 0.85 > }
#declare tx_plastico =
texture{
pigment{ color rgb < 0.10, 0.80, 1.00 > }
finish{ diffuse 0.8 ambient 0.1 specular 0.5 roughness 0.005 }
}
#declare tx_fosca =
texture{
pigment{ color rgb < 1.00, 0.80, 0.10 > }
finish{ diffuse 0.9 ambient 0.1 }
}
#declare tx_espelho =
texture{
pigment{ color rgb < 1.00, 0.85, 0.30 > }
finish{ diffuse 0.2 reflection 0.7*< 1.00, 0.85, 0.30 > ambient 0.1 }
}
#declare tx_vidro =
texture{
pigment{ color rgb < 0.85, 0.95, 1.00 > filter 0.70 }
finish{ diffuse 0.03 reflection 0.25 ambient 0.02 specular 0.25 roughness 0.005 }
}
#declare tx_verde_escuro =
texture{
pigment { color rgb <0, 0.5, 0> }
//finish{ diffuse 0.8 ambient 0.1 specular 0.5 roughness 0.005 }
}
#declare tx_verde_claro =
texture{
pigment { color rgb <0, 1.0, 0> }
//finish{ diffuse 0.8 ambient 0.1 specular 0.5 roughness 0.005 }
}
#declare tx_xadrez =
texture{
pigment{ checker color rgb < 0.10, 0.32, 0.60 >, color rgb < 1.00, 0.97, 0.90 > }
finish{ diffuse 0.9 ambient 0.1 }
scale 2.0
}
// ======================================================================
// DESCRIÇÃO DA CENA
// Partes da cena:
#declare s1 = seed(0);
#declare s2 = seed(235);
#declare s3 = seed(728);
#declare fator = 0.794;//0.8;
#macro folha(p)
// "folha redonda"
sphere { p, 0.15}
texture { tx_verde_claro }
#end
#macro folha_q(p)
// "folha quadrada"
#local r = 4*0.15;
//sphere { p, 0.15}
box {
, }
texture { tx_verde_claro }
#end
#macro elemento_galho(p1, p2, r)
union {
cylinder { p1, p2, r }
sphere { p2, r}
}
texture { tx_verde_escuro }
#end
#macro galho_alien(p, a, k)
// {p} = Um ponto, o centro da base do galho.
// {a} = Altura máxima da árvore.
// {k} = Número máximo de bifurcações consecutivas desde a base do tronco
// até uma folha qualquer.
union
{
#local L = a*0.3; // comprimento máximo de cada trecho
#local r = 0.3*L;
#local p1 = ;
object { elemento_galho(p, p1, r) }
#if (k > 1)
#local galho1 = object { galho_alien(<0,0,0>, a-L, k-1) }
#local galho2 = object { galho_alien(<0,0,0>, a-L, k-1) }
object { galho1 rotate 20*z rotate 30*x translate p1 }
object { galho2 rotate 30*z rotate -20*x translate p1 }
#else
object { folha_q(p1) }
#end
texture { tx_verde_escuro }
}
#end
#macro arvore(P,A,K)
object { galho_alien(P, A, K) }
#end
#declare meio_lado_quadrado = 10.0;
#declare s4 = seed(952215); // Meu RA 8-)
#declare altura = 30.0;
#macro plantacao(N,A,K)
union{
#local i = 0;
#while (i < N)
#if (sin(15*i*i) > -0.2)
#local qq = meio_lado_quadrado;
object { arvore(, A, K) translate A*i*y }
// Nao estou usando K.
#end
#local i = i+1;
#end
}
#end
#include "eixos.inc"
// Aqui está a cena, finalmente:
#declare lins_aliens = 3;//30;
#declare cols_aliens = 2;//20;
#declare lins_terra = 2;//25;
#declare cols_terra = 2;//25;
//object { eixos(8.0) }
// object { arvore(<1.0, 1.0, 0.0>, 20, 7) }
#local NP = 4;
object { plantacao(NP,altura,7) }
#include "camlight.inc"
// #declare centro_cena = <2*lins_aliens, 1.2*cols_aliens, 7.5>;
#declare centro_cena = < altura/2, NP*altura/2, 15.00 >;
// #declare raio_cena = 8.0*sqrt(lins_terra*lins_terra + cols_terra*cols_terra); //
#declare raio_cena = 75.0;
#declare dir_camera = < 14.00, 7.00, 4.00 >;
#declare dist_camera = 8*raio_cena;
#declare intens_luz = 1.20;
camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)