// Last edited on 2003-04-12 07:23:28 by stolfi #include "colors.inc" #include "metals.inc" #include "woods.inc" #include "glass.inc" #include "skies.inc" #declare ctr = < 0, 15, 3 >; #declare cam = < 45, 0, 5 >; light_source { ctr + 10*< 10.00, -20, 20.00 > color rgb 1.5*< 1,1,1 > } light_source { ctr + 10*< 10.00, 20, 20.00 > color rgb 1.5* < 1,1,1 > } // light_source { // < 30.00, 0, 20.00 > // color rgb < 2.00, 2.00, 2.00 > // } light_source { ctr + 10*(vrotate(cam, 20*z) + 5*z) color rgb 0.7*< 1,1,1 > } camera { location ctr + 1.5*cam right 1.2*x up 0.4*y sky < 0.00, 0.00, 1.00 > look_at ctr } #declare plano=object{ plane{ <0,0,.5>,0 texture{pigment{Black} } } } #declare prateleiraD1=30; #declare prateleiraD2=5; #declare prateleiraVazia=object{ box{ <0,0,0>, texture{pigment{White } } }} #declare dimProd=1; #declare produto1=object{ cylinder { <0, 0, 0>, <0, 0, 2>, dimProd/2 } } #declare produto2=object{ sphere { <0, 0, 0>, dimProd/2 } } #declare produto3=object{ box { <0, 0, 0>, } } #declare produto4=object{ cone { <0, 0,0>,dimProd/2 <0, 0, 2>,0 } } #declare gen=seed(54321); #declare prateleira=union{ object{prateleiraVazia} #declare maxI=floor(prateleiraD1/(dimProd*1.7)); #declare maxJ=floor(prateleiraD2/(dimProd*1.7)); #declare deltaI=(prateleiraD1-dimProd)/maxI; #declare deltaJ=(prateleiraD2-dimProd)/maxJ; #declare i=0; #while(i < maxI) #declare j=0; #while(j <= maxJ) #declare aux=4*rand(gen); #if(aux <1) #declare cor=Blue; #else #if (aux <2) #declare cor=Red; #else #if (aux < 3) #declare cor=Green; #else #declare cor=Yellow; #end #end #end #declare aux=4*rand(gen); #if (aux<1) object{produto1 translate scale <1,1,.5+0.5*rand(gen)> pigment{cor}} #else #if (aux <2) object{produto2 translate pigment{cor}} #else #if (aux <3) object{produto3 translate scale <1,1,.5+0.5*rand(gen)> pigment{cor}} #else object{produto4 translate scale <1,1,.5+0.5*rand(gen)> pigment{cor}} #end #end #end #declare j=j+1; #end #declare i=i+1; #end } #declare pe=object{ box { <0, 0, 0>, <1, 1, 10> pigment{White} } } #declare estante=union{ object{prateleira} object{prateleira translate <0,0,4>} object{prateleira translate <0,0,8>} object{pe translate <-1,-1,-1>} object{pe translate <-1,5,-1>} object{pe translate <30,-1,-1>} object{pe translate <30,5,-1>} } #declare cena=union{ object{estante} object{estante translate <0,25,0>} } cena