FRACTINT y L-Systems

 
Existe multitud de software para generar fractales, tanto comerciales como de libre distribución. Para este curso hemos decidido centrarnos en el uso de uno de los más completos y populares: Fractint. Más adelante te presentaremos otros  para que experimentes y compares.  

Fractint es un programa de libre distribución , diseñado mediante la colaboración desinteresada de un gran número de programadores (Stone Soup Group). Vamos a indicarte como obtenerlo e instalarlo en tu máquina. Para unificar criterios tomaremos Fractint para Windows (Winfract) como programa de trabajo. De modo que todas las referencias que hagamos a partir de ahora serán con respecto a este entorno (excepto mención explícita).  
  

Instalación de Fractint para Windows 

Para obtener la última versión debes acceder a http://spanky.triumf.ca/www/fractint/getting.html donde además dispondrás de un gran número de recursos asociados con el mundo de los fractales.  

Fractint para Windows se llama Winfract. El primer paso es descomprimir el archivo winf1821.zip sobre una carpeta que se puede llamar Winfract. El archivo descomprimido es directamente ejecutable y podemos invocarlo escribiendo en la ventana Ejecutar del Menú de Inicio c:\Winfract\winfract. Si deseamos poner un acceso directo al programa en el escritorio abriremos el explorador e iremos a la carpeta donde se halla el ejecutable. Haremos clik sobre el icono y lo arrastraremos el hasta el escritorio.  
  

Otras plataformas  

Es posible instalar Fractint para otros sistemas operativos. Para instalar Fractint para DOS, debemos descomprimir el archivo frain200.zip sobre la carpeta deseada, por ejemplo fractint (en c:\fractint). Para entrar en fractint simplemente debemos invocar el archivo ejecutable, c:\fractint\fractint.exe. Si deseamos ejecutarlo desde cualquier directorio, deberemos incluirlo en el archivo autoexec.bat. Para ello, editamos el archivo en cualquier editor, por ejemplo edit de DOS, y en la linea que contiene la instrucción PATH añadiremos PATH  c:\dos; c:\win; ...; c:\fractint. 

La versión actual (02/2003) para Windows de Fractint está portada directamente desde DOS. En la fecha de elaboración de este curso la última versión para DOS era la 20.0. Sin embargo, aunque el entorno de trabajo es del estilo de los programas basados en Windows, las limitaciones que imponen los drivers de las tarjetas de vídeo y las diferencias respecto a los modos gráficos de DOS no son totalmente traducibles. Por tanto, aunque la versión de DOS introduce mejoras que no contempla aún la versión de Windows, probablemente esta última es de más fácil manejo para principiantes y para aquellos que están acostumbrados a moverse en este entorno de ventanas. De todos modos, la versión para DOS de Fractint puede ser usada en ventanas del interfaz de comandos de DOS en  Windows.  

Existen versiones de Fractint para otras plataformas: Unix/Xwindows. Están también en el mismo sitio:  http://spanky.triumf.ca/www/fractint/getting.html . Igualmente, Tim Gilman está portando Fractint a Macintosh como tesis para graduarse en la Universidad de California en Santa Cruz. Es posible descargar una beta 2 desde: http://www.eudaemon.net/macfract/   
  

L-systems en Fractint  

Vamos a utilizar Fractint. Para cualquier duda de funcionamiento tienes dos posibilidades: la ayuda oficial on-line en inglés http://spanky.triumf.ca/www/fractint/findex.html o el excelente curso de la más excelente todavía web fractal en castellano Área Fractal .   

Hay muchos tipos de L-systems. Los que nosotros veremos se denominan context-free  (libres de contexto) L-systems. En ellos cada símbolo de la cadena puede ser interpretado por si mismo para que la sustitución de la regla de producción se ejecute. Si la sustitución de un símbolo depende del patrón de símbolos alrededor de él en la cadena, decimos que el L-system es context-sensitive (sensible al contexto). Los L-system sensibles al contexto son más difíciles de implementar en un ordenador, como puedes imaginar.  

Aún existe otro tipo de L-system: los estocásticos. Su aportación consiste en añadir azar o ruido al modelo de crecimiento. En estos modelos nos encontramos con distintas reglas de producción para un mismo símbolo. Se asocian a un símbolo a través de una distribución de probabilidad. De modo que el resultado de las iteraciones del L-system es diferente cada vez que se ejecuta. Así, en procesos que pretenden simular crecimiento, el resultado es más realista.  

Ya hemos visto el código L-system de Fractint que genera la curva de Koch. Entra ahora en Fractint. Si tu pantalla de dibujo es pequeña, accede a View-Image Settings . En el cuadro de diálogo puedes cambiar la definición y el número de colores. Escoge la opción Fractal Formula. Dentro del menú encontrarás  la opción lsystem .  Aparecen tres carpetas (cada una de ellas contiene muchas fórmulas de L-systems). Escoge  fractint.l. Y dentro de ella selecciona SierpinskiSquare. Ahora Fractint te pide un parámetro: Order (el orden), es decir, el número de iteraciones n que quieres que realice. Aquí te mostramos un resultado con n igual a 5: 
 
En View - Hotkeys Actions dispones de dos opciones: Fratint style ... y Windows style ... Si aprietas la tecla podrás acceder a la visión del código. Como verás es: 
  

SierpinskiSquare { ; Nombre del Lsystem. { indica comienzo de código
angle 4  ; Especifica el incremento de ángulo: 360º/4=90º
axiom F+F+F+F  ; Comenzamos por un cuadrado
f=FF+F+F+F+FF  ; Regla de sustitución
}  
  
Siempre que quieras salir de un menú aprieta la tecla Esc. Abajo presentamos otro ejemplo: la curva Dragón (en tres niveles de iteración). Para seleccionarla rápidamente presiona la tecla T. Toma la opción lsystem. Y ahora selecciona Dragon. 
  
n=3 
 
n=5 
 
n=10 
 
  
Este es el código correspondiente: 
   
Dragon {
Angle 8 ; Incremento de ángulo: 45º
Axiom FX ; Cadena de caracteres axioma o inicial
F=  ; Primera regla:  Borrar: 'F'
Y=+FX--FY+  ; Sustituye 'Y' por  "+FX--FY+"
X=-FX++FY-  ; Sustituye 'X' por  "+FX++FY-"
}
   
Como puedes ver, aparecen un par de trucos más. Un blanco como en "F=  ", significa borrar símbolo (o línea en este caso). Los símbolos X e Y son variables que no poseen significado geométrico. Es decir, son ignoradas a la hora de interpretar las cadenas de símbolos gráficamente. Se usan para conseguir el orden correcto de símbolos gráficos deseados. 

En un L-system el aumento de la complejidad del dibujo no es lineal. Comprobaremos que, aumentando el número de iteraciones, pronto llegamos a saturar la capacidad de cálculo de nuestra máquina.

 
@ El tutorial de L-systems de William McWorter, probablemente sea el más completo en red  en referencia a Fractint. Digiérelo lentamente. 
  
Te recomendamos que leas primero los capítulos: "What are L-SYSTEMS",  "True Fractals", "Tilings"  y "Spacefilling Curves", en este orden.  Más adelante te iremos sugiriendo capítulos.
 
 
 
@ Y ahora observa lo que se puede hacer con L-systems en 3 dimensiones y mucho arte. 
 
 
 
@ ¿Qué son los árboles pitagóricos?