// Exemplo de arquivo de descricao de cena para POV-ray
// Last edited on 2003-07-31 12:50:37 by stolfi
#include "colors.inc"
// ======================================================================
// CÂMERA
camera {
location < 0.00, 30.00, 7.00 > // Posição do observador.
right <-0.8,0,0> // Largura RELATIVA da imagem.
up <0,0,0.6> // Altura RELATIVA da imagem.
sky <0,0,1> // Qual direção é "para cima"?
look_at < 0.00, 2.00, 3.00 > // Para onde a câmera está apontando.
}
// Nota: os parâmetros "right" e "up" devem ter a mesma proporção
// que os parâmetros ${WIDTH} e ${HEIGHT} no Makefile.
// ======================================================================
// FONTES DE LUZ
light_source {
10 * < +50.0, +30.0, +50.0 > // Posição da lâmpada.
color rgb 1.2 * < 1.00, 1.00, 1.00 > // Intensidade e corda luz.
}
light_source {
10 * <+50.0, -10.0, +10.0 > // Posição da lâmpada.
color rgb 0.8 * < 1.00, 1.00, 1.00 > // Intensidade e corda luz.
}
// ======================================================================
// DESCRIÇÃO DA CENA
background{ color rgb < 0.5, 0.70, 0.65 > }
#declare tx_chao=texture { pigment {checker Orange
Red}}
#declare chao = plane{z,-3.5 texture{tx_chao}}
#declare corpo= difference{sphere{<0,0,0>,5 pigment{Red}}
box{<-5,5,0>,<5,-5,-5> pigment {Black}}
}
object{chao}
#declare gerador=seed(235);
#declare a=0;
union{object{corpo}
#while (a<6)
#if (mod(int(a/2),2)=mod(a,2))
#declare clockp=clock;
#else
#declare clockp=mod(clock+0.5,1);
#end
#declare pt1=cylinder{<0,0,0>,<0,0,-0.7>,0.5 pigment{Yellow}}
#declare pt2=union{cylinder{<0,0,0>,<0,0,-1>,0.5 pigment{Cyan}}
object{pt1
#if(clockp<0.5)
rotate (15*sin((180*clockp)/0.5)*y)
#else
rotate(-10*sin((180*(clockp-0.5))/0.5)*y)
#end
translate<0,0,-1>}
}
#declare pt3=union{cylinder{<0,0,0>,<0,0,-1>,0.5 pigment{Blue}}
object{pt2
#if(clockp<0.5)
rotate (20*sin((180*clockp)/0.5)*y)
#else
rotate(-15*sin((180*(clockp-0.5))/0.5)*y)
#end
translate<0,0,-1>}
}
#declare pata=union{cylinder{<0,0,0>,<0,0,-1.2>,0.5 pigment{Green}}
object{pt3
#if(clockp<0.5)
rotate (20*sin((180*clockp)/0.5)*y)
#else
rotate(-10*sin((180*(clockp-0.5))/0.5)*y)
#end
translate<0,0,-1.2>}
}
// Aqui está a cena, finalmente:
object{pata
#if (mod(a,2)=0)
#if(clockp<0.5)
rotate (30*sin((180*clockp)/0.5)*y)
#else
rotate(-15*sin((180*(clockp-0.5))/0.5)*y)
#end
translate
#else
#if(clockp<0.5)
rotate (30*sin((180*clockp)/0.5)*y)
#else
rotate(-15*sin((180*(clockp-0.5))/0.5)*y)
#end
translate
#end}
#declare a=a+1;
#end
translate<-clock-0.2,0,0>
}