// Last edited on 2003-06-24 20:00:33 by stolfi
// arquivo de descricao de cena para POV-ray
// Laboratório 1 - MC930 - 1S/2003
// Marcelo Bello RA 992119

#include "colors.inc"

#declare ESPELHA_X = < -1.00, 1.00, 1.00 >;
#declare ESPELHA_Y = < 1.00, -1.00, 1.00 >;
#declare ESPELHA_Z = < 1.00, 1.00, -1.00 >;

#declare A11 = < 5.00, 0.00, 0.00 >;
#declare A12 = < 3.00, 2.00, 0.00 >;
#declare A13 = < 2.00, 3.00, 0.00 >;
#declare A14 = < 0.00, 2.00, 0.00 >;
#declare A21 = < 4.80, 1.30, -2.00 >;
#declare A22 = < 2.90, 1.80, -1.50 >;
#declare A23 = < 1.90, 1.50, -1.70 >;
#declare A24 = < 0.00, 1.00, -1.50 >;
#declare A31 = < A21.x, -A21.y, A21.z >;
#declare A32 = < A22.x, -A22.y, A22.z >;
#declare A33 = < A23.x, -A23.y, A23.z >;
#declare A34 = < A24.x, -A24.y, A24.z >;
#declare A41 = < A11.x, -A11.y, A11.z >;
#declare A42 = < A12.x, -A12.y, A12.z >;
#declare A43 = < A13.x, -A13.y, A13.z >;
#declare A44 = < A14.x, -A14.y, A14.z >;

#declare B11 = A14;
#declare B12 = B11 + ( A14 - A13 );
#declare B13 = < B12.x - 1.50, B12.y, -1.5 >;
#declare B14 = < B13.x - 1.0, B13.y, -1.5>;
#declare B21 = A24;
#declare B22 = B21 + ( A24 - A23 );
#declare B23 = < B22.x - 1.50, B22.y, -1.5>;
#declare B24 = < B23.x - 1.0, B23.y, -1.5 >;
#declare B31 = A34;
#declare B32 = B31 + ( A34 - A33 );
#declare B33 = < B32.x - 1.50, B32.y, -1.5 >;
#declare B34 = < B33.x - 1.0, B33.y, -1.5 >;
#declare B41 = A44;
#declare B42 = B41 + ( A44 - A43 );
#declare B43 = < B42.x - 1.50, B42.y, -1.5 >;
#declare B44 = < B43.x - 1.0, B43.y, -1.5 >;

#declare C11 = B14;
#declare C12 = C11 + ( B14 - B13 );
#declare C13 = < C12.x - 1, 2.50, -0.3 >;
#declare C14 = < C13.x - 0.5, C13.y, -0.1 >;
#declare C21 = B24;
#declare C22 = C21 + ( B24 - B23 );
#declare C23 = < C22.x - 0.2, 1.50, -0.3 >;
#declare C24 = < C23.x - 0.2, 1.00, -0.1 >;
#declare C31 = B34;
#declare C32 = C31 + ( B34 - B33 );
#declare C33 = < C32.x - 1.6, -C23.y, -0.3 >;
#declare C34 = < C33.x - 0.6, C33.y - 0.5, -0.1 >;
#declare C41 = B44;
#declare C42 = C41 + ( B44 - B43 );
#declare C43 = < C42.x - 1, -C13.y, -0.3 >;
#declare C44 = < C34.x - 0.2, C34.y, -0.1 >;

#declare D11 = A11;
#declare D12 = A12;
#declare D13 = A13;
#declare D14 = A14;
#declare D21 = A21 * ESPELHA_Z;
#declare D22 = A22 * ESPELHA_Z;
#declare D23 = A23 * ESPELHA_Z;
#declare D24 = A24 * ESPELHA_Z;
#declare D31 = A31 * ESPELHA_Z;
#declare D32 = A32 * ESPELHA_Z;
#declare D33 = A33 * ESPELHA_Z;
#declare D34 = A34 * ESPELHA_Z;
#declare D41 = A41;
#declare D42 = A42;
#declare D43 = A43;
#declare D44 = A44;

#declare E11 = B11;
#declare E12 = B12;
#declare E13 = B13;
#declare E14 = B14;
#declare E21 = B21 * ESPELHA_Z;
#declare E22 = B22 * ESPELHA_Z;
#declare E23 = B23 * ESPELHA_Z;
#declare E24 = B24 * ESPELHA_Z;
#declare E31 = B31 * ESPELHA_Z;
#declare E32 = B32 * ESPELHA_Z;
#declare E33 = B33 * ESPELHA_Z;
#declare E34 = B34 * ESPELHA_Z;
#declare E41 = B41;
#declare E42 = B42;
#declare E43 = B43;
#declare E44 = B44;

#declare F11 = < C11.x, C11.y, C11.z >;
#declare F12 = < C12.x, C12.y, C12.z >;
#declare F13 = < C13.x, C13.y, C13.z >;
#declare F14 = < C14.x, C14.y, C14.z >;
#declare F21 = < C21.x, C21.y, -C21.z >;
#declare F22 = < C22.x, C22.y, -C22.z >;
#declare F23 = < C23.x, C23.y, -C23.z >;
#declare F24 = < C24.x, C24.y, C24.z >;
#declare F31 = < C31.x, C31.y, -C31.z >;
#declare F32 = < C32.x, C32.y, -C32.z >;
#declare F33 = < C33.x, C33.y, -C33.z >;
#declare F34 = < C34.x, C34.y, C34.z >;
#declare F41 = < C41.x, C41.y, C41.z >;
#declare F42 = < C42.x, C42.y, C42.z >;
#declare F43 = < C43.x, C43.y, C43.z >;
#declare F44 = < C44.x, C44.y, C44.z >;

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

#declare retalho1 =
  union{
    bicubic_patch {
      type 1 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 retalho2 =
  union{
    bicubic_patch {
	type 1 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 retalho3 =
  union{
    bicubic_patch {
      type 1 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 retalho4 =
  union{
    bicubic_patch {
      type 1 flatness 0
      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 }
  }

#declare retalho5 =
  union{
    bicubic_patch {
      type 1 flatness 0
      u_steps 4 v_steps 4
      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 retalho6 =
  union{
    bicubic_patch {
      type 1 flatness 0
      u_steps 4 v_steps 4
      F11, F12, F13, F14,
      F21, F22, F23, F24,
      F31, F32, F33, F34,
      F41, F42, F43, F44
      texture { bz_tx_F }
    }
    object { bz_grid_F }
  }

#declare scene = 
  union{
    union {
      object{ retalho1 pigment{ color rgb < 0.00, 0.00, 1.00 > } }
      object{ retalho2 pigment{ color rgb <1.00, 0.00, 0.00 > } }
      object{ retalho3 pigment{ color rgb <0.00, 1.00, 0.00 > }}
      object{ retalho4 pigment{ color rgb < 0.00, 0.00, 1.00 > } }
      object{ retalho5 pigment{ color rgb <1.00, 0.00, 0.00 > } }
      object{ retalho6 pigment{ color rgb <0.00, 1.00, 0.00 > } }
      rotate 20*y
      translate < +1, 0, +2 >
    }
    // object{ bz_axes }
  }

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