// 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_plastico =
  texture{
    pigment{ color rgb < 0.10, 0.10, 1.00 > }
    finish{ diffuse 0.8 ambient 0.1 specular 0.5 roughness 0.005 }
  }

#declare tx_plastico_amarelo =
  texture{
    pigment{ color rgb < 1.0, 0.65, 0 > }
    finish{ diffuse 0.8 ambient 0.1 specular 0.5 roughness 0.005 }
  }

#declare tx_fosca =
  texture{
    pigment{ color rgb < 0.00, 1.00, 0.10 > }
    finish{ diffuse 0.9 ambient 0.1 }
  }

#declare tx_espelho =
  texture{
    pigment{ color rgb < 0.5, 0.5, 0.5 > }
    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 roda =
  cylinder {
    <0.0, 0.0, 0.0>,
    <0.25, 0.0, 0.0>,
    1.0
  }

#declare turbina =
  cone {
    <0.0, 0.0, 0.0>,
    1.0,
    <0.0, 3.0, 0.0>,
    0.25
  }

#declare encosto =
  union {
    box {
      <0.0, 0.0, 0.0>,
      <11.0, 1.0, 4.0>
    }
  }

#declare braco =
  union {
    box {
      <0.0, 0.0, 0.0>,
      <1.0, 4.0, 3.0>
    }
  }

#declare asa =
  union {
    box {
      <0.0, 0.0, 0.0>,
      <2.0, 1.0, 0.25>
    }
    object{turbina translate<2.5, -1.0, 0.0>}
  }

#declare fundo =
  union {
    box {
      <0.0, 0.0, 0.0>,
      <11.0, 5.0, -1.0>
    }
  }

#declare eixo =
  cylinder {
    <1.0, 2.5, -2.0>,
    <11.0, 2.5, -2.0>,
    0.25
  }

union {
  object{encosto texture{tx_plastico}}
  object{braco translate<0.0, 1.0, 0.0> texture{tx_plastico}}
  object{braco translate<10.0, 1.0, 0.0> texture{tx_plastico}}
  object{asa translate<11.0, 2.0, 1.5> texture{tx_fosca}}
  object{asa rotate<180, 0.0, 180> translate<0.0, 2.0, 1.5> texture{tx_fosca}}
  object{fundo texture{tx_plastico}}
  object{eixo texture{tx_vidro}}
  object{eixo scale<0.5, 1, 1> rotate<0.0, 0.0, 90> translate<8, 1.5, 0.0> texture{tx_vidro}}
  object{eixo scale<0.125, 1, 1> rotate<0.0, 90, 0> translate<7.5, 4.5, -1.25> texture{tx_vidro}}
  object{eixo scale<0.25, 1, 1> translate<4.0, 4.5, -0.50> texture{tx_vidro}}
  object{roda translate<0.0, 2.5, -2.0> texture{tx_plastico_amarelo}}
  object{roda translate<11.0, 2.5, -2.0> texture{tx_plastico_amarelo}}
  object{roda translate<3.9, 6.5, -2.5> texture{tx_plastico_amarelo}}
  object{roda translate<6.7, 6.5, -2.5> texture{tx_plastico_amarelo}}

  #declare A = array[4][4];
  #declare A[0][0] = <0.0, 0.0, 0.0>;
  #declare A[0][1] = <1.0, 0.0, 0.0>;
  #declare A[0][2] = <2.0, 0.0, 0.0>;
  #declare A[0][3] = <3.0, 0.0, 0.0>;
  #declare A[1][0] = <0.0, 1.2, 0.0>;
  #declare A[1][1] = <1.0, 1.2, 1.0>;
  #declare A[1][2] = <2.0, 1.2, 1.0>;
  #declare A[1][3] = <3.0, 1.2, 0.0>;
  #declare A[2][0] = <0.0, 2.5, 0.0>;
  #declare A[2][1] = <1.0, 2.5, 1.0>;
  #declare A[2][2] = <2.0, 2.5, 1.0>;
  #declare A[2][3] = <3.0, 2.5, 0.0>;
  #declare A[3][0] = <0.0, 4.0, 0.0>;
  #declare A[3][1] = <1.0, 4.0, 0.0>;
  #declare A[3][2] = <2.0, 4.0, 0.0>;
  #declare A[3][3] = <3.0, 4.0, 0.0>;
  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.00001, tx_fosca, tx_plastico
          )
    translate<1.0, 1.0, 0.0>
  }
  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.00001, tx_fosca, tx_plastico
          )
    translate<4.0, 1.0, 0.0>
  }
  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.00001, tx_fosca, tx_plastico
          )
    translate<7.0, 1.0, 0.0>
  }
  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.00001, tx_fosca, tx_plastico
          )
    rotate<90, 0, 0.0>
    rotate<0, 0, 180>
    translate<4.0, 1.0, 0.0>
  }
  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.00001, tx_fosca, tx_plastico
          )
    rotate<90, 0, 0>
    rotate<0, 0, 180>
    translate<7.0, 1.0, 0.0>
  }
  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.00001, tx_fosca, tx_plastico
          )
    rotate<90, 0, 0>
    rotate<0, 0, 180>
    translate<10.0, 1.0, 0.0>
  }
}

#include "camlight.inc"
#declare centro_cena = < 6.00, 3.00, 2.00 >;
#declare raio_cena = 12.0;
#declare dir_camera = < 0.00, 6.10, 2.00 >;
#declare dist_camera = 18.0;
#declare intens_luz = 0.60;
camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)