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
Send a message
Search for members