mherrero Published on September 22, 2007
by mherrero

mherrero's blog

Browse posts
POVRAY: Ejercicio con CSG (Geometría Constructiva de Sólidos)
Posted on November 5, 2007
tortuga.inc, Logo con PovRay
POVRAY - Aplicación de tortuga.inc y sphere_sweep
Posted on September 22, 2007
POVRAY - macro makesnow.inc
Posted on September 22, 2007
Uso de sweep_sphere en povray y makesnow.inc
Posted on September 21, 2007
Escultura fractal hecha con povray
Posted on August 5, 2007
Animaciones con povray
Posted on August 3rd, 2007
3 comments (latest 17 months ago)

Keyword tags

3d
argentina
logo
cordoba
povray
include

More information

This post is public
© All rights reserved
  1. Read 0 times

tortuga.inc, Logo con PovRay

Saturday September 22, 2007 at 12:54AM

Las macros definidad en tortuga.inc, son una adaptación para povray siguiendo lo expuesto en el libro "Ideas y Formas" de Horacio C. Reggini, Editorial Galapagos, septiembre de 1985, Argentina. Capítulo "El sistema Logo Tridimensional" , página 163 a 191.

/*                   
Autor: Mario Antonio Herrero Machado
fecha: 17 de junio de 2002
modificada: 6 de junio de 2004 
email: cabgraf2002@yahoo.com

              Persistence of Vision Raytracer Version 3.1
              tortuga.inc, Logo con PovRay
             
Procedimientos definidos

IniTortuga() : Para inicializar la Tortuga.
Andar(Pasos) : Avanza la distancia Pasos, con -Pasos retrocede             
               y llama al procedimiento graficar, el que pone una esfera y un cilindro
               del largo de Pasos.
ConPluma()     : Andar llama a graficar
SinPluma()     : La tortuga no grafica al andar.
Virar(ang)     : Vira un angulo en grados.
Cabecear(ang)  : Cabecea un angulo en grados.
Rolar(ang)     : Rola una angulo en grados.
reemplazar     : procedimiento de actualización.
Cuadrado(Pasos): grafica un cuadrado de lado Pasos.

Variables:

Radio    : radio de la esfera y el cilindro del procedimiento graficar
R        : valor del rojo en rgb, 1.0 por defecto.
G        : valor del verde en rgb, 1.0 por defecto.
B        : valor del azul en rgb, 1.0 por defecto.
x,Y,Z    : valores iniciales de la posición de la tortuga, por defecto 0.0
Pi       : constante, 3.141628
tnn      : definen los cosenos directores.
*/
#include "colors.inc"
#include "metals.inc"
#include "glass.inc"
#include "stones.inc"  
#include "textura.inc"

#declare X = 0.0;
#declare Y = 0.0;
#declare Z = 0.0;  
#declare Pi =3.141628;   
#declare Radio = 0.05; 
#declare R = 1.0;
#declare G = 1.0;
#declare B = 1.0; 
#declare Tex_Tortuga = texture{T_Chrome_5E}


#declare t11 = 1.0;  //0.0
#declare t12 = 0.0;  //1.0
#declare t13 = 0.0;  //0.0
#declare t21 = 0.0;  //1.0 
#declare t22 = 0.0;  //0.0 
#declare t23 = 1.0;  //0.0
#declare t31 = 0.0;  //0.0
#declare t32 = 1.0;  //0.0
#declare t33 = 0.0;  //1.0     

#macro ConPluma()
  #declare P = 1;
#end
                
#macro SinPluma()
  #declare P = 0;
#end
                
#macro reemplazar()
  #declare c11 = t11;
  #declare c12 = t12;
  #declare c13 = t13;
  #declare c21 = t21;
  #declare c22 = t22;
  #declare c23 = t23;
  #declare c31 = t31;
  #declare c32 = t32;
  #declare c33 = t33;
#end //fin macro reemplazar 

reemplazar()    
ConPluma()

#declare Radio_Esfera = Radio;


#macro esfera(Radio_Esfera) 
    sphere {<Xant,Yant,Zant>, Radio_Esfera
    texture {Tex_Tortuga} }
#end

#macro graficar(Xant,Yant,Zant,X,Y,Z,Radio,Radio_Esfera,Tex) 
   #local tex2 = Tex
  esfera(Radio_Esfera)
  /*sphere {<Xant,Yant,Zant>, Radio
    texture {tex2}
  } */
  cylinder  {<Xant,Yant,Zant>,<X,Y,Z>, Radio_Esfera
    texture {tex2}
  }
#end

#macro Andar(d)
      #declare Xant = X;
      #declare Yant = Y;
      #declare Zant = Z;
      #declare X = X + (d*c11);
      #declare Y = Y + (d*c12);
      #declare Z = Z + (d*c13);
      #if (P)    
        #declare Tex = Tex_Tortuga
        graficar (Xant,Yant,Zant,X,Y,Z,Radio,Radio_Esfera,Tex)
      #end
#end //fin macro andar

#macro Virar(ang)
      #declare ang = (ang*Pi)/180.;
      #declare t11 = c11*cos(ang) + c21*sin(ang);
      #declare t12 = c12*cos(ang) + c22*sin(ang);
      #declare t13 = c13*cos(ang) + c23*sin(ang);
      #declare t21 = c21*cos(ang) - c11*sin(ang);
      #declare t22 = c22*cos(ang) - c12*sin(ang);
      #declare t23 = c23*cos(ang) - c13*sin(ang);
      reemplazar()
#end  //fin del macro Virar}

#macro Rolar(ang)
      #declare ang = (ang*Pi)/180.;
      #declare t21 = c21*cos(ang) + c31*sin(ang);
      #declare t22 = c22*cos(ang) + c32*sin(ang);
      #declare t23 = c23*cos(ang) + c33*sin(ang);
      #declare t31 = c31*cos(ang) - c21*sin(ang);
      #declare t32 = c32*cos(ang) - c22*sin(ang);
      #declare t33 = c33*cos(ang) - c23*sin(ang);
      reemplazar()
#end //fin del macro Rolar}

#macro Cabecear(ang)
      #declare ang = (ang*Pi)/180.;
      #declare t11 = c11*cos(ang) - c31*sin(ang);
      #declare t12 = c12*cos(ang) - c32*sin(ang);
      #declare t13 = c13*cos(ang) - c33*sin(ang);
      #declare t31 = c31*cos(ang) + c11*sin(ang);
      #declare t32 = c32*cos(ang) + c12*sin(ang);
      #declare t33 = c33*cos(ang) + c13*sin(ang);
      reemplazar()
#end //fin del macro Cabecear


#macro IniTortuga()
#declare Tex_Tortuga = texture{T_Stone27}
   reemplazar()
   ConPluma()
   //Cabecear(90)  
   #declare X = 0.0;
   #declare Y = 0.0;
   #declare Z = 0.0; 
#end
                                                  
#macro Cuadrado(Pasos) // realiza un cuadrado
  #local cont = 0;
  #while (cont<4)
   Andar(Pasos)
   Virar(90)
   #declare cont = cont + 1;
  #end     
#end 


#macro CuadradoRelleno(Pasos)
  ConPluma()
  #local X1 = X;
  #local Y1 = Y;
  #local Z1 = Z; 
  Andar(Pasos)
  #local X2 = X;
  #local Y2 = Y;
  #local Z2 = Z; 
  Virar(90)
  Andar(Pasos)
  #local X3 = X;
  #local Y3 = Y;
  #local Z3 = Z; 
  triangle{<X1,Y1,Z1>,<X2,Y2,Z2>,<X3,Y3,Z3>
    texture{Tex_Tortuga}} 
  Virar(90)
  Andar(Pasos)
  #local X4 = X;
  #local Y4 = Y;
  #local Z4 = Z; 
  triangle{<X1,Y1,Z1>,<X4,Y4,Z4>,<X3,Y3,Z3>
     texture{Tex_Tortuga}}
  Virar(90)
  Andar(Pasos)
  Virar(90)
#end  


#macro CuboRelleno(Pasos)
  CuadradoRelleno(Pasos)
  Rolar(90)
  CuadradoRelleno(Pasos)
  Cabecear(90)
  CuadradoRelleno(Pasos) 
  Andar(Pasos)
  Cabecear(-90)
  CuadradoRelleno(Pasos)
  Andar(Pasos)
  Cabecear(-90)         
  CuadradoRelleno(Pasos)  
  Rolar(90)
  Cabecear(90)
  Andar(Pasos)
  Cabecear(-90)
  CuadradoRelleno(Pasos)
  Virar(90)  
  Andar(Pasos)  
  Virar(90)
  Cabecear(-90)
  Andar(Pasos)
  Cabecear(-90)
  Andar(Pasos)
  Virar(90)
#end

//fin de tortuga.inc

translate into English

Add your comment

Reply to this comment

Edit your comment

Please sign in to post a comment Sign in now?


rss Latest comments – Subscribe to the feed of this post comments.