background{ color rgb <1,1,1> } light_source { < 2000, 2000, -2000 > color rgb < 1.2, 1.2, 1.2 > } light_source { < -2000, 2000, -2000 > color rgb <1,1,1> } camera { location <800,600,-400> look_at < 800, 0, 400 > sky <0,1,0> } plane { y, -1 texture { pigment { checker color rgb <.5,.5,1> color rgb <1,1,.7> } } } /* Largura = X Comprimento = Z Altura = Y */ #declare deltaYAndar=20; #declare largCalcada=12; #declare largPredio=50; #declare largJanela=10; #declare altAndar=20; #declare largQuarteirao=7*largPredio; /* 4 predios, nao inclui as calcadas! */ #declare compQuarteirao=3*largPredio; /* 2 predios, nao inclui as calcadas! */ #declare largRua=50; #declare g=seed(pi); union { #declare cz=0; #declare cy=0; #while (cz < 4*(compQuarteirao+largRua)) /* 3 quarteiroes */ #declare cx=0; #while (cx < 4*(largQuarteirao+largRua)) /* 4 quarteiroes */ /* desenha quarteirao */ box { , pigment { color rgb <.3,.3,.3> } } #declare deltaZPredio=0; #while (deltaZPredio < compQuarteirao) #declare deltaXPredio=0; #while (deltaXPredio < largQuarteirao) #if (rand(g) < 0.75) /* decide se desenha um predio ou nao */ /* desenha um predio */ /* s janelas */ #if (rand(g) < 0.5) #declare s=3; #else #declare s=2; #end #declare deltaXJanela=(largPredio-(s*largJanela))/(s+1); #declare deltaYJanela=(altAndar-largJanela)/2; #declare rgbg=rand(g); /* cor do predio */ #declare i=0; #declare h=1+(4*rand(g)); /* numero de andares */ #declare deltaYAndar=0; #while (i < h) /* andar */ #declare xAndar=cx+deltaXPredio; #declare yAndar=cy+deltaYAndar; #declare zAndar=cz+deltaZPredio; difference { box { , pigment { color rgb <1,rgbg,.5> } } union { #declare ideltaXJanela=deltaXJanela; #declare is=s; #while (is > 0) /* janelas */ box { , pigment { color rgb <.5,.5,.5> } } #declare ideltaXJanela=ideltaXJanela+largJanela+deltaXJanela; #declare is=is-1; #end } } #declare deltaYAndar = deltaYAndar + altAndar; #declare i=i+1; #end #end /* if */ #declare deltaXPredio=deltaXPredio+(2*largPredio); #end /* while deltaX */ #declare deltaZPredio=deltaZPredio+(2*largPredio); #end /* while deltaZ */ #declare cx=cx+largQuarteirao+largRua; #end /* while cx */ #declare cz=cz+compQuarteirao+largRua; #end /* while cz */ }