// Last edited on DATE TIME by USER
// Processed by remove-cam-lights

#include "retalho.inc"

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

#declare tx_espelho =
  texture{
    pigment{ color rgb < 1.00, 0.85, 0.30 > }
    finish{ diffuse 0.2 reflection 0.7*< 1.00, 0.85, 0.30 > ambient 0.1 }
  }

#declare tx_vidro =
  texture{
    pigment{ color rgb < 0.85, 0.95, 1.00 > filter 0.70 }
    finish{ diffuse 0.03 reflection 0.25 ambient 0.02 specular 0.25 roughness 0.005 }
  }

#declare tx_xadrez =
  texture{
    pigment{ checker color rgb < 0.10, 0.32, 0.60 >, color rgb < 1.00, 0.97, 0.90 > }
    finish{ diffuse 0.9 ambient 0.1 }
    scale 2.0
  }

#declare tx_azulclaro =
  texture {
    pigment{ color rgb < 0.40, 0.85, 0.80 > }
  }

#declare tx_vermelho =
  texture {
    pigment{ color rgb < 1, 0.5, 0.50 > }
  }

#declare tx_obama =
  texture {
    pigment
    { image_map
      { png "obama.png" }
    }
}

#declare raio = 1.00;
#declare raioPequeno = 0.20;

#declare chao =
  box{ <0, 0, 0>, <+20,+20,0>
  texture{ tx_xadrez }
}

#declare A = array[4][4];
#declare A[0][0] = <4.0, 0, 1.5>;
#declare A[0][1] = <4.0, 0.5, 1.5>;
#declare A[0][2] = <4.0, 1.0, 1.5>;
#declare A[0][3] = <4.0, 1.5, 1.5>;
#declare A[1][0] = <2.5, 0, 1.5>;
#declare A[1][1] = <2.5, 0.5, 1.5>;
#declare A[1][2] = <2.5, 1.0, 1.5>;
#declare A[1][3] = <2.5, 1.5, 1.5>;
#declare A[2][0] = <2.0, 0, 1.5>;
#declare A[2][1] = <2.0, 0.5, 1.5>;
#declare A[2][2] = <2.0, 1.0, 1.5>;
#declare A[2][3] = <2.0, 1.5, 1.5>;
#declare A[3][0] = <1.5, 0, 1.7>;
#declare A[3][1] = <1.5, 0.5, 1.7>;
#declare A[3][2] = <1.5, 1.0,1.7>;
#declare A[3][3] = <1.5, 1.5,1.7>;

#declare B = array[4][4];
#declare B[0][0] = <1.5, 0, 1.7>;
#declare B[0][1] = <1.5, 0.5, 1.7>;
#declare B[0][2] = <1.5, 1.0,1.7>;
#declare B[0][3] = <1.5, 1.5,1.7>;
#declare B[1][0] = <1.2, 0, 1.8>;
#declare B[1][1] = <1.2, 0.5, 1.8>;
#declare B[1][2] = <1.2, 1.0, 1.8>;
#declare B[1][3] = <1.2, 1.5, 1.8>;
#declare B[2][0] = <0.9, 0, 2.1>;
#declare B[2][1] = <0.9, 0.5, 2.1>;
#declare B[2][2] = <0.9, 1.0, 2.1>;
#declare B[2][3] = <0.9, 1.5, 2.1>;
#declare B[3][0] = <0.6, 0, 2.2>;
#declare B[3][1] = <0.6, 0.5, 2.2>;
#declare B[3][2] = <0.6, 1.0, 2.2>;
#declare B[3][3] = <0.6, 1.5, 2.2>;

#declare C = array[4][4];
#declare C[0][0] = <0.6, 0, 2.2>;
#declare C[0][1] = <0.6, 0.5, 2.2>;
#declare C[0][2] = <0.6, 1.0, 2.2>;
#declare C[0][3] = <0.6, 1.5, 2.2>;
#declare C[1][0] = <0.1, 0, 2.4>;
#declare C[1][1] = <0.1, 0.5, 2.4>;
#declare C[1][2] = <0.1, 1.0, 2.4>;
#declare C[1][3] = <0.1, 1.5, 2.4>;
#declare C[2][0] = <-0.4, 0, 2.4>;
#declare C[2][1] = <-0.4, 0.5, 2.4>;
#declare C[2][2] = <-0.4, 1.0, 2.4>;
#declare C[2][3] = <-0.4, 1.5, 2.4>;
#declare C[3][0] = <-0.9, 0, 2.4>;
#declare C[3][1] = <-0.9, 0.5, 2.4>;
#declare C[3][2] = <-0.9, 1.0,2.4>;
#declare C[3][3] = <-0.9, 1.5,2.4>;

#declare D = array[4][4];
#declare D[0][0] = <4.0, 1.5, 1.5>;
#declare D[0][1] = <4.0, 2.0, 1.5>;
#declare D[0][2] = <4.0, 2.5, 1.5>;
#declare D[0][3] = <4.0, 3.0, 1.5>;
#declare D[1][0] = <2.5, 1.5, 1.5>;
#declare D[1][1] = <2.5, 2.0, 1.5>;
#declare D[1][2] = <2.5, 2.5, 1.5>;
#declare D[1][3] = <2.5, 3.0, 1.5>;
#declare D[2][0] = <2.0, 1.5, 1.5>;
#declare D[2][1] = <2.0, 2.0, 1.5>;
#declare D[2][2] = <2.0, 2.5, 1.5>;
#declare D[2][3] = <2.0, 3.0, 1.5>;
#declare D[3][0] = <1.5, 1.5, 1.7>;
#declare D[3][1] = <1.5, 2.0, 1.7>;
#declare D[3][2] = <1.5, 2.5, 1.7>;
#declare D[3][3] = <1.5, 3.0, 1.7>;

#declare E = array[4][4];
#declare E[0][0] = <1.5, 1.5, 1.7>;
#declare E[0][1] = <1.5, 2.0, 1.7>;
#declare E[0][2] = <1.5, 2.5, 1.7>;
#declare E[0][3] = <1.5, 3.0, 1.7>;
#declare E[1][0] = <1.2, 1.5, 1.8>;
#declare E[1][1] = <1.2, 2.0, 1.8>;
#declare E[1][2] = <1.2, 2.5, 1.8>;
#declare E[1][3] = <1.2, 3.0, 1.8>;
#declare E[2][0] = <0.9, 1.5, 2.1>;
#declare E[2][1] = <0.9, 2.0, 2.1>;
#declare E[2][2] = <0.9, 2.5, 2.1>;
#declare E[2][3] = <0.9, 3.0, 2.1>;
#declare E[3][0] = <0.6, 1.5, 2.2>;
#declare E[3][1] = <0.6, 2.0, 2.2>;
#declare E[3][2] = <0.6, 2.5, 2.2>;
#declare E[3][3] = <0.6, 3.0, 2.2>;

#declare F = array[4][4];
#declare F[0][0] = <0.6, 1.5, 2.2>;
#declare F[0][1] = <0.6, 2.0, 2.2>;
#declare F[0][2] = <0.6, 2.5, 2.2>;
#declare F[0][3] = <0.6, 3.0, 2.2>;
#declare F[1][0] = <0.1, 1.5, 2.4>;
#declare F[1][1] = <0.1, 2.0, 2.4>;
#declare F[1][2] = <0.1, 2.5, 2.4>;
#declare F[1][3] = <0.1, 3.0, 2.4>;
#declare F[2][0] = <-0.4, 1.5, 2.4>;
#declare F[2][1] = <-0.4, 2.0, 2.4>;
#declare F[2][2] = <-0.4, 2.5, 2.4>;
#declare F[2][3] = <-0.4, 3.0, 2.4>;
#declare F[3][0] = <-0.9, 1.5,2.4>;
#declare F[3][1] = <-0.9, 2.0, 2.4>;
#declare F[3][2] = <-0.9, 2.5,2.4>;
#declare F[3][3] = <-0.9, 3.0,2.4>;

#declare rodaDir =
  cylinder {
    <2.0,-0.55,1.5>, <2.0,-0.4,1.5>, 1.0
  }

#declare rodaEsq =
  cylinder {
    <2.0,3.1,1.5>, <2.0,3.25,1.5>, 1.0
  }

#include "eixos.inc"

union{
  object{ eixos(3.00) }

  union {

    object {
      retalho(A[0][0], A[0][1], A[0][2], A[0][3], A[1][0], A[1][1],A[1][2],A[1][3],A[2][0],A[2][1],A[2][2],
              A[2][3],A[3][0],A[3][1],A[3][2], A[3][3], 0.000001, tx_azulclaro, tx_obama)
    }
    object {
     retalho(B[0][0], B[0][1], B[0][2], B[0][3], B[1][0], B[1][1], B[1][2], B[1][3], B[2][0], B[2][1], B[2][2],
              B[2][3], B[3][0], B[3][1], B[3][2], B[3][3], 0.000001, tx_azulclaro, tx_obama)
    }

    object {
     retalho(C[0][0], C[0][1], C[0][2], C[0][3], C[1][0], C[1][1], C[1][2], C[1][3], C[2][0], C[2][1], C[2][2],
              C[2][3], C[3][0], C[3][1], C[3][2], C[3][3], 0.000001, tx_azulclaro, tx_obama)
    }
    object {
     retalho(D[0][0], D[0][1], D[0][2], D[0][3], D[1][0], D[1][1], D[1][2], D[1][3], D[2][0], D[2][1], D[2][2],
              D[2][3], D[3][0], D[3][1], D[3][2], D[3][3], 0.000001, tx_azulclaro, tx_obama)
    }
    object {
     retalho(E[0][0], E[0][1], E[0][2], E[0][3], E[1][0], E[1][1], E[1][2], E[1][3], E[2][0], E[2][1], E[2][2],
              E[2][3], E[3][0], E[3][1], E[3][2], E[3][3], 0.000001, tx_azulclaro, tx_obama)
    }

    object {
     retalho(F[0][0], F[0][1], F[0][2], F[0][3], F[1][0], F[1][1], F[1][2], F[1][3], F[2][0], F[2][1], F[2][2],
              F[2][3], F[3][0], F[3][1], F[3][2], F[3][3], 0.000001, tx_azulclaro, tx_obama)
    }
    object { rodaDir }
    object { rodaEsq }
  }

}

#include "camlight.inc"
#declare centro_cena = < 0.00, 0.00, 0.00 >;
#declare raio_cena = 5.0;
#declare dir_camera = < 15.00, 13.00, 8.00 >;
#declare dist_camera = 15.0;
#declare intens_luz = 1.00;
camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)