// Exemplo de arquivo de descricao de cena para POV-ray
// Last edited on 2017-05-07 20:10:09 by stolfilocal

// ======================================================================
// CORES E TEXTURAS

background{ color rgb < 0.75, 0.80, 0.85 > }

#declare tx_preto = 
  texture{
    pigment{ color rgb < 1, 0, 0> }
    finish{ diffuse 0.9 ambient 0.5 specular 1.0 roughness 0.01 }
  }

#declare tx_branco = 
  texture{
    pigment{ color rgb < 0, 1, 0> }
    finish{ diffuse 0.9 ambient 0.9 specular 1.0 roughness 0.01 }
  }

// ======================================================================
// DESCRIÇÃO DA CENA 

#declare raio_tunel = 0.500;

// Partes da cena:
#declare esfera =
	sphere{ 
		< 0, 0, 0>, 
		0.05
	}

#include "eixos.inc"


#macro noh (n_esf)
	union {
		#declare len = 8;
		#declare rad_1 = 0.25;
		#declare rad_2 = 0.4;

		#declare space = 1 / n_esf;
		#declare centro_cam = array[100];
		#declare i = 0;
		#declare pos_x = 0;
		#declare pos_z = 0;

		#while ( i < 1 )
			# if (i < 0.125)
				#declare pos_z = len*i;
				object { esfera translate <pos_x, 0, pos_z> texture{ tx_preto } }
				#declare cent = <pos_x-rad_1, 0, pos_z>;
				#end
			#if ((i >= 0.125) & (i < 0.25))
				#declare pos_x = rad_1*sin(4*(i)*pi);
				#declare pos_z = rad_1*cos(4*(i-0.25)*pi);
				object { esfera translate <pos_x, 0, pos_z>+cent texture{ tx_preto } }
				#declare cent_2 = <pos_x, 0, pos_z>+cent;
				#end
			#if ((i >= 0.25) & (i < 0.375))
				#declare pos_x = len*(0.25-i);
				object { esfera translate <pos_x, 0, 0>+cent_2 texture{ tx_preto } }
				#declare cent = <pos_x, 0, 0+rad_2>+cent_2;
				#end
			#if ((i >= 0.375) & (i < 0.5))
				#declare pos_x = rad_2*sin(8*(i)*pi);
				#declare pos_z = rad_2*cos(8*(i-0.25)*pi);
				object { esfera translate <pos_x, 0, pos_z>+cent texture{ tx_preto } }
				#declare cent_2 = <pos_x, 0, pos_z>+cent;
				#end
			#if ((i >= 0.5) & (i < 0.625))
				//#declare pos_z = len*1.0 - len*i;
				//object { esfera translate <pos_x , 0, pos_z> texture{ tx_branco } }
				#end
			#if ((i >= 0.625) & (i < 0.75))
				//#declare pos_z = len*1.0 - len*i;
				//object { esfera translate <pos_x , 0, pos_z> texture{ tx_branco } }
				#end
			#if ((i >= 0.75) & (i < 0.825))
				//#declare pos_z = len*1.0 - len*i;
				//object { esfera translate <pos_x , 0, pos_z> texture{ tx_branco } }
				#end
			#if (i >= 0.825)
				//#declare pos_z = len*1.0 - len*i;
				//object { esfera translate <pos_x , 0, pos_z> texture{ tx_branco } }
				#end
			#declare i = i+space;
		#end
	}
#end


// Aqui está a cena, finalmente:
//object{ eixos(3.00) }

// Tabuleiro
object{ noh(500) }


//object{ hiperdama translate < -1.50, -1.50, 0 > texture{ tx_caixa }}
//object{ hiperpeao translate < -4.50, +1.50, 0 > texture{ tx_caixa }}


#include "camlight.inc"
#declare centro_cena = < 0, 1, 0 >;
#declare raio_cena = 5.0;
#declare dir_camera = < 0, 1, 0 >;
#declare dist_camera = 5*raio_cena;
#declare intens_luz = 1.20;
camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)