//Tiago Saad - 971717
//Predio e Cidade

#include "colors.inc"
#include "textures.inc"

background { color red 1 green 1 blue 1	}

sky_sphere{
	pigment{
	gradient y
	color_map{
		[0 color White]
		[1 color Blue]
	}
	}
}

camera{
	location<40, 30, 40>
	look_at<20, 25, 20>
}

#declare m=1;
#declare n=1;
#while(m < 10)
	#while ( n < 10 )
	light_source{
		<-50 + 10*m, 50, -50+10*n>
		color Gray
		//shadowless
	}
	#declare n = n+1;
	#end
	#declare m = m+1;
#end


light_source{
	<0, -1, 9>
	color White
}

#declare g = seed(pi);


#declare i = 1;
#declare j = 1;

#declare terreo=
union{
difference{
	box{
		< -5, 0, -5>
		< 5, 4, 5>
		pigment{color rgb<.1, .1, .9>}
	}
 	box{
		<-.5, -1, -.1>
		< .25, 1, 2.5>
		pigment{color rgb<0, 0, 1>}
	}
}
	box{			// grama em volta
		< -6, 0, -6>
		< 6, -.1, 6>
		pigment{color rgb<0, 1, 0>}
	}
}


#declare andares4=
union{

	//#declare numand = rand(g)*10;
	#while( i < 5)		// numero de andares + 1

	box{				// caixa do andar
	<-5, 0 +3*i, -5>
	< 5, 3 +3*i, 5>
	pigment{color rgb<1, 1, 1>}
	}

	box{				// acabamento
	<-5.1, 0 + 3 * i, -5.1>
	<5.1, .5 + 3 * i, 5.1>
	pigment{color rgb<1, 0, 0>}
	}

	
		#while ( j < 9 )	// janelas fachada
	
		#if (rand(g) < .5)
		cylinder{
		<-5.1, 2 + 3*i, -5 + j>,
		<5.1, 2 + 3*i, -5 + j>,
		.45
		pigment{color rgb<0, 1, 1>}
		}
		#end //fim if

		#declare j = j+1;
		#end
		#declare j = 1;


		#while ( j < 9 )	// janelas laterais

		#if(rand(g) > .5)
		cylinder{
		<-5 + j, 2 + 3*i, -5.1>
		<-5 + j, 2 + 3*i, 5.1>
		.45
		pigment{color rgb<1, 0, 1>}
		}
		#end // fim if
	
		#declare j = j+1;
		#end
		#declare j = 1;


	

	#declare i = i+1;
	#end

	box{				// topo do predio
	<-5.2, 0 +3*i, -5.2>
	< 5.2, 1 +3*i, 5.2>
	pigment{color rgb<.5, 1, 1>}
	}


	#declare i = 1;				// volta i para 1
}

#declare andares10=
union{

	//#declare numand = rand(g)*10;
	#while( i < 11)		// numero de andares + 1

	box{				// caixa do andar
	<-5, 0 +3*i, -5>
	< 5, 3 +3*i, 5>
	pigment{color rgb<1, 1, 1>}
	}

	box{				// acabamento
	<-5.1, 0 + 3 * i, -5.1>
	<5.1, .5 + 3 * i, 5.1>
	pigment{color rgb<1, 0, 0>}
	}

	
		#while ( j < 9 )	// janelas fachada
	
		#if (rand(g) < .5)
		cylinder{
		<-5.1, 2 + 3*i, -5 + j>,
		<5.1, 2 + 3*i, -5 + j>,
		.45
		pigment{color rgb<0, 1, 1>}
		}
		#end //fim if

		#declare j = j+1;
		#end
		#declare j = 1;


		#while ( j < 9 )	// janelas laterais

		#if(rand(g) > .5)
		cylinder{
		<-5 + j, 2 + 3*i, -5.1>
		<-5 + j, 2 + 3*i, 5.1>
		.45
		pigment{color rgb<1, 0, 1>}
		}
		#end // fim if
	
		#declare j = j+1;
		#end
		#declare j = 1;


	

	#declare i = i+1;
	#end

	box{				// topo do predio
	<-5.2, 0 +3*i, -5.2>
	< 5.2, 1 +3*i, 5.2>
	pigment{color rgb<.5, 1, 1>}
	}


	#declare i = 1;				// volta i para 1
}

#declare andares7=
union{

	//#declare numand = rand(g)*10;
	#while( i < 8)		// numero de andares + 1

	box{				// caixa do andar
	<-5, 0 +3*i, -5>
	< 5, 3 +3*i, 5>
	pigment{color rgb<1, 1, 1>}
	}

	box{				// acabamento
	<-5.1, 0 + 3 * i, -5.1>
	<5.1, .5 + 3 * i, 5.1>
	pigment{color rgb<1, 0, 0>}
	}

	
		#while ( j < 9 )	// janelas fachada
	
		#if (rand(g) < .5)
		cylinder{
		<-5.1, 2 + 3*i, -5 + j>,
		<5.1, 2 + 3*i, -5 + j>,
		.45
		pigment{color rgb<0, 1, 1>}
		}
		#end //fim if

		#declare j = j+1;
		#end
		#declare j = 1;


		#while ( j < 9 )	// janelas laterais

		#if(rand(g) > .5)
		cylinder{
		<-5 + j, 2 + 3*i, -5.1>
		<-5 + j, 2 + 3*i, 5.1>
		.45
		pigment{color rgb<1, 0, 1>}
		}
		#end // fim if
	
		#declare j = j+1;
		#end
		#declare j = 1;


	

	#declare i = i+1;
	#end

	box{				// topo do predio
	<-5.2, 0 +3*i, -5.2>
	< 5.2, 1 +3*i, 5.2>
	pigment{color rgb<.5, 1, 1>}
	}


	#declare i = 1;				// volta i para 1
}




#declare predio4=
union{
	object{terreo}
	object{andares4}
}

#declare predio7=
union{
	object{terreo}
	object{andares7}
}

#declare predio10=
union{
	object{terreo}
	object{andares10}
}

object{predio7}


object{predio4
	translate < 0, 0, 24 >
}

object{predio10
	rotate<0, 90, 0>
	translate<24, 0, 0>
}

object{predio7
	translate < 24, 0, 24 >
}


plane{
	y,
	-.1
	pigment{color rgb <.9, .9, .9>}
}

#declare m=1;
#while ( m < 4 )
	object { predio4
		translate <-24*m, 0, 0>
	}
	#declare m = m+1;
#end

#declare m = 1;
#while ( m < 4 )
	object { predio10
		translate< -24*m, 0, -24*m>
	}
	#declare m = m+1;
#end