// Last edited on 2009-11-24 21:46:47 by stolfilocal
// Processed by remove-cam-lights

#include "retalho.inc"
#declare grid_rd = 0.03;

#include "nuvens.inc"

#macro eixo(ponta,cor,nome)
  union{
    sphere{ <0,0,0>, 0.02 }
    cylinder{ <0,0,0>, 0.91*ponta, 0.02 }
    cone{ 0.90*ponta, 0.06, ponta, 0.00 }
    texture{ pigment{ color rgb cor } finish{ ambient 0.5 diffuse 0.5 } }
  }
#end
#macro eixos(tamanho)
  union{
    object{ eixo( <tamanho,0,0>, <1.0,0.2,0.2>, "X") }
    object{ eixo( <0,tamanho,0>, <0.0,0.8,0.0>, "Y") }
    object{ eixo( <0,0,tamanho>, <0.3,0.3,1.0>, "Z") }
  }
#end

#declare tx_plastico_branco =
  texture{
    pigment{ color rgb 1 }
    finish{ diffuse 0.1 reflection 0.2 ambient 0.6 specular 0.1 roughness 0.005 }
  }
#declare tx_plastico_preto =
  texture{
    pigment{ color rgb 0 }
    finish{ diffuse 0.1 reflection 0.2 ambient 0.6 specular 0.1 roughness 0.005 }
  }

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

#declare tx_grade =
  texture{
    pigment{ color rgb < 1.00, 0.80, 0.30 > }
    finish{ diffuse 0.9 ambient 0.1 }
  }

#declare tx_espelho =
  texture{
    pigment{ color rgb < 1.00, 0.90, 0.70 > }
    finish{ diffuse 0.1 reflection 0.8*< 1.00, 0.90, 0.70 > ambient 0.1 }
  }

#declare tx_vidro =
  texture{
    pigment{ color rgb < 1, 1, 1 > filter 0.90 }
    finish{ diffuse 0.03 reflection 0.25 ambient 0.02 specular 0.25 roughness 0.005 }
  }
#declare tx_vidro_preto =
  texture{
    pigment{ color rgb <0.5, 0.5, 0.5 > filter 0.80 }
    finish{ diffuse 0.03 reflection 0.25 ambient 0.02 specular 0.25 roughness 0.005 }
  }
background{ color rgb < 0.75, 0.80, 0.85 > }

#macro pe(
  p0_11, p0_12, p0_13, p0_14,
  p0_21, p0_22, p0_23, p0_24,
  p0_31, p0_32, p0_33, p0_34,

  p1_21, p1_22, p1_23, p1_24,
  p1_31, p1_32, p1_33, p1_34,

  p2_21, p2_22, p2_23, p2_24,
  p2_31, p2_32, p2_33, p2_34,

  p3_21, p3_22, p3_23, p3_24,
  p3_31, p3_32, p3_33, p3_34,

  p4_21, p4_22, p4_23, p4_24,
  p4_31, p4_32, p4_33, p4_34,
  p4_41, p4_42, p4_43, p4_44)

  #local p0_41 = (p0_31+p1_21)/2;
  #local p0_42 = (p0_32+p1_22)/2;
  #local p0_43 = (p0_33+p1_23)/2;
  #local p0_44 = (p0_34+p1_24)/2;

  #local p1_41 = (p1_31+p2_21)/2;
  #local p1_42 = (p1_32+p2_22)/2;
  #local p1_43 = (p1_33+p2_23)/2;
  #local p1_44 = (p1_34+p2_24)/2;

  #local p2_41 = (p2_31+6*p3_21)/7;
  #local p2_42 = (p2_32+6*p3_22)/7;
  #local p2_43 = (p2_33+6*p3_23)/7;
  #local p2_44 = (p2_34+6*p3_24)/7;

  #local p3_41 = (p3_31+p4_21)/2;
  #local p3_42 = (p3_32+p4_22)/2;
  #local p3_43 = (p3_33+p4_23)/2;
  #local p3_44 = (p3_34+p4_24)/2;

  #local p1_11 = p0_41;
  #local p1_12 = p0_42;
  #local p1_13 = p0_43;
  #local p1_14 = p0_44;

  #local p2_11 = p1_41;
  #local p2_12 = p1_42;
  #local p2_13 = p1_43;
  #local p2_14 = p1_44;

  #local p3_11 = p2_41;
  #local p3_12 = p2_42;
  #local p3_13 = p2_43;
  #local p3_14 = p2_44;

  #local p4_11 = p3_41;
  #local p4_12 = p3_42;
  #local p4_13 = p3_43;
  #local p4_14 = p3_44;

  union {
    retalho(p0_11, p0_12, p0_13, p0_14,
      p0_21, p0_22, p0_23, p0_24,
      p0_31, p0_32, p0_33, p0_34,
      p0_41, p0_42, p0_43, p0_44,
      tx_grade,tx_plastico_branco
    )
    retalho(p1_11, p1_12, p1_13, p1_14,
      p1_21, p1_22, p1_23, p1_24,
      p1_31, p1_32, p1_33, p1_34,
      p1_41, p1_42, p1_43, p1_44,
      tx_grade,tx_plastico_branco
    )
    difference {
      retalho(p2_11, p2_12, p2_13, p2_14,
        p2_21, p2_22, p2_23, p2_24,
        p2_31, p2_32, p2_33, p2_34,
        p2_41, p2_42, p2_43, p2_44,
        tx_grade,tx_plastico_branco
      )
      box{<8.8, 0, 4.8>,<9.2, 2.4, 2.7> texture{tx_vidro}}
    }
    intersection {
      retalho(p2_11, p2_12, p2_13, p2_14,
        p2_21, p2_22, p2_23, p2_24,
        p2_31, p2_32, p2_33, p2_34,
        p2_41, p2_42, p2_43, p2_44,
        tx_grade,tx_vidro_preto
      )
      box{<8.8, 0, 4.8>,<9.2, 2.4, 2.7> texture{tx_vidro}}
    }
    retalho(p3_11, p3_12, p3_13, p3_14,
      p3_21, p3_22, p3_23, p3_24,
      p3_31, p3_32, p3_33, p3_34,
      p3_41, p3_42, p3_43, p3_44,
      tx_grade,tx_plastico_branco
    )
    retalho(p4_11, p4_12, p4_13, p4_14,
      p4_21, p4_22, p4_23, p4_24,
      p4_31, p4_32, p4_33, p4_34,
      p4_41, p4_42, p4_43, p4_44,
      tx_grade,tx_plastico_branco
    )
  }
#end

#macro carro(
  p0_11, p0_12, p0_13, p0_14,
  p0_21, p0_22, p0_23, p0_24,
  p0_31, p0_32, p0_33, p0_34,

  p1_21, p1_22, p1_23, p1_24,
  p1_31, p1_32, p1_33, p1_34,

  p2_21, p2_22, p2_23, p2_24,
  p2_31, p2_32, p2_33, p2_34,

  p3_21, p3_22, p3_23, p3_24,
  p3_31, p3_32, p3_33, p3_34,

  p4_21, p4_22, p4_23, p4_24,
  p4_31, p4_32, p4_33, p4_34,
  p4_41, p4_42, p4_43, p4_44,
  obj_cutter
)

  difference {
    union {
      object {pe(
        p0_11, p0_12, p0_13, p0_14,
        p0_21, p0_22, p0_23, p0_24,
        p0_31, p0_32, p0_33, p0_34,

        p1_21, p1_22, p1_23, p1_24,
        p1_31, p1_32, p1_33, p1_34,

        p2_21, p2_22, p2_23, p2_24,
        p2_31, p2_32, p2_33, p2_34,

        p3_21, p3_22, p3_23, p3_24,
        p3_31, p3_32, p3_33, p3_34,

        p4_21, p4_22, p4_23, p4_24,
        p4_31, p4_32, p4_33, p4_34,
        p4_41, p4_42, p4_43, p4_44)
      }
      object {pe(
        p0_11, p0_12, p0_13, p0_14,
        p0_21, p0_22, p0_23, p0_24,
        p0_31, p0_32, p0_33, p0_34,

        p1_21, p1_22, p1_23, p1_24,
        p1_31, p1_32, p1_33, p1_34,

        p2_21, p2_22, p2_23, p2_24,
        p2_31, p2_32, p2_33, p2_34,

        p3_21, p3_22, p3_23, p3_24,
        p3_31, p3_32, p3_33, p3_34,

        p4_21, p4_22, p4_23, p4_24,
        p4_31, p4_32, p4_33, p4_34,
        p4_41, p4_42, p4_43, p4_44)
        scale <1, -1, 1>
      }
    }
    object{obj_cutter}
  }
#end

#declare q0p0_11 = <1.98,0,0>;
#declare q0p0_12 = <1.98,2.9,0>;
#declare q0p0_13 = <1.98,3,0>;
#declare q0p0_14 = <1.98,3.1,0>;
#declare q0p0_21 = <2,0,0>;
#declare q0p0_22 = <2,2.9,0>;
#declare q0p0_23 = <2,3,0>;
#declare q0p0_24 = <2,3.1,0>;
#declare q0p0_31 = <3,0,0>;
#declare q0p0_32 = <3,2.9,0>;
#declare q0p0_33 = <3,3,0>;
#declare q0p0_34 = <3,3.1,0>;

#declare q0p1_21 = <4.1,0,0>;
#declare q0p1_22 = <4.1,2.9,0>;
#declare q0p1_23 = <4.1,3,0>;
#declare q0p1_24 = <4.1,3.1,0>;
#declare q0p1_31 = <6,0,0>;
#declare q0p1_32 = <6,2.9,0>;
#declare q0p1_33 = <6,3,0>;
#declare q0p1_34 = <6,3.1,0>;

#declare q0p2_21 = <8,0,0>;
#declare q0p2_22 = <8,2.9,0>;
#declare q0p2_23 = <8,3,0>;
#declare q0p2_24 = <8,3.1,0>;
#declare q0p2_31 = <9,0,0>;
#declare q0p2_32 = <9,2.9,0>;
#declare q0p2_33 = <9,3,0>;
#declare q0p2_34 = <9,3.1,0>;

#declare q0p3_21 = <9,0,0>;
#declare q0p3_22 = <9,2.9,0>;
#declare q0p3_23 = <9,3,0>;
#declare q0p3_24 = <9,3.1,0>;
#declare q0p3_31 = <9,0,0>;
#declare q0p3_32 = <9,2.9,0>;
#declare q0p3_33 = <9,3,0>;
#declare q0p3_34 = <9,3.1,0>;

#declare q0p4_21 = <9,0,0>;
#declare q0p4_22 = <9,2.9,0>;
#declare q0p4_23 = <9,3,0>;
#declare q0p4_24 = <9,3.1,0>;
#declare q0p4_31 = <9,0,0>;
#declare q0p4_32 = <9,2.9,0>;
#declare q0p4_33 = <9,3,0>;
#declare q0p4_34 = <9,3.1,0>;
#declare q0p4_41 = <9,0,0>;
#declare q0p4_42 = <9,2.9,0>;
#declare q0p4_43 = <9,3,0>;
#declare q0p4_44 = <9,3.1,0>;

#declare q1p0_11 = <1.98,0,0>;
#declare q1p0_12 = <1.98,2.9,0>;
#declare q1p0_13 = <1.98,3,0>;
#declare q1p0_14 = <1.98,3.1,0>;
#declare q1p0_21 = <2,0,4>;
#declare q1p0_22 = <2,2.9,4>;
#declare q1p0_23 = <2,3,4>;
#declare q1p0_24 = <2,3.1,0>;
#declare q1p0_31 = <3,0,4>;
#declare q1p0_32 = <3,2.9,4>;
#declare q1p0_33 = <3,3,4>;
#declare q1p0_34 = <3,3.1,0>;

#declare q1p1_21 = <4.1,0,4>;
#declare q1p1_22 = <4.1,2.9,4>;
#declare q1p1_23 = <4.1,3,4>;
#declare q1p1_24 = <4.1,3.1,0>;
#declare q1p1_31 = <6,0,4>;
#declare q1p1_32 = <6,2.9,4>;
#declare q1p1_33 = <6,3,4>;
#declare q1p1_34 = <6,3.1,0>;

#declare q1p2_21 = <8,0,4>;
#declare q1p2_22 = <8,2.9,4>;
#declare q1p2_23 = <8,3,4>;
#declare q1p2_24 = <8,3.1,0>;
#declare q1p2_31 = <9,0,4>;
#declare q1p2_32 = <9,2.9,4>;
#declare q1p2_33 = <9,3,4>;
#declare q1p2_34 = <9,3.1,0>;

#declare q1p3_21 = <9,0,2.5>;
#declare q1p3_22 = <9,2.9,2.5>;
#declare q1p3_23 = <9,3,2.5>;
#declare q1p3_24 = <9,3.1,0>;
#declare q1p3_31 = <9,0,2.5>;
#declare q1p3_32 = <9,2.9,2.5>;
#declare q1p3_33 = <9,3,2.5>;
#declare q1p3_34 = <9,3.1,0>;

#declare q1p4_21 = <9,0,0>;
#declare q1p4_22 = <9,2.9,0>;
#declare q1p4_23 = <9,3,0>;
#declare q1p4_24 = <9,3.1,0>;
#declare q1p4_31 = <9,0,0>;
#declare q1p4_32 = <9,2.9,0>;
#declare q1p4_33 = <9,3,0>;
#declare q1p4_34 = <9,3.1,0>;
#declare q1p4_41 = <9.01,0,0>;
#declare q1p4_42 = <9.01,2.9,0>;
#declare q1p4_43 = <9.01,3,0>;
#declare q1p4_44 = <9.01,3.1,0>;

#declare q2p0_11 = <1.98,0,0>;
#declare q2p0_12 = <1.98,2.9,0>;
#declare q2p0_13 = <1.98,3,0>;
#declare q2p0_14 = <1.98,3.1,0>;
#declare q2p0_21 = <2,0,3>;
#declare q2p0_22 = <2,2.9,3>;
#declare q2p0_23 = <2,3,3>;
#declare q2p0_24 = <2,3.1,0>;
#declare q2p0_31 = <3,0,3>;
#declare q2p0_32 = <3,2.9,3>;
#declare q2p0_33 = <3,3,3>;
#declare q2p0_34 = <3,3.1,0>;

#declare q2p1_21 = <4.1,0,3.5>;
#declare q2p1_22 = <4.1,2.9,3.5>;
#declare q2p1_23 = <4.1,3,3.5>;
#declare q2p1_24 = <4.1,3.1,0>;
#declare q2p1_31 = <6,0,3.9>;
#declare q2p1_32 = <6,2.9,3.9>;
#declare q2p1_33 = <6,3,3.5>;
#declare q2p1_34 = <6,3.1,0>;

#declare q2p2_21 = <8,0,3.9>;
#declare q2p2_22 = <8,2.9,3.9>;
#declare q2p2_23 = <8,3,3.9>;
#declare q2p2_24 = <8,3.1,0>;
#declare q2p2_31 = <9,0,3.9>;
#declare q2p2_32 = <9,2.9,3.9>;
#declare q2p2_33 = <9,3,3.9>;
#declare q2p2_34 = <9,3.1,0>;

#declare q2p3_21 = <9,0,2.5>;
#declare q2p3_22 = <9,2.9,2.5>;
#declare q2p3_23 = <9,3,2.5>;
#declare q2p3_24 = <9,3.1,0>;
#declare q2p3_31 = <9,0,2.5>;
#declare q2p3_32 = <9,2.9,2.5>;
#declare q2p3_33 = <9,3,2.5>;
#declare q2p3_34 = <9,3.1,0>;

#declare q2p4_21 = <9,0,2.5>;
#declare q2p4_22 = <9,2.9,2.5>;
#declare q2p4_23 = <9,3,2.5>;
#declare q2p4_24 = <9,3.1,0>;
#declare q2p4_31 = <9,0,2.5>;
#declare q2p4_32 = <9,2.9,2.5>;
#declare q2p4_33 = <9,3,2.5>;
#declare q2p4_34 = <9,3.1,0>;
#declare q2p4_41 = <9.01,0,0>;
#declare q2p4_42 = <9.01,2.9,0>;
#declare q2p4_43 = <9.01,3,0>;
#declare q2p4_44 = <9.01,3.1,0>;

#declare q3p0_11 = <1.98,0,0>;
#declare q3p0_12 = <1.98,2.9,0>;
#declare q3p0_13 = <1.98,3,0>;
#declare q3p0_14 = <1.98,3.1,0>;
#declare q3p0_21 = <2,0,3>;
#declare q3p0_22 = <2,2.9,3>;
#declare q3p0_23 = <2,3,3>;
#declare q3p0_24 = <2,3.1,0>;
#declare q3p0_31 = <3,0,3>;
#declare q3p0_32 = <3,2.9,3>;
#declare q3p0_33 = <3,3,3>;
#declare q3p0_34 = <3,3.1,0>;

#declare q3p1_21 = <4.1,0,3.5>;
#declare q3p1_22 = <4.1,2.9,3.5>;
#declare q3p1_23 = <4.1,3,3.5>;
#declare q3p1_24 = <4.1,3.1,0>;
#declare q3p1_31 = <6,0,3.9>;
#declare q3p1_32 = <6,2.9,3.9>;
#declare q3p1_33 = <6,3,3.5>;
#declare q3p1_34 = <6,3.1,0>;

#declare q3p2_21 = <8,0,3.9>;
#declare q3p2_22 = <8,2.9,3.9>;
#declare q3p2_23 = <8,3,3.9>;
#declare q3p2_24 = <8,3.1,0>;
#declare q3p2_31 = <9,0,3.9>;
#declare q3p2_32 = <9,2.9,3.9>;
#declare q3p2_33 = <9,3,3.9>;
#declare q3p2_34 = <9,3.1,0>;

#declare q3p3_21 = <9.2,0,2.5>;
#declare q3p3_22 = <9.2,2.9,2.5>;
#declare q3p3_23 = <9.2,3,2.5>;
#declare q3p3_24 = <9.2,3.1,0>;
#declare q3p3_31 = <12,0,2.5>;
#declare q3p3_32 = <12,2.9,2.5>;
#declare q3p3_33 = <12,3,2.5>;
#declare q3p3_34 = <12,3.1,0>;

#declare q3p4_21 = <13,0,2.5>;
#declare q3p4_22 = <13,2.9,2.5>;
#declare q3p4_23 = <13,3,2.5>;
#declare q3p4_24 = <13,3.1,0>;
#declare q3p4_31 = <14,0,2.5>;
#declare q3p4_32 = <14,2.9,2.5>;
#declare q3p4_33 = <14,3,2.5>;
#declare q3p4_34 = <14,3.1,0>;
#declare q3p4_41 = <14.01,0,0>;
#declare q3p4_42 = <14.01,2.9,0>;
#declare q3p4_43 = <14.01,3,0>;
#declare q3p4_44 = <14.01,3.1,0>;

#declare q4p0_11 = <1.98,0,0>;
#declare q4p0_12 = <1.98,2.9,0>;
#declare q4p0_13 = <1.98,3,0>;
#declare q4p0_14 = <1.98,3.1,0>;
#declare q4p0_21 = <2,0,3>;
#declare q4p0_22 = <2,2.9,3>;
#declare q4p0_23 = <2,3,3>;
#declare q4p0_24 = <2,3.1,0>;
#declare q4p0_31 = <3,0,3>;
#declare q4p0_32 = <3,2.9,3>;
#declare q4p0_33 = <3,3,3>;
#declare q4p0_34 = <3,3.1,0>;

#declare q4p1_21 = <4.1,0,3.5>;
#declare q4p1_22 = <4.1,2.9,3.5>;
#declare q4p1_23 = <4.1,3,3.5>;
#declare q4p1_24 = <4.1,3.1,0>;
#declare q4p1_31 = <6,0,3.9>;
#declare q4p1_32 = <6,2.9,3.9>;
#declare q4p1_33 = <6,3,3.5>;
#declare q4p1_34 = <6,3.1,0>;

#declare q4p2_21 = <8,0,3.9>;
#declare q4p2_22 = <8,2.9,3.9>;
#declare q4p2_23 = <8,3,3.9>;
#declare q4p2_24 = <8,3.1,0>;
#declare q4p2_31 = <9,0,3.9>;
#declare q4p2_32 = <9,2.9,3.9>;
#declare q4p2_33 = <9,3,3.9>;
#declare q4p2_34 = <9,3.1,0>;

#declare q4p3_21 = <9.2,0,2.5>;
#declare q4p3_22 = <9.2,2.9,2.5>;
#declare q4p3_23 = <9.2,3,2.5>;
#declare q4p3_24 = <9.2,3.1,0>;
#declare q4p3_31 = <12,0,2.5>;
#declare q4p3_32 = <12,2.9,2.5>;
#declare q4p3_33 = <12,3,2.5>;
#declare q4p3_34 = <12,3.1,0>;

#declare q4p4_21 = <13,0,2.5>;
#declare q4p4_22 = <13,2.9,2.5>;
#declare q4p4_23 = <13,3,2.5>;
#declare q4p4_24 = <13,3.1,0>;
#declare q4p4_31 = <14,0,2.5>;
#declare q4p4_32 = <14,2.9,2.5>;
#declare q4p4_33 = <14,3,2.5>;
#declare q4p4_34 = <14,3.1,0>;
#declare q4p4_41 = <14.01,0,0>;
#declare q4p4_42 = <14.01,2.9,0>;
#declare q4p4_43 = <14.01,3,0>;
#declare q4p4_44 = <14.01,3.1,0>;

#declare cutter1 =
  box{<-1,-6,-3>,<16, 16, -1>}

#macro cutter2(tx)
  union {
    cylinder {<4,-8,tx*1>,<4,8,tx*1>, tx*0.8}
    cylinder {<12,-8,tx*1>,<12,8,tx*1>, tx*0.8}
    box{<-1,-6,-3>,<16, 16, tx-0.00001>}
  }
#end

#declare ck0=0.0;
#declare ck1=0.2;
#declare ck2=0.4;
#declare ck3=0.6;
#declare ck4=0.8;
#declare ck5=1;

#macro cena(ck)
  #if ((ck >= ck0) & (ck < ck1))
    #local tt=(ck-ck0)/(ck1-ck0);
    #local p0_11 = (1-tt)*q0p0_11 + (tt)*q1p0_11;
    #local p0_12 = (1-tt)*q0p0_12 + (tt)*q1p0_12;
    #local p0_13 = (1-tt)*q0p0_13 + (tt)*q1p0_13;
    #local p0_14 = (1-tt)*q0p0_14 + (tt)*q1p0_14;
    #local p0_21 = (1-tt)*q0p0_21 + (tt)*q1p0_21;
    #local p0_22 = (1-tt)*q0p0_22 + (tt)*q1p0_22;
    #local p0_23 = (1-tt)*q0p0_23 + (tt)*q1p0_23;
    #local p0_24 = (1-tt)*q0p0_24 + (tt)*q1p0_24;
    #local p0_31 = (1-tt)*q0p0_31 + (tt)*q1p0_31;
    #local p0_32 = (1-tt)*q0p0_32 + (tt)*q1p0_32;
    #local p0_33 = (1-tt)*q0p0_33 + (tt)*q1p0_33;
    #local p0_34 = (1-tt)*q0p0_34 + (tt)*q1p0_34;

    #local p1_21 = (1-tt)*q0p1_21 + (tt)*q1p1_21;
    #local p1_22 = (1-tt)*q0p1_22 + (tt)*q1p1_22;
    #local p1_23 = (1-tt)*q0p1_23 + (tt)*q1p1_23;
    #local p1_24 = (1-tt)*q0p1_24 + (tt)*q1p1_24;
    #local p1_31 = (1-tt)*q0p1_31 + (tt)*q1p1_31;
    #local p1_32 = (1-tt)*q0p1_32 + (tt)*q1p1_32;
    #local p1_33 = (1-tt)*q0p1_33 + (tt)*q1p1_33;
    #local p1_34 = (1-tt)*q0p1_34 + (tt)*q1p1_34;

    #local p2_21 = (1-tt)*q0p2_21 + (tt)*q1p2_21;
    #local p2_22 = (1-tt)*q0p2_22 + (tt)*q1p2_22;
    #local p2_23 = (1-tt)*q0p2_23 + (tt)*q1p2_23;
    #local p2_24 = (1-tt)*q0p2_24 + (tt)*q1p2_24;
    #local p2_31 = (1-tt)*q0p2_31 + (tt)*q1p2_31;
    #local p2_32 = (1-tt)*q0p2_32 + (tt)*q1p2_32;
    #local p2_33 = (1-tt)*q0p2_33 + (tt)*q1p2_33;
    #local p2_34 = (1-tt)*q0p2_34 + (tt)*q1p2_34;

    #local p3_21 = (1-tt)*q0p3_21 + (tt)*q1p3_21;
    #local p3_22 = (1-tt)*q0p3_22 + (tt)*q1p3_22;
    #local p3_23 = (1-tt)*q0p3_23 + (tt)*q1p3_23;
    #local p3_24 = (1-tt)*q0p3_24 + (tt)*q1p3_24;
    #local p3_31 = (1-tt)*q0p3_31 + (tt)*q1p3_31;
    #local p3_32 = (1-tt)*q0p3_32 + (tt)*q1p3_32;
    #local p3_33 = (1-tt)*q0p3_33 + (tt)*q1p3_33;
    #local p3_34 = (1-tt)*q0p3_34 + (tt)*q1p3_34;

    #local p4_21 = (1-tt)*q0p4_21 + (tt)*q1p4_21;
    #local p4_22 = (1-tt)*q0p4_22 + (tt)*q1p4_22;
    #local p4_23 = (1-tt)*q0p4_23 + (tt)*q1p4_23;
    #local p4_24 = (1-tt)*q0p4_24 + (tt)*q1p4_24;
    #local p4_31 = (1-tt)*q0p4_31 + (tt)*q1p4_31;
    #local p4_32 = (1-tt)*q0p4_32 + (tt)*q1p4_32;
    #local p4_33 = (1-tt)*q0p4_33 + (tt)*q1p4_33;
    #local p4_34 = (1-tt)*q0p4_34 + (tt)*q1p4_34;
    #local p4_41 = (1-tt)*q0p4_41 + (tt)*q1p4_41;
    #local p4_42 = (1-tt)*q0p4_42 + (tt)*q1p4_42;
    #local p4_43 = (1-tt)*q0p4_43 + (tt)*q1p4_43;
    #local p4_44 = (1-tt)*q0p4_44 + (tt)*q1p4_44;
    #local cutter = cutter1;
  #end

  #if ((ck >= ck1) & (ck < ck2))
    #local tt=(ck-ck1)/(ck2-ck1);
    #local p0_11 = (1-tt)*q1p0_11 + (tt)*q2p0_11;
    #local p0_12 = (1-tt)*q1p0_12 + (tt)*q2p0_12;
    #local p0_13 = (1-tt)*q1p0_13 + (tt)*q2p0_13;
    #local p0_14 = (1-tt)*q1p0_14 + (tt)*q2p0_14;
    #local p0_21 = (1-tt)*q1p0_21 + (tt)*q2p0_21;
    #local p0_22 = (1-tt)*q1p0_22 + (tt)*q2p0_22;
    #local p0_23 = (1-tt)*q1p0_23 + (tt)*q2p0_23;
    #local p0_24 = (1-tt)*q1p0_24 + (tt)*q2p0_24;
    #local p0_31 = (1-tt)*q1p0_31 + (tt)*q2p0_31;
    #local p0_32 = (1-tt)*q1p0_32 + (tt)*q2p0_32;
    #local p0_33 = (1-tt)*q1p0_33 + (tt)*q2p0_33;
    #local p0_34 = (1-tt)*q1p0_34 + (tt)*q2p0_34;

    #local p1_21 = (1-tt)*q1p1_21 + (tt)*q2p1_21;
    #local p1_22 = (1-tt)*q1p1_22 + (tt)*q2p1_22;
    #local p1_23 = (1-tt)*q1p1_23 + (tt)*q2p1_23;
    #local p1_24 = (1-tt)*q1p1_24 + (tt)*q2p1_24;
    #local p1_31 = (1-tt)*q1p1_31 + (tt)*q2p1_31;
    #local p1_32 = (1-tt)*q1p1_32 + (tt)*q2p1_32;
    #local p1_33 = (1-tt)*q1p1_33 + (tt)*q2p1_33;
    #local p1_34 = (1-tt)*q1p1_34 + (tt)*q2p1_34;

    #local p2_21 = (1-tt)*q1p2_21 + (tt)*q2p2_21;
    #local p2_22 = (1-tt)*q1p2_22 + (tt)*q2p2_22;
    #local p2_23 = (1-tt)*q1p2_23 + (tt)*q2p2_23;
    #local p2_24 = (1-tt)*q1p2_24 + (tt)*q2p2_24;
    #local p2_31 = (1-tt)*q1p2_31 + (tt)*q2p2_31;
    #local p2_32 = (1-tt)*q1p2_32 + (tt)*q2p2_32;
    #local p2_33 = (1-tt)*q1p2_33 + (tt)*q2p2_33;
    #local p2_34 = (1-tt)*q1p2_34 + (tt)*q2p2_34;

    #local p3_21 = (1-tt)*q1p3_21 + (tt)*q2p3_21;
    #local p3_22 = (1-tt)*q1p3_22 + (tt)*q2p3_22;
    #local p3_23 = (1-tt)*q1p3_23 + (tt)*q2p3_23;
    #local p3_24 = (1-tt)*q1p3_24 + (tt)*q2p3_24;
    #local p3_31 = (1-tt)*q1p3_31 + (tt)*q2p3_31;
    #local p3_32 = (1-tt)*q1p3_32 + (tt)*q2p3_32;
    #local p3_33 = (1-tt)*q1p3_33 + (tt)*q2p3_33;
    #local p3_34 = (1-tt)*q1p3_34 + (tt)*q2p3_34;

    #local p4_21 = (1-tt)*q1p4_21 + (tt)*q2p4_21;
    #local p4_22 = (1-tt)*q1p4_22 + (tt)*q2p4_22;
    #local p4_23 = (1-tt)*q1p4_23 + (tt)*q2p4_23;
    #local p4_24 = (1-tt)*q1p4_24 + (tt)*q2p4_24;
    #local p4_31 = (1-tt)*q1p4_31 + (tt)*q2p4_31;
    #local p4_32 = (1-tt)*q1p4_32 + (tt)*q2p4_32;
    #local p4_33 = (1-tt)*q1p4_33 + (tt)*q2p4_33;
    #local p4_34 = (1-tt)*q1p4_34 + (tt)*q2p4_34;
    #local p4_41 = (1-tt)*q1p4_41 + (tt)*q2p4_41;
    #local p4_42 = (1-tt)*q1p4_42 + (tt)*q2p4_42;
    #local p4_43 = (1-tt)*q1p4_43 + (tt)*q2p4_43;
    #local p4_44 = (1-tt)*q1p4_44 + (tt)*q2p4_44;
    #local cutter = cutter1;
  #end

  #if ((ck >= ck2) & (ck < ck3))
    #local tt=(ck-ck2)/(ck3-ck2);
    #local p0_11 = (1-tt)*q2p0_11 + (tt)*q3p0_11;
    #local p0_12 = (1-tt)*q2p0_12 + (tt)*q3p0_12;
    #local p0_13 = (1-tt)*q2p0_13 + (tt)*q3p0_13;
    #local p0_14 = (1-tt)*q2p0_14 + (tt)*q3p0_14;
    #local p0_21 = (1-tt)*q2p0_21 + (tt)*q3p0_21;
    #local p0_22 = (1-tt)*q2p0_22 + (tt)*q3p0_22;
    #local p0_23 = (1-tt)*q2p0_23 + (tt)*q3p0_23;
    #local p0_24 = (1-tt)*q2p0_24 + (tt)*q3p0_24;
    #local p0_31 = (1-tt)*q2p0_31 + (tt)*q3p0_31;
    #local p0_32 = (1-tt)*q2p0_32 + (tt)*q3p0_32;
    #local p0_33 = (1-tt)*q2p0_33 + (tt)*q3p0_33;
    #local p0_34 = (1-tt)*q2p0_34 + (tt)*q3p0_34;

    #local p1_21 = (1-tt)*q2p1_21 + (tt)*q3p1_21;
    #local p1_22 = (1-tt)*q2p1_22 + (tt)*q3p1_22;
    #local p1_23 = (1-tt)*q2p1_23 + (tt)*q3p1_23;
    #local p1_24 = (1-tt)*q2p1_24 + (tt)*q3p1_24;
    #local p1_31 = (1-tt)*q2p1_31 + (tt)*q3p1_31;
    #local p1_32 = (1-tt)*q2p1_32 + (tt)*q3p1_32;
    #local p1_33 = (1-tt)*q2p1_33 + (tt)*q3p1_33;
    #local p1_34 = (1-tt)*q2p1_34 + (tt)*q3p1_34;

    #local p2_21 = (1-tt)*q2p2_21 + (tt)*q3p2_21;
    #local p2_22 = (1-tt)*q2p2_22 + (tt)*q3p2_22;
    #local p2_23 = (1-tt)*q2p2_23 + (tt)*q3p2_23;
    #local p2_24 = (1-tt)*q2p2_24 + (tt)*q3p2_24;
    #local p2_31 = (1-tt)*q2p2_31 + (tt)*q3p2_31;
    #local p2_32 = (1-tt)*q2p2_32 + (tt)*q3p2_32;
    #local p2_33 = (1-tt)*q2p2_33 + (tt)*q3p2_33;
    #local p2_34 = (1-tt)*q2p2_34 + (tt)*q3p2_34;

    #local p3_21 = (1-tt)*q2p3_21 + (tt)*q3p3_21;
    #local p3_22 = (1-tt)*q2p3_22 + (tt)*q3p3_22;
    #local p3_23 = (1-tt)*q2p3_23 + (tt)*q3p3_23;
    #local p3_24 = (1-tt)*q2p3_24 + (tt)*q3p3_24;
    #local p3_31 = (1-tt)*q2p3_31 + (tt)*q3p3_31;
    #local p3_32 = (1-tt)*q2p3_32 + (tt)*q3p3_32;
    #local p3_33 = (1-tt)*q2p3_33 + (tt)*q3p3_33;
    #local p3_34 = (1-tt)*q2p3_34 + (tt)*q3p3_34;

    #local p4_21 = (1-tt)*q2p4_21 + (tt)*q3p4_21;
    #local p4_22 = (1-tt)*q2p4_22 + (tt)*q3p4_22;
    #local p4_23 = (1-tt)*q2p4_23 + (tt)*q3p4_23;
    #local p4_24 = (1-tt)*q2p4_24 + (tt)*q3p4_24;
    #local p4_31 = (1-tt)*q2p4_31 + (tt)*q3p4_31;
    #local p4_32 = (1-tt)*q2p4_32 + (tt)*q3p4_32;
    #local p4_33 = (1-tt)*q2p4_33 + (tt)*q3p4_33;
    #local p4_34 = (1-tt)*q2p4_34 + (tt)*q3p4_34;
    #local p4_41 = (1-tt)*q2p4_41 + (tt)*q3p4_41;
    #local p4_42 = (1-tt)*q2p4_42 + (tt)*q3p4_42;
    #local p4_43 = (1-tt)*q2p4_43 + (tt)*q3p4_43;
    #local p4_44 = (1-tt)*q2p4_44 + (tt)*q3p4_44;
    #local cutter = cutter1;
  #end

  #if ((ck >= ck3) & (ck < ck4))
    #local tt=(ck-ck3)/(ck4-ck3);
    #local p0_11 = (1-tt)*q3p0_11 + (tt)*q4p0_11;
    #local p0_12 = (1-tt)*q3p0_12 + (tt)*q4p0_12;
    #local p0_13 = (1-tt)*q3p0_13 + (tt)*q4p0_13;
    #local p0_14 = (1-tt)*q3p0_14 + (tt)*q4p0_14;
    #local p0_21 = (1-tt)*q3p0_21 + (tt)*q4p0_21;
    #local p0_22 = (1-tt)*q3p0_22 + (tt)*q4p0_22;
    #local p0_23 = (1-tt)*q3p0_23 + (tt)*q4p0_23;
    #local p0_24 = (1-tt)*q3p0_24 + (tt)*q4p0_24;
    #local p0_31 = (1-tt)*q3p0_31 + (tt)*q4p0_31;
    #local p0_32 = (1-tt)*q3p0_32 + (tt)*q4p0_32;
    #local p0_33 = (1-tt)*q3p0_33 + (tt)*q4p0_33;
    #local p0_34 = (1-tt)*q3p0_34 + (tt)*q4p0_34;

    #local p1_21 = (1-tt)*q3p1_21 + (tt)*q4p1_21;
    #local p1_22 = (1-tt)*q3p1_22 + (tt)*q4p1_22;
    #local p1_23 = (1-tt)*q3p1_23 + (tt)*q4p1_23;
    #local p1_24 = (1-tt)*q3p1_24 + (tt)*q4p1_24;
    #local p1_31 = (1-tt)*q3p1_31 + (tt)*q4p1_31;
    #local p1_32 = (1-tt)*q3p1_32 + (tt)*q4p1_32;
    #local p1_33 = (1-tt)*q3p1_33 + (tt)*q4p1_33;
    #local p1_34 = (1-tt)*q3p1_34 + (tt)*q4p1_34;

    #local p2_21 = (1-tt)*q3p2_21 + (tt)*q4p2_21;
    #local p2_22 = (1-tt)*q3p2_22 + (tt)*q4p2_22;
    #local p2_23 = (1-tt)*q3p2_23 + (tt)*q4p2_23;
    #local p2_24 = (1-tt)*q3p2_24 + (tt)*q4p2_24;
    #local p2_31 = (1-tt)*q3p2_31 + (tt)*q4p2_31;
    #local p2_32 = (1-tt)*q3p2_32 + (tt)*q4p2_32;
    #local p2_33 = (1-tt)*q3p2_33 + (tt)*q4p2_33;
    #local p2_34 = (1-tt)*q3p2_34 + (tt)*q4p2_34;

    #local p3_21 = (1-tt)*q3p3_21 + (tt)*q4p3_21;
    #local p3_22 = (1-tt)*q3p3_22 + (tt)*q4p3_22;
    #local p3_23 = (1-tt)*q3p3_23 + (tt)*q4p3_23;
    #local p3_24 = (1-tt)*q3p3_24 + (tt)*q4p3_24;
    #local p3_31 = (1-tt)*q3p3_31 + (tt)*q4p3_31;
    #local p3_32 = (1-tt)*q3p3_32 + (tt)*q4p3_32;
    #local p3_33 = (1-tt)*q3p3_33 + (tt)*q4p3_33;
    #local p3_34 = (1-tt)*q3p3_34 + (tt)*q4p3_34;

    #local p4_21 = (1-tt)*q3p4_21 + (tt)*q4p4_21;
    #local p4_22 = (1-tt)*q3p4_22 + (tt)*q4p4_22;
    #local p4_23 = (1-tt)*q3p4_23 + (tt)*q4p4_23;
    #local p4_24 = (1-tt)*q3p4_24 + (tt)*q4p4_24;
    #local p4_31 = (1-tt)*q3p4_31 + (tt)*q4p4_31;
    #local p4_32 = (1-tt)*q3p4_32 + (tt)*q4p4_32;
    #local p4_33 = (1-tt)*q3p4_33 + (tt)*q4p4_33;
    #local p4_34 = (1-tt)*q3p4_34 + (tt)*q4p4_34;
    #local p4_41 = (1-tt)*q3p4_41 + (tt)*q4p4_41;
    #local p4_42 = (1-tt)*q3p4_42 + (tt)*q4p4_42;
    #local p4_43 = (1-tt)*q3p4_43 + (tt)*q4p4_43;
    #local p4_44 = (1-tt)*q3p4_44 + (tt)*q4p4_44;
    #local cutter = object{cutter2(tt)}
  #end

  #if ((ck >= ck4) & (ck <= ck5))
    #local tt=(ck-ck4)/(ck5-ck4);
    #local p0_11 = (1-tt)*q4p0_11 + (tt)*q0p0_11;
    #local p0_12 = (1-tt)*q4p0_12 + (tt)*q0p0_12;
    #local p0_13 = (1-tt)*q4p0_13 + (tt)*q0p0_13;
    #local p0_14 = (1-tt)*q4p0_14 + (tt)*q0p0_14;
    #local p0_21 = (1-tt)*q4p0_21 + (tt)*q0p0_21;
    #local p0_22 = (1-tt)*q4p0_22 + (tt)*q0p0_22;
    #local p0_23 = (1-tt)*q4p0_23 + (tt)*q0p0_23;
    #local p0_24 = (1-tt)*q4p0_24 + (tt)*q0p0_24;
    #local p0_31 = (1-tt)*q4p0_31 + (tt)*q0p0_31;
    #local p0_32 = (1-tt)*q4p0_32 + (tt)*q0p0_32;
    #local p0_33 = (1-tt)*q4p0_33 + (tt)*q0p0_33;
    #local p0_34 = (1-tt)*q4p0_34 + (tt)*q0p0_34;

    #local p1_21 = (1-tt)*q4p1_21 + (tt)*q0p1_21;
    #local p1_22 = (1-tt)*q4p1_22 + (tt)*q0p1_22;
    #local p1_23 = (1-tt)*q4p1_23 + (tt)*q0p1_23;
    #local p1_24 = (1-tt)*q4p1_24 + (tt)*q0p1_24;
    #local p1_31 = (1-tt)*q4p1_31 + (tt)*q0p1_31;
    #local p1_32 = (1-tt)*q4p1_32 + (tt)*q0p1_32;
    #local p1_33 = (1-tt)*q4p1_33 + (tt)*q0p1_33;
    #local p1_34 = (1-tt)*q4p1_34 + (tt)*q0p1_34;

    #local p2_21 = (1-tt)*q4p2_21 + (tt)*q0p2_21;
    #local p2_22 = (1-tt)*q4p2_22 + (tt)*q0p2_22;
    #local p2_23 = (1-tt)*q4p2_23 + (tt)*q0p2_23;
    #local p2_24 = (1-tt)*q4p2_24 + (tt)*q0p2_24;
    #local p2_31 = (1-tt)*q4p2_31 + (tt)*q0p2_31;
    #local p2_32 = (1-tt)*q4p2_32 + (tt)*q0p2_32;
    #local p2_33 = (1-tt)*q4p2_33 + (tt)*q0p2_33;
    #local p2_34 = (1-tt)*q4p2_34 + (tt)*q0p2_34;

    #local p3_21 = (1-tt)*q4p3_21 + (tt)*q0p3_21;
    #local p3_22 = (1-tt)*q4p3_22 + (tt)*q0p3_22;
    #local p3_23 = (1-tt)*q4p3_23 + (tt)*q0p3_23;
    #local p3_24 = (1-tt)*q4p3_24 + (tt)*q0p3_24;
    #local p3_31 = (1-tt)*q4p3_31 + (tt)*q0p3_31;
    #local p3_32 = (1-tt)*q4p3_32 + (tt)*q0p3_32;
    #local p3_33 = (1-tt)*q4p3_33 + (tt)*q0p3_33;
    #local p3_34 = (1-tt)*q4p3_34 + (tt)*q0p3_34;

    #local p4_21 = (1-tt)*q4p4_21 + (tt)*q0p4_21;
    #local p4_22 = (1-tt)*q4p4_22 + (tt)*q0p4_22;
    #local p4_23 = (1-tt)*q4p4_23 + (tt)*q0p4_23;
    #local p4_24 = (1-tt)*q4p4_24 + (tt)*q0p4_24;
    #local p4_31 = (1-tt)*q4p4_31 + (tt)*q0p4_31;
    #local p4_32 = (1-tt)*q4p4_32 + (tt)*q0p4_32;
    #local p4_33 = (1-tt)*q4p4_33 + (tt)*q0p4_33;
    #local p4_34 = (1-tt)*q4p4_34 + (tt)*q0p4_34;
    #local p4_41 = (1-tt)*q4p4_41 + (tt)*q0p4_41;
    #local p4_42 = (1-tt)*q4p4_42 + (tt)*q0p4_42;
    #local p4_43 = (1-tt)*q4p4_43 + (tt)*q0p4_43;
    #local p4_44 = (1-tt)*q4p4_44 + (tt)*q0p4_44;
    #if (tt < 0.5)
      #local cutter = object{cutter2(1-2*tt)}
    #end
    #if (tt >= 0.5)
      #local cutter = cutter1;
    #end
  #end

  object{
    carro(
      p0_11, p0_12, p0_13, p0_14,
      p0_21, p0_22, p0_23, p0_24,
      p0_31, p0_32, p0_33, p0_34,

      p1_21, p1_22, p1_23, p1_24,
      p1_31, p1_32, p1_33, p1_34,

      p2_21, p2_22, p2_23, p2_24,
      p2_31, p2_32, p2_33, p2_34,

      p3_21, p3_22, p3_23, p3_24,
      p3_31, p3_32, p3_33, p3_34,

      p4_21, p4_22, p4_23, p4_24,
      p4_31, p4_32, p4_33, p4_34,
      p4_41, p4_42, p4_43, p4_44,
      cutter
    )
  }
#end

// object{ eixos(5) }

object{cena(clock)}

// Original camera parameters:
// #local cam_ctr = <9,0,0>
// #local cam_loc = <12,8,7>
// #local cam_vec = (<12,8,7>-<9,0,0>)
// #local cam_sky = z

#include "camlight.inc"
camlight(<9,0,1>,9.00,<7,10,10>,20.00,z,1.2)