// Last edited on 2003-12-14 18:37:05 by stolfi

#declare bz_name = "Bob Esponja"

#include "colors.inc"
#include "metals.inc"
#include "golds.inc"
#include "stones1.inc"
#include "textures.inc"

// OBJETOS ///

// Frente

#declare A11=<-2,2,0>; 
#declare A12=<-1,2,0>; 
#declare A13=<1,2,0>; 
#declare A14=<2,2,0>; // row 1

#declare A21=<-2.3,1,0>; 
#declare A22=<-1,1,0.5>; //
#declare A23=<1,1,0.5>; 
#declare A24=<2.3,1,0>; // row 2

#declare A31=<-2.3,0,0>; 
#declare A32=<-1,0,0.5>; //
#declare A33=<1,0,0.5>; 
#declare A34=<2.3,0,0>; // row 3

#declare A41=<-2,-1,0>; 
#declare A42=<-1,-1,0>; //
#declare A43=<1,-1,0>; 
#declare A44=<2,-1,0>; // row 4

// Cima
#declare B11=<-2,2,0>; 
#declare B12=<-1,2,0>; 
#declare B13=<1,2,0>; 
#declare B14=<2,2,0>; // row 1

#declare B21=<-2,2,-1/3>; 
#declare B22=<-1,2.3,-1/3>; //
#declare B23=<1,2.3,-1/3>; 
#declare B24=<2,2,-1/3>; // row 2

#declare B31=<-2,2,-2/3>; 
#declare B32=<-1,2.3,-2/3>; //
#declare B33=<1,2.3,-2/3>; 
#declare B34=<2,2.3,-2/3>; // row 3

#declare B41=<-2,2,-1>; 
#declare B42=<-1,2,-1>; //
#declare B43=<1,2,-1>; 
#declare B44=<2,2,-1>; // row 4

// Baixo

#declare C11=<-2,-1,0>; 
#declare C12=<-1,-1,0>; 
#declare C13=<1,-1,0>; 
#declare C14=<2,-1,0>; // row 1

#declare C21=<-2,-1,-1/3>; 
#declare C22=<-1,-1.3,-1/3>; //
#declare C23=<1,-1.3,-1/3>; 
#declare C24=<2,-1,-1/3>; // row 2

#declare C31=<-2,-1,-2/3>; 
#declare C32=<-1,-1.3,-2/3>; //
#declare C33=<1,-1.3,-2/3>; 
#declare C34=<2,-1.3,-2/3>; // row 3

#declare C41=<-2,-1,-1>; 
#declare C42=<-1,-1,-1>; //
#declare C43=<1,-1,-1>; 
#declare C44=<2,-1,-1>; // row 4

// Atras
#declare D11=<-2,2,-1>; 
#declare D12=<-1,2,-1>; 
#declare D13=<1,2,-1>; 
#declare D14=<2,2,-1>; // row 1

#declare D21=<-2.3,1,-1>; 
#declare D22=<-1,1,-1.5>; //
#declare D23=<1,1,-1.5>; 
#declare D24=<2.3,1,-1>; // row 2

#declare D31=<-2.3,0,-1>; 
#declare D32=<-1,0,-1.5>; //
#declare D33=<1,0,-1.5>; 
#declare D34=<2.3,0,-1>; // row 3

#declare D41=<-2,-1,-1>; 
#declare D42=<-1,-1,-1>; //
#declare D43=<1,-1,-1>; 
#declare D44=<2,-1,-1>; // row 4

// Direito
#declare E11=<2,2,0>; 
#declare E12=<2,2,-1/3>; 
#declare E13=<2,2.3,-2/3>; 
#declare E14=<2,2,-1>; // row 1

#declare E21=<2,1,0>; 
#declare E22=<2.3,1,-1/3>; //
#declare E23=<2.3,1,-2/3>; 
#declare E24=<2,1,-1>; // row 2

#declare E31=<2,0,0>; 
#declare E32=<2.3,0,-1/3>; //
#declare E33=<2.3,0,-2/3>; 
#declare E34=<2,0,-1>; // row 3

#declare E41=<2,-1,0>; 
#declare E42=<2,-1,-1/3>; //
#declare E43=<2,-1.3,-2/3>; 
#declare E44=<2,-1,-1>; // row 4

// Esquerdo
#declare F11=<-2,2,0>; 
#declare F12=<-2,2,-1/3>; 
#declare F13=<-2,2,-2/3>; 
#declare F14=<-2,2,-1>; // row 1

#declare F21=<-2,1,0>; 
#declare F22=<-2.3,1,-1/3>; //
#declare F23=<-2.3,1,-2/3>; 
#declare F24=<-2,1,-1>; // row 2

#declare F31=<-2,0,0>; 
#declare F32=<-2.3,0,-1/3>; //
#declare F33=<-2.3,0,-2/3>; 
#declare F34=<-2,0,-1>; // row 3

#declare F41=<-2,-1,0>; 
#declare F42=<-2,-1,-1/3>; //
#declare F43=<-2,-1,-2/3>; 
#declare F44=<-2,-1,-1>; // row 

// Include Bezier grids:

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

#declare frente =
  union{
    bicubic_patch {
       type 1 flatness 0.001
       u_steps 4 v_steps 4
       uv_vectors
       <0,0> <1,0> <1,1> <0,1>
       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 cima =
  union{
    bicubic_patch {
       type 1 flatness 0.001
       u_steps 4 v_steps 4
       uv_vectors
       <0,0> <1,0> <1,1> <0,1>
       B11, B12, B13, B14
       B21, B22, B23, B24
       B31, B32, B33, B34
       B41, B42, B43, B44
       uv_mapping
       texture{ bz_tx_B }
    }
    object{ bz_grid_B }
  }

#declare baixo =
  union{
    bicubic_patch {
      type 1 flatness 0.001
      u_steps 4 v_steps 4
      uv_vectors
      <0,0> <1,0> <1,1> <0,1>
      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 atras =
  union{
    bicubic_patch {
      type 1 flatness 0.001
      u_steps 4 v_steps 4
      uv_vectors
      <0,0> <1,0> <1,1> <0,1>
      D11, D12, D13, D14
      D21, D22, D23, D24
      D31, D32, D33, D34
      D41, D42, D43, D44
      texture{ bz_tx_D }
    }
    object{ bz_grid_D }
  }


#declare direito =
  union{
    bicubic_patch{
      type 1 flatness 0.001
      u_steps 4 v_steps 4
      uv_vectors
      <0,0> <1,0> <1,1> <0,1>
      E11, E12, E13, E14
      E21, E22, E23, E24
      E31, E32, E33, E34
      E41, E42, E43, E44
      texture{ bz_tx_E }
    }
    object{ bz_grid_E }
  }

#declare esquerdo =
  union{
    bicubic_patch{
      type 1 flatness 0.001
      u_steps 4 v_steps 4
      uv_vectors
      <0,0> <1,0> <1,1> <0,1>
      F11, F12, F13, F14
      F21, F22, F23, F24
      F31, F32, F33, F34
      F41, F42, F43, F44
      texture{ bz_tx_F }
    }
    object{ bz_grid_F }
  }

// Cena Final
#declare scene =
  union{
    union {
      object {frente}// rotate -45*y translate 2*z}
      object {cima}
      object {baixo}
      object {atras}
      object {direito}
      object {esquerdo}
      rotate 90*z
      translate <+0.5,+0.25,+0.5>
      rotate 45*y
    }
    // object{ bz_axes }
  } 

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