// MC930 - Laboratorio 10
// Douglas Gardim  RA: 008506 
//

///////////Retalho A
#declare A11 = <-4.0, 2,  2>;
#declare A12 = <-2.5, 2,  1.8>;
#declare A13 = <-1.5, 2,  1.6>;
#declare A14 = < 0.0, 2,  1.2>;

#declare A21 = <-4.0, 4,  2>;
#declare A22 = <-2.5, 4,  1.8>;
#declare A23 = <-1.5, 4,  1.6>;
#declare A24 = < 0.0, 4,  1.2>;

#declare A31 = <-4.0, 3, -2>;
#declare A32 = <-2.5, 3, -2.2>;
#declare A33 = <-1.5, 3, -2.4>;
#declare A34 = < 0.0, 3, -2.8>;

#declare A41 = <-4.0, 2, -2>;
#declare A42 = <-2.5, 2, -2.2>;
#declare A43 = <-1.5, 2, -2.4>;
#declare A44 = < 0.0, 2, -2.8>;


///////////Retalho B
#declare B11 = <-4.0, 2,  2>;
#declare B12 = <-2.5, 2,  1.8>;
#declare B13 = <-1.5, 2,  1.6>;
#declare B14 = < 0.0, 2,  1.2>;

#declare B21 = <-4.0, 0,  2>;
#declare B22 = <-2.5, 0,  1.8>;
#declare B23 = <-1.5, 0,  1.6>;
#declare B24 = < 0.0, 0,  1.2>;

#declare B31 = <-4.0, 1, -2>;
#declare B32 = <-2.5, 1, -2.2>;
#declare B33 = <-1.5, 1, -2.4>;
#declare B34 = < 0.0, 1, -2.8>;

#declare B41 = <-4.0, 2, -2>;
#declare B42 = <-2.5, 2, -2.2>;
#declare B43 = <-1.5, 2, -2.4>;
#declare B44 = < 0.0, 2, -2.8>;


///////////Retalho C
#declare C11 = < 0.0, 2,  1.2>;
#declare C12 = < 1.5, 2,  0.8>;
#declare C13 = < 2.5, 2,  0.6>;
#declare C14 = < 4.0, 2, -0.6>;

#declare C21 = < 0.0, 4,  1.2>;
#declare C22 = < 1.5, 4,  0.8>;
#declare C23 = < 2.5, 4,  0.6>;
#declare C24 = < 4.0, 3, -0.6>;

#declare C31 = < 0.0, 3, -2.8>;
#declare C32 = < 1.5, 3, -3.2>;
#declare C33 = < 2.5, 3, -3.4>;
#declare C34 = < 4.0, 2.2, -2.6>;

#declare C41 = < 0.0, 2, -2.8>;
#declare C42 = < 1.5, 2, -3.2>;
#declare C43 = < 2.5, 2, -3.4>;
#declare C44 = < 4.0, 2, -2.6>;


///////////Retalho D
#declare D11 = < 0.0, 2,  1.2>;
#declare D12 = < 1.5, 2,  0.8>;
#declare D13 = < 2.5, 2,  0.6>;
#declare D14 = < 4.0, 2, -0.6>;

#declare D21 = < 0.0, 0,  1.2>;
#declare D22 = < 1.5, 0,  0.8>;
#declare D23 = < 2.5, 0,  0.6>;
#declare D24 = < 4.0, 1, -0.6>;

#declare D31 = < 0.0, 1,  -2.8>;
#declare D32 = < 1.5, 1,  -3.2>;
#declare D33 = < 2.5, 1,  -3.4>;
#declare D34 = < 4.0, 1.8,-2.6>;

#declare D41 = < 0.0, 2, -2.8>;
#declare D42 = < 1.5, 2, -3.2>;
#declare D43 = < 2.5, 2, -3.4>;
#declare D44 = < 4.0, 2, -2.6>;



#declare bz_name = "Asa"
#declare bz_scale = 0.36;
#include "bz-things.inc"

#declare splA =
  union{
    bicubic_patch {
      type 0 flatness 0.03
      u_steps 4 v_steps 4
      A11, A12, A13, A14,
      A21, A22, A23, A24,
      A31, A32, A33, A34,
      A41, A42, A43, A44
      texture { bz_tx_A }
    }
    object { bz_grid_A }
  }

#declare splB =
  union{
    bicubic_patch {
      type 0 flatness 0.03
      u_steps 4 v_steps 4
      B11, B12, B13, B14,
      B21, B22, B23, B24,
      B31, B32, B33, B34,
      B41, B42, B43, B44
      texture { bz_tx_B }
    }
    object { bz_grid_B }
  }

#declare splC =
union{
  bicubic_patch {
    type 0 flatness 0.03
    u_steps 4 v_steps 4
    C11, C12, C13, C14,
    C21, C22, C23, C24,
    C31, C32, C33, C34,
    C41, C42, C43, C44
    texture { bz_tx_C }
  }
  object { bz_grid_C }
}

#declare splD =
union{
  bicubic_patch {
    type 0 flatness 0.03
    u_steps 4 v_steps 4
    D11, D12, D13, D14,
    D21, D22, D23, D24,
    D31, D32, D33, D34,
    D41, D42, D43, D44
    texture { bz_tx_D }
  }
  object { bz_grid_D }
}

 //CAMERA
//normal
#declare locpos = < 15.00, 10.00, 25.00 >;
#declare lookpos = <  0.00, 2.00, 0.00 >;

//cima
//#declare locpos = <   5.00, 50.00, 0.00 >;
//#declare lookpos = <  5.00, 2.00,  0.00 >;

//lado
//#declare locpos = < 50.00, 2.00, 0.00 >;
//#declare lookpos = <  0.00, 2.00, 0.00 >;

camera {location  locpos right -1.5*x up 0.75*y sky y look_at lookpos angle 40} 

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

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

// Aqui está a cena, finalmente:
plane {y, 0
  texture {
    pigment{checker <0.2,0.2,0.2>,<0.3,0.3,0.3>}
    finish {ambient 0.2 diffuse 0.8 reflection 0.05}
  }
}

#declare asa = 
  union {
    object {splA}
    object {splB}
    object {splC}
    object {splD}
  }

//#declare scene = 
  union {
    object {asa translate <5,0,0>}
    object {asa scale -1*x translate <-5,0,0>}
    cylinder {<0,2,3>,<0,2,-8>,2}
    cone {<0,2,3>,2,<0,2,6>,0.1}
    texture { bz_tx_H }
  }

  
//object{ bz_checker_bg }
//object{ scene translate bz_rite_pos }
//object{ scene rotate -90*y translate bz_left_pos }