// 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_fosca = 
  texture{
    pigment{ color rgb < 0.50, 0.50, 0.50 > }
    finish{ diffuse 0.9 ambient 0.1 }
  }      
  
#declare tx_blocked = 
  texture{
    pigment{ color rgb < 1.00, 0.00, 0.00 > }
    finish{ diffuse 0.9 ambient 0.1 }
  }
// ======================================================================
// DESCRIÇÃO DA CENA 

// Partes da cena:

#declare n = 5;
#declare m = 3; 

#declare palco = 
  box{
    < 0.00, -(n+5), 0.00 >,
    < -9.00, n+5, 1.50 >
    texture{ tx_fosca }
  }    

#include "eixos.inc"       

#macro assento(blocked)  
    union{  
        #local tx_assento = tx_fosca;
        
        #if (blocked = true) 
            #local tx_assento = tx_blocked;  
        #end  
        //costas
        box{    
            <0.00, 0.00, 0.50>,
            <0.10, 0.60, 1.10>
            texture{ tx_assento }
        }   
        //parte de sentar  
        box{   
            <0.00, 0.00, 0.45>
            <-0.60, 0.60, 0.55> 
            texture{ tx_assento }
        }     
        //pernas
        box{
            <0.00, 0.00, 0.50>,
            <0.10, 0.10, 0.00>   
            texture{ tx_assento }
        }  
        box{
            <0.00, 0.50, 0.50>,
            <0.10, 0.60, 0.00>   
            texture{ tx_assento }
        } 
        box{
            <-0.50, 0.00, 0.50>,
            <-0.60, 0.10, 0.00>   
            texture{ tx_assento }
        }   
        box{
            <-0.50, 0.50, 0.50>,
            <-0.60, 0.60, 0.00>   
            texture{ tx_assento }
        }
    }
#end       

#macro auditorio(m, n) 
    #local row = 1;
    #local column = 1; 
    #local blocked = false;  
    union{                
        #while (row <= m)    
            #local column = 1;
            #while (column <= n)   
                #if (mod(column,2) = 0) 
                    #local blocked = true;
                #else
                    #local blocked = false;
                #end
                object { assento(blocked) translate <3.00 + 2*row, column, 0.00> }
                #local column = column + 1;
            #end    
            #local row = row + 1;
        #end
    }
#end
    

// Aqui está a cena, finalmente:

union{
  //object{ eixos(3.00) }     
  //object { assento(false) translate <7.00, 0.00, 0.00> }   
  auditorio(m,n)       
  object {auditorio(m,n) translate<0.00, -(n+1.00), 0.00>}      
  object { palco pigment{ color<0.50, 0.20, 0.00>} } 
}

#include "camlight.inc"
#declare centro_cena = < 0.00, 0.00, 0.00 >;
#declare raio_cena = 6.0;
#declare dir_camera = < 14.00, 1.00, 4.00 >;
#declare dist_camera = 10*raio_cena;
#declare intens_luz = 1.20;
camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)