// Last edited on DATE TIME by USER
// 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 1 ambient 1 }
  }

#declare tx_espelho =
  texture{
    pigment{ color rgb < 0.50, 0.50, 0.50 > }
    finish{ diffuse 0.2 reflection 0.7*< 0.50, 0.50, 0.50 > 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
  }

#declare raio = 2.000;
#declare chao =
  box{ <-20,-20,-1>, <+20,+20,0> }

#declare valores=array[10];
#declare valores[0]=(1-clock)*2 + clock*3;
#declare valores[1]=(1-clock)*12+ clock*7;
#declare valores[2]=(1-clock)*11+ clock*14;
#declare valores[3]=(1-clock)*15+ clock*4;
#declare valores[4]=(1-clock)*3+ clock*0;
#declare valores[5]=(1-clock)*5+ clock*16;
#declare valores[6]=(1-clock)*38+ clock*20;
#declare valores[7]=(1-clock)*21+ clock*15;
#declare valores[8]=(1-clock)*39+ clock*43;
#declare valores[9]=(1-clock)*52+ clock*61;

#macro bit (valor,defeito)
        #if (defeito=0)

        cone{<0,0,0>,0.3-(0.3*(1-valor)),<0,0,0.5>,0.3-(0.3*(valor))
                        pigment{ color rgb<0.2,0.2,0.7>}}

        #else
        box{<-0.3,-0.3,0><0.3,0.3,0.5>}
        #end
#end

#macro quadro(l,a)
        union{
        difference{
                box{<-0.4, -l/2-2, -a/2-2>, <0.4, l/2+2, a/2+2> pigment{ color rgb<0.7,0.5,0.0>}}
                box{<-2, -l/2, -a/2>, <2, l/2, a/2>pigment{ color rgb<0.7,0.5,0.0>}}
        }
        box{<-0.4, -l/2-2, -a/2-2>, <-0.5, l/2+2, a/2+2>pigment{ color rgb<1,1,1>}}
        }
#end

#declare roleta = seed(417);
#macro fileira(n, valor, l,prob,alt)//numero de bits, valor do numero, largura da fileira,prob de errro, altura
        union{

        #local i=0;
        #local vr=int(valor);
        #local vf=valor-vr;
        #while (i < n)
                #local defeito = (rand(roleta) <= prob);
                #local ubit=mod(vr,2);
                #if (ubit=0)
                        #local ubit=vf;
                        #local vf=0;
                #else
                        #local ubit=1-vf;
                #end
                object{bit(ubit,defeito) translate<0,(l/2)-i*(l/(n-1)),alt>}
                #local i = i+1;
                #local vr=int(vr/2);
        #end
        }
#end

#macro abaco(m,n,valores,prob)
        union{

        object{quadro(2*n, 2*m)}
        #local i=0;
        #while(i<m)
                object{fileira(n,valores[i],(2*n-2),prob,m-1-i*(m/(m-1)))}
                #local i=i+1;
        #end
        }
#end

#macro letra_chg(posI,posF,frac,letra)
        text{ttf "arial.ttf" letra 0.2,0 rotate<90,0,90> translate (posI*(1-frac)+posF*(frac))  }
#end

#declare pin =array[4];
#declare pin[0]=<0,0,-5>;
#declare pin[1]=<0,0,5>;
#declare pin[2]=<0,5,0>;
#declare pin[3]=<0,-5,0>;
#macro logotipo(txt, fase)
        #local n_txt=strlen(txt);
        #local etapa=int(fase*n_txt);
        #local frac=fase*n_txt-etapa;
        #local txt_atual=substr(txt, 1, etapa);
        #local letra=substr(txt, etapa+1, 1);
        #local pos= mod(etapa,4);

        union{
        text{ttf "arial.ttf" txt_atual 0.2,0 rotate<90,0,90>}
        object {letra_chg(pin[pos],<0,0.7*etapa,0>,frac,letra)}

        }

#end

#include "eixos.inc"

union{
        object{ eixos(3.00) }

        object{logotipo("ZICA",clock+0.1)}
}

#include "camlight.inc"
#declare centro_cena = < 0.00, 0.00, 0.00 >;
#declare raio_cena = 6;

#declare dir_camera = < 14.00, 7.00, 4.00 >;
#declare dist_camera = 100.0;
#declare intens_luz = 1.00;
camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)