// Last edited on 2003-12-14 18:24:22 by stolfi
// Last edited on 2003-11-28 
// Lucas Batista Freitas
// 

#declare bz_name = "Homer Simpson"

#include "colors.inc"
#include "textures.inc"
#include "stones.inc"
#include "finish.inc"

#declare S = < 1, 3.0, 1>;

//---------Pontos da 1a Parte---------
#declare A11 = S * <0, 0, 0>; 
#declare A12 = S * <0, 0, -4>;
#declare A13 = S * <6, 0, -4>;
#declare A14 = S * <6, 0, 0>;

#declare A21 = S * <0, 0, 0.001>;
#declare A22 = S * <0, 1.3, -4>;
#declare A23 = S * <6, 1.3, -4>;
#declare A24 = S * <6, 0, 0.001>;

#declare A31 = S * <0, 0, 0>;
#declare A32 = S * <0, 1.3, 4>;
#declare A33 = S * <6, 1.3, 4>;
#declare A34 = S * <6, 0, 0>;

#declare A41 = S * <0, 0, 0.001>;
#declare A42 = S * <0, 0, 4>;
#declare A43 = S * <6, 0, 4>;
#declare A44 = S * <6, 0, 0.001>;

//---------Pontos da 2a Parte---------
#declare B11 = A11; 
#declare B12 = A12;
#declare B13 = A13;
#declare B14 = A14;

#declare B21 = B11 - S * <0, 0.0001, 0>;
#declare B22 = B12 - S * <0, 0.0001, 0>;
#declare B23 = B13 - S * <0, 0.0001, 0>;
#declare B24 = B14 - S * <0, 0.0001, 0>;

#declare B31 = B21 - S * <0, 0, 0.0001>;
#declare B32 = B22 - S * <0, 0, 0.0001>;
#declare B33 = B23 - S * <0, 0, 0.0001>;
#declare B34 = B24 - S * <0, 0, 0.0001>;

#declare B41 = B11 - S * <0, 2, 0>;
#declare B42 = B12 - S * <0, 2, 0>;
#declare B43 = B13 - S * <0, 2, 0>;
#declare B44 = B14 - S * <0, 2, 0>;

//---------Pontos da 3a Parte---------
#declare C11 = B44 - S * <0, 0, 1.5>; 
#declare C12 = C11 + S * <0.3, 0, 0.1>;
#declare C13 = B44 + S * <0.3, 0, -0.1>;
#declare C14 = B44;

#declare C21 = C11 + S * <0.3, -0.15, 0>;
#declare C22 = C12 + S * <0.3, -0.15, 0>;
#declare C23 = C13 + S * <0.3, -0.15, 0>;
#declare C24 = C14 + S * <0.3, -0.15, 0>;

#declare C31 = C21 + S * <0, -0.3, 0>;
#declare C32 = C22 + S * <0, -0.3, 0>;
#declare C33 = C23 + S * <0, -0.3, 0>;
#declare C34 = C24 + S * <0, -0.3, 0>;


#declare C41 = C11 - S * <0, 0.5, 0>;
#declare C42 = C12 - S * <0, 0.5, 0>;
#declare C43 = C13 - S * <0, 0.5, 0>;
#declare C44 = C14 - S * <0, 0.5, 0>;

#declare bz_scale = 0.55;
#include "bz-things.inc"

#declare olho = 
	sphere{B14 - S * <0,1,1>,0.6 texture{bz_tx_C}}

#declare parte1 =
  union{
    bicubic_patch {
      type 0
      flatness 0
      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 parte2 =
  union{
    bicubic_patch {
      type 0
      flatness 0
      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 parte3 =
  union{
    bicubic_patch {
      type 0
      flatness 0
      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 scene = 
  union{
    union{
      object {parte1 }
      object {parte2 }
      object {olho}
      object {parte1 scale <1,-1,1> translate S * <0,-2,0> }
      object {parte2 scale <1,1,-1> } 
      translate S * < -3, 1, 0 >
      rotate -90*y
    }
    // object{ bz_axes }
  }

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