Un poco de historia: La idea del árbol 2-D estático vino a la mente del autor aproximadamente en 1967, cuando tenía 6 años. La figura le intrigaba y solía garabatearla en sus cuadernos escolares. Por supuesto, con proporciones no muy precisas. Quince años más tarde, en 1982, tras leer un ensayo de la colección "sigma" de libros matemáticos en la biblioteca de la universidad, la analizó con detenimiento y se dio cuenta de sus propiedades fractales (si la longitud de las ramas de cada generación disminuyera de acuerdo a unas reglas muy simples, el árbol llenaría el plano! ¡y sin que dos ramas se solaparan nunca!). Esto fue una gran sorpresa y una gran satisfacción para él y aumentó su interés en el mundo de los fractales. En ese mismo año (1982) se preguntó si podría haber una versión 3-D en la que las ramas tampoco se solapasen pero que pudieran igualmente llegar a todos los puntos, en este caso, del espacio. Cuando se dio cuenta de que ese objeto también existía quedó fascinado y apreció, otra vez, la bella estructura de las matemáticas. En 1984 publicó estas dos figuras estáticas, el árbol 2-D y el árbol 3-D, en la revista "Cacumen". Pero todavía no se había dado cuenta de que, en la versión 2-D, cada rama podía rotar independiente y libremente alrededor de su rama padre sin posibilidad de "colisionar" jamás con otra. Todo ello incluso aunque el árbol 2-D inicial tuviera millones (o infinitas) ramas. No sucedería hasta 1987. En ese año, en una noche de profunda inspiración, la versión plana del árbol dejó de ser estática y el fractal 2-D se convirtió en un fractal móvil. No fue inmediato ver que, al contrario que el árbol 2-D, el árbol 3-D no podría ser móvil porque sus ramas chocarían unas con otras. Durante años, el fractal móvil solo se movía en la cabeza del autor, todavía tardó otros diez en construir el programa que permite visualizar el árbol 2-D en movimiento. Le faltaba un dato clave: en abril de 1997 preguntó en el grupo de usenet sci.math cuál era la fórmula matemática para girar un punto arbitrario del espacio en torno a un eje arbitrario. La precisa respuesta de Pertti Lounesto al final de este hilo el martes, 29 de abril de 1997 fue la llave para que, ese mismo día, pudiésemos ver el árbol rotando fractalmente en la pantalla del ordenador. --- Véase aquí cómo girar un punto arbitrario del espacio alrededor de un eje arbitrario del espacio. Y aquí cómo dibujar un objeto en perspectiva en la pantalla. --- Como construir estos árboles Para conseguir un árbol 2-D solo es necesario que cada rama nieta sea de longitud mitad que la de su rama abuela. Siguiendo esta simple regla pueden conseguirse árboles que cubran bien cuadrados o bien rectángulos en los que las ramas no se tocan nunca entre sí pero pueden alcanzar cualquier punto del cuadrado/rectángulo. Por ejemplo, para conseguir un árbol 2-D que cubra un cuadrado de 2x2, la rama más grande debe medir 1, sus dos ramas hijas también deben medir 1. Las cuatro ramas nieta deben medir 1/2, las ocho biznietas, también 1/2, las dieciséis tataranietas 1/4... y así sucesivamente. Si quitamos del fractal 2-D las ramas y dejamos solo los extremos de las ramas (que son puntos), estas constelaciones de puntos también llegan a cubrir todos los puntos del cuadrado o rectángulo. Análogamente a lo que sucede con el árbol 2-D: Para conseguir un árbol 3-D solo es necesario que cada rama biznieta sea de longitud mitad que la de su rama bisabuela De esta forma el árbol 3-D podrá llegar a llenar un cubo, o bien un paralelepípedo recto de proporciones cualesquiera sin que sus ramas se corten entre sí. Por ejemplo, para conseguir un cubo de 2x2x2, la rama más grande debe medir 1, sus dos ramas hija deben medir 1, sus cuatro ramas nieta también 1, sus ocho ramas biznietas deben medir 1/2, las dieciséis tataranietas 1/2, las treinta y dos tataratataranietas 1/2... y así sucesivamente. Al contrario de lo que sucede con los árboles 2-D, aquí las ramas no pueden girar con respecto a su rama padre porque colisionarían con otras. Análogamente a lo que sucede en el árbol 2-D, si quitamos del fractal 3-D las ramas y solo dejamos sus extremos (que son puntos), estas constelaciones de puntos también llegan a cubrir todos el espacio contenido en el cubo o paralelepípedo. Todavía podemos dar una vuelta de tuerca: Si convertimos cada conjunto de una rama padre con sus dos ramas hija (es decir, cada "H") del árbol 3-D en una porción de plano, cuadrada o rectangular, el conjunto de todos esos planos y planitos también alcanza a cubrir todo el espacio dentro del cubo o paralelepípedo. Y sí, como antes, los planos nunca se cruzan unos con otros:
Versión MSDOS: Ahora la versión antigua (pero con características diferentes) del programa MSDOS para visualizar y girar el fractal: Tenga en cuenta que la versión MSDOS puede no funcionar bien en equipos modernos. Se incluye el .exe y las fuentes en QuickBasic 4.5. El código fuente ha sido compilado con el clónico de QuickBasic: "Power Basic 3.1" para aumentar la velocidad. Bájate el programa aquí: arbol209.zip (44 KB) descomprímelo, ejecútalo y pulsa la barra espaciadora para verlo en movimiento. Nuevo en 2017-02-27, arbol209.zip no funciona en nuevas versiones de Windows, pero la versión siguiente, compilada con QB64 tal cual, sí que funciona: ArbolQB64.zip Esta es la pantalla de entrada al programa:
Como puedes ver, cada rama tiene dos ramas hija, 4 ramas nieta... etc. El árbol tiene varias propiedades interesantes:
La única condición para que estas tres propiedades se cumplan es que la longitud de cada rama sea la mitad de la de su rama abuela. * El programa tiene también una opción 3-D que dibuja un árbol que llena el espacio. En 3-D, las ramas se cortan cuando rotan, así que no se podría construir un módelo móvil del mismo, aunque sí uno estático. Sin embargo, todos los dibujos de abajo proceden del árbol 2-D, de éste sí que es posible construir un modelo, incluso un modelo móvil.
Para programar un árbol con rotaciones hace falta saber cómo girar un punto arbitrario en torno a un eje arbitrario del espacio en 3 dimensiones: Sean (Ax , Ay , Az) and (Bx , By , Bz) dos puntos que definen un eje y (Px , Py , Pz) el punto que va a girar alrededor del eje. P ’ es el punto P tras haber girado "a" radianes alrededor del eje. Sea n el vector unitario que apunta de A a B: Entonces (usando vectores 3D):
Nótese que el punto y el
aspa no son productos normales, sino productos escalar y vectorial
respectivamente. A partir de estas fórmulas se puede obtener el código MSDOS de la siguiente sección:
Éstas pocas líneas de código (en QuickBasic, PowerBasic or QBasic) bastan para crear, dibujar y ver el árbol rotando aleatoriamente:
Hay otros tipos de rotación que dan lugar a curiosas figuras. Si se ejecuta el programa MSDOS (completo, no la porción de código que hay un poco más arriba) y se pulsa en el teclado numérico las teclas 4 y 6 ocho veces cada una, se consigue esta figura:
En 1999/04/04 fue introducido el Número Áureo (ó Divina Proporción) = Phi = (sqr(5) + 1) / 2. Si se multiplica el ángulo "Alfa" en el programa por Phi en cada iteración, se pueden obtener figuras curvas como la siguiente. (Ésta en particular no puede dibujarse con la última versión del programa MSDOS "arbol209.zip" ni con el applet Java de arriba).
Si deseas más información acerca de los Árboles Fractales Móviles, puedes leer el artículo: "A TUTORIAL AND RECIPE FOR MOVING FRACTAL TREES" en la revista Computers & Graphics, Vol 22, Número 2 - 3, pp. 301 - 305, 1998. También puedes leer dos artículos previos sobre el tema, uno en "Carrollia"* (Número 53, pp. 10 - 12, Jun 1997). El otro fue publicado en la revista "Cacumen"** (Número 15, p. 38, Abr 1984) * Carrollia es publicada por el Grupo de Intereses Especiales "Carrolsig", un grupo que trata sobre matemáticas recreativas dentro de Mensa España, y es editada por Josep Maria Albaigès. ** Cacumen fue una revista de Ingenio, Juegos y Humor que, desafortunadamente, dejó de publicarse en diciembre de 1986.
Primera
publicación: 1997 |