// Last edited on 2019-07-16 00:23:18 by stolfilocal
// Processed by remove-cam-lights

background { color rgb < 0.9,0.9,0.9 > }

#declare tx_esfera =
        texture {
            pigment { color rgb < 1,0,0 > }
                finish{ diffuse 1 }
    }

#macro gerarCurva(raio, espacamento)
        union {
                #for (i, 0, 1, espacamento)
                        object {
                                  sphere {
                                        < cos(i*2*3.1416), sin(i*2*3.1416), 0 >, raio
                                        texture{ tx_esfera }
                                  }
                        }
                #end
        }
#end

#macro gerarArco(raio, espacamento)
        union {
                #for (i, 0, 0.25, espacamento)
                        object {
                                  sphere {
                                        < cos(i*2*3.1416), sin(i*2*3.1416), 0 >, raio
                                        texture{ tx_esfera }
                                  }
                        }
                #end
        }
#end

#macro palito(p, q, raio, espacamento)
        union {
                #for (i, -1, 1, espacamento)
                        #declare centro = p + i * q;
                        object {
                                  sphere {
                                        centro, raio
                                        texture{ tx_esfera }
                                  }
                        }
                #end
        }
#end

#macro gerarQuadrado(raio, espacamento)
        union {
                palito(<-0.5,0.5,0>, <0.5,0.5,0>, raio, espacamento)
                palito(<0.5,0.5,0>, <0.5,-0.5,0>, raio, espacamento)
                palito(<0.5,-0.5,0>, <-0.5,-0.5,0>, raio, espacamento)
                palito(<-0.5,-0.5,0>, <-0.5,0.5,0>, raio, espacamento)
        }
#end

#macro segmento(raio, espacamento)
        palito(<-0.5,0.5,0>, <0.5,0.5,0>, raio, espacamento)
#end

#macro gerarP(raio, espacamento)
        union {
                object { gerarArco(raio, espacamento) rotate <0,0,0>  translate <0.5,0.75,0>}
                object { gerarArco(raio, espacamento) rotate <0,0,90> translate <0.5,0.75,0> }
                object { segmento(raio, espacamento) rotate <0,0,45> translate <0.2,0,0> }
                object { gerarArco(raio, espacamento) rotate <0,0,180> translate <0.5,-0.75,0> }
                object { segmento(raio, espacamento) rotate <0,0,-45> translate <1,-2.44,0> }
                object { gerarArco(raio, espacamento) rotate <0,0,-90> translate <1.8,-0.73,0> }
                object { gerarArco(raio, espacamento) rotate <0,0,0> translate <1.8,-0.73,0> }
        }
#end

gerarP(0.1, 0.005)

#include "eixos.inc"
object{ eixos(5) }


#include "camlight.inc"
#declare centro_cena = < 1.00, 0.20, 0.50 >;
#declare raio_cena = 4.0;
#declare dir_camera = < 2, 7, 14 >;
#declare dist_camera = 5*raio_cena;
#declare intens_luz = 1.10;
camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)