// Last edited on 2019-07-17 08:13:11 by stolfilocal
// Processed by remove-cam-lights

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

#declare tx_plastico =
  texture{
    pigment{ color rgb < 0.10, 0.80, 1.00 > }
    finish{ diffuse 0.8 ambient 0.1 specular 0.5 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_espelho =
  texture{
    pigment{ color rgb < 1.00, 0.85, 0.30 > }
    finish{ diffuse 0.2 reflection 0.7*< 1.00, 0.85, 0.30 > ambient 0.1 }
  }

#declare tx_vidro =
  texture{
    pigment{ color rgb < 0.85, 0.95, 1.00 > filter 0.70 }
    finish{ diffuse 0.03 reflection 0.25 ambient 0.02 specular 0.25 roughness 0.005 }
  }

#declare tx_xadrez =
  texture{
    pigment{ checker color rgb < 0.10, 0.32, 0.60 >, color rgb < 1.00, 0.97, 0.90 > }
    finish{ diffuse 0.9 ambient 0.1 }
    scale 2.0
  }

#macro interp(t0,v0,t1,v1,tt)
  #local r = (tt-t0)/(t1-t0);
  #local s = 1-r;
  #local vv = s*v0+r*v1;
  vv
#end

#macro arco(t0,t1,a,b,c,d,tt)
  #local ab = interp(t0,a,t1,b,tt);
  #local bc = interp(t0,b,t1,c,tt);
  #local cd = interp(t0,c,t1,d,tt);
  #local abc = interp(t0,ab,t1,bc,tt);
  #local bcd = interp(t0,bc,t1,cd,tt);
  #local abcd = interp(t0,abc,t1,bcd,tt);
  abcd
#end

#macro curvas(t0,t1,a,b,c,d)
  #local i=0;
  #while (i<t1)
    sphere{arco(t0,t1,a,b,c,d,i) 0.1 texture{tx_fosca}}
    #local i=i+1;
  #end
#end

#macro variascurvas(pontos,nArcos,nBolinhas,clk,nk,tk)
  #local k = busca_tempo(clk,tk,nk);
  #local i=0;
  #while(i < nArcos)
    curvas(0,nBolinhas,pontos[k][i][0],pontos[k][i][1],pontos[k][i][2],pontos[k][i][3])
    #local i=i+1;
  #end
#end

#macro busca_tempo(clk,tk,nk)
  #local i=0;
  #local r = 0;
  #while (i<nk-1)
    #if (tk[i]<=clk & tk[i+1]>=clk)
      #local r=i;
    #end
    #local i=i+1;
  #end
  r
#end

#include "eixos.inc"

#declare nFrames=6;
#declare tk = array[nFrames];
#declare tk[0] = 0;
#declare tk[1] = 0.2;
#declare tk[2] = 0.4;
#declare tk[3] = 0.6;
#declare tk[4] = 0.8;
#declare tk[5] = 1;

#declare n=4;
#declare p=array[nFrames][n][4];
#declare p[0][0][0]= <0,0,0>;
#declare p[0][0][1]= <+1,+2,0>;
#declare p[0][0][2]= <+3,+1,-0.5>;
#declare p[0][0][3]= <+3,-0.5,0>;

#declare p[0][1][0]= <+3,-0.5,0>;
#declare p[0][1][1]= <+2.5,-1,0>;
#declare p[0][1][2]= <+2,-1,0>;
#declare p[0][1][3]= <+1,-0.5,0>;

#declare p[0][2][0]= <+1,-0.5,0>;
#declare p[0][2][1]= <+1,+1,+0.5>;
#declare p[0][2][2]= <+3,+2,0>;
#declare p[0][2][3]= <+4,0,0>;

#declare p[0][3][0]= <+4,0,0>;
#declare p[0][3][1]= <+3,-0.5,+1>;
#declare p[0][3][2]= <+1,+1,-0.5>;
#declare p[0][3][3]= <0,0,0>;

#declare p[1][0][0]= <0,0,1>;
#declare p[1][0][1]= <+1,+2,1>;
#declare p[1][0][2]= <+3,+1,-1.5>;
#declare p[1][0][3]= <+3,-0.5,1>;

#declare p[1][1][0]= <+3,-0.5,1>;
#declare p[1][1][1]= <+2.5,-1,1>;
#declare p[1][1][2]= <+2,-1,1>;
#declare p[1][1][3]= <+1,-0.5,1>;

#declare p[1][2][0]= <+1,-0.5,1>;
#declare p[1][2][1]= <+1,+1,+1.5>;
#declare p[1][2][2]= <+3,+2,1>;
#declare p[1][2][3]= <+4,0,1>;

#declare p[1][3][0]= <+4,0,1>;
#declare p[1][3][1]= <+3,-0.5,+2>;
#declare p[1][3][2]= <+1,+1,-1.5>;
#declare p[1][3][3]= <0,0,1>;

#declare p[2][0][0]= <0,0,2>;
#declare p[2][0][1]= <+1,+2,2>;
#declare p[2][0][2]= <+3,+1,-2.5>;
#declare p[2][0][3]= <+3,-0.5,2>;

#declare p[2][1][0]= <+3,-0.5,2>;
#declare p[2][1][1]= <+2.5,-1,2>;
#declare p[2][1][2]= <+2,-1,2>;
#declare p[2][1][3]= <+1,-0.5,2>;

#declare p[2][2][0]= <+1,-0.5,2>;
#declare p[2][2][1]= <+1,+1,+2.5>;
#declare p[2][2][2]= <+3,+2,2>;
#declare p[2][2][3]= <+4,0,2>;

#declare p[2][3][0]= <+4,0,2>;
#declare p[2][3][1]= <+3,-0.5,+3>;
#declare p[2][3][2]= <+1,+1,-2.5>;
#declare p[2][3][3]= <0,0,2>;

#declare p[3][0][0]= <0,0,2>;
#declare p[3][0][1]= <+1,+2,2>;
#declare p[3][0][2]= <+3,+1,-2.5>;
#declare p[3][0][3]= <+3,-0.5,2>;

#declare p[3][1][0]= <+3,-0.5,2>;
#declare p[3][1][1]= <+2.5,-1,2>;
#declare p[3][1][2]= <+2,-1,2>;
#declare p[3][1][3]= <+1,-0.5,2>;

#declare p[3][2][0]= <+1,-0.5,2>;
#declare p[3][2][1]= <+1,+1,+2.5>;
#declare p[3][2][2]= <+3,+2,2>;
#declare p[3][2][3]= <+4,0,2>;

#declare p[3][3][0]= <+4,0,2>;
#declare p[3][3][1]= <+3,-0.5,+3>;
#declare p[3][3][2]= <+1,+1,-2.5>;
#declare p[3][3][3]= <0,0,2>;

#declare p[4][0][0]= <0,0,1>;
#declare p[4][0][1]= <+1,+2,1>;
#declare p[4][0][2]= <+3,+1,-1.5>;
#declare p[4][0][3]= <+3,-0.5,1>;

#declare p[4][1][0]= <+3,-0.5,1>;
#declare p[4][1][1]= <+2.5,-1,1>;
#declare p[4][1][2]= <+2,-1,1>;
#declare p[4][1][3]= <+1,-0.5,1>;

#declare p[4][2][0]= <+1,-0.5,1>;
#declare p[4][2][1]= <+1,+1,+1.5>;
#declare p[4][2][2]= <+3,+2,1>;
#declare p[4][2][3]= <+4,0,1>;

#declare p[4][3][0]= <+4,0,1>;
#declare p[4][3][1]= <+3,-0.5,+2>;
#declare p[4][3][2]= <+1,+1,-1.5>;
#declare p[4][3][3]= <0,0,1>;

#declare p[5][0][0]= <0,0,0>;
#declare p[5][0][1]= <+1,+2,0>;
#declare p[5][0][2]= <+3,+1,-0.5>;
#declare p[5][0][3]= <+3,-0.5,0>;

#declare p[5][1][0]= <+3,-0.5,0>;
#declare p[5][1][1]= <+2.5,-1,0>;
#declare p[5][1][2]= <+2,-1,0>;
#declare p[5][1][3]= <+1,-0.5,0>;

#declare p[5][2][0]= <+1,-0.5,0>;
#declare p[5][2][1]= <+1,+1,+0.5>;
#declare p[5][2][2]= <+3,+2,0>;
#declare p[5][2][3]= <+4,0,0>;

#declare p[5][3][0]= <+4,0,0>;
#declare p[5][3][1]= <+3,-0.5,+1>;
#declare p[5][3][2]= <+1,+1,-0.5>;
#declare p[5][3][3]= <0,0,0>;

variascurvas(p,n,1000,clock,nFrames,tk)

#include "camlight.inc"
#declare centro_cena = < 1.00, 0.00, 1.00 >;
#declare raio_cena = 5.0;
#declare dir_camera = < +20, +20, +20 >;
#declare dist_camera = 5*raio_cena;
#declare intens_luz = 1.20;
camlight(centro_cena, raio_cena, dir_camera, dist_camera, z, intens_luz)