// Last edited on DATE TIME by USER
// Processed by remove-cam-lights

#include "eixos.inc"
#include "textures.inc"

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

#declare bolinha =
  sphere{ < 0,0,0 >, 0.10 texture{Sandalwood}}

#declare cabeca =
        sphere{ <0,0,0>, 1 texture {Sandalwood} }

#macro interpola2 (p0,p1,tt)
        #declare ponto = ((1-tt)*p0 + tt*p1);
        ponto
#end

#macro interpola4 (p0,p1,p2,p3,tt)
        #local p01 = interpola2(p0,p1,tt);
        #local p12 = interpola2(p1,p2,tt);
        #local p23 = interpola2(p2,p3,tt);
        #local p012 = interpola2(p01,p12,tt);
        #local p123 = interpola2(p12,p23,tt);
        #local p0123 = interpola2(p012,p123,tt);
        p0123
#end

#macro curva (p0,p1,p2,p3,tt)

        #while (tt<=1)

                #local vas = interpola4(p0,p1,p2,p3,tt);
                object { bolinha translate vas }
                #local tt = tt+0.01;
        #end

#end

#declare p0 = <0,0,0>;
#declare p1 = <0,1,1>;
#declare p2 = <0,1.5,-1>;
#declare q0 = <0,2.5,1>;
#declare p3 = (p2+q0)/2;
#declare q1 = <0,3,-1>;
#declare q2 = <0,3.5,1>;

        object{cabeca translate <0,0,1>}

union{
        curva(p0,p1,p2,p3,0)
        curva(p3,q0,q1,q2,0)
        }
        union{
        curva(p0,p1,p2,p3,0)
        curva(p3,q0,q1,q2,0)

        rotate <0,0,90>
        }
        union{
        curva(p0,p1,p2,p3,0)
        curva(p3,q0,q1,q2,0)
        rotate <0,0,180>
        }

                union{
        curva(p0,p1,p2,p3,0)
        curva(p3,q0,q1,q2,0)
        rotate <0,0,-90>
        }

#include "camlight.inc"
#declare centro_cena = < 0.00, 0.00, 1.00 >;
#declare raio_cena = 9.0;
#declare dir_camera = < 14.00, 7.00, 4.00 >;
#declare dist_camera = 16.0;
#declare intens_luz = 1.00;
camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)