Inicio > Artículos, Geometría, Programación > La geometría de los árboles

La geometría de los árboles

Martes, 20 de noviembre de 2012
Citar este artículo 29.161 visitas
La geometría de los árboles

En varios post anteriores he hablado del curso de Arte Generativo que he venido desarrollando en el Penta UC, con softwares como Context Free y Structure Synth. Una actividad que frecuentemente realizamos, fue construir estructuras que se asemejen a árboles o plantas, diseños que pueden realizarse de varias formas diferentes.

En este post muestro cómo la idea de árbol se va articulando en el arte generativo, con aplicaciones de ideas matemáticas como la recursividad y la aleatoriedad, los que paulatinamente nos permiten abordar geométricamente la pregunta esencial ¿cómo es un árbol?

 

Este post participa en la Versión 3.14159265 del carnaval matemáticas en español, organizado en el Blog Pimedios.

Para ilustrar las ideas generales, voy a evitar explicar códigos, aunque sí los incluiré para los interesados en editarlos (lo que es siempre un ejercicio interesante). Para ello, recomiendo las múltiples menciones que he hecho anteriormente a Context Free y Structure Synth.

La idea básica de un árbol reside en la ramificación, es decir, una cómo una determinada estructura se convierte en dos o mas, luego cada una de las mismas se divide en otro par y así sucesiva y recursivamente. Más allá de estar relacionada esta idea con modelos exponenciales, veremos que lo que solemos reconocer en árboles reales apunta al control de una cierta aleatoriedad.

A medida que vamos progresando en el diseño de árboles surgen ideas como la de tallo, rama; recursos como aleatoriedad y recursividad; y conceptos como la simetría / asimetría y el equilibrio. Todas estas ideas hacen referencia directa o indirectamente a elementos geométricos con loss que buscamos implementar un creciente sentido de realismo. Todo parte desde cuadrados, círculos y triángulos…

1. Ramificación 2D

Una primera aproximación suele consistir en generar un tronco y transformarlo en ramas. Nótese que el tronco está formado por una sucesión de cuadrados que se van reduciendo y trasladando hacia arriba. Tal forma es la que se transforma en las dos primeras ramas, e iterando tales transformaciones recursivamente, dos semejanzas, se genera un cierto ramaje.

En este ejemplo se evidencia una característica usual de los diseños generativos, y es que las transformaciones definidas tienden a reducir los objetos, debido a que las iteraciones se detienen cuando las figuras pasan a ser más pequeñas que un pixel. Luego, las iteraciones son finitas en la medida que se reducen los objetos.

Otro elemento distintivo, y que en cierta medida es consecuencia de la idea anterior, es que a medida que se repiten las transformaciones se va ganando en realismo. Puede observarse en este diseño como el primer cuadrado, el más grande, y los que le siguen tienen un aspecto “geométrico” en el sentido de las idealizaciones de la geometría, mientras que los últimos, los más pequeños, tienen una característica más natural.

De esta forma, un efecto regular de estos diseños se da por transitar desde la geometría ideal a una geometría más real.

2. Ramificación 2D en color

El color cumple un rol muy particular en el diseño generativo, no sólo se trata de asemejar en este caso los colores de los árboles, sino también develar detalles. En este diseño particular se aprecia sutilmente esta necesidad, en zonas donde unas ramas se juntan con otras, debido a la forma como operan estos programas, que es distinta a la lógica de conformación de los fractales.

En Context Free y Structure Synth las reglas que se definen van generando nuevos objetos, como vimos, cada vez más pequeños en muchos casos. Sin embargo, los objetos anteriormente generados no se borran o reemplazan, por lo que el programa va “dibujando” figuras sobre las preexistentes. En este contexto, es común que se pierdan detalles de la geometría, simplemente por ser las figuras del mismo color. En cambio cuando el color, y particularmente el brillo, se controla de manera que también varíe, se van develando muchos detalles internos interesantes. Esta característica es más evidente en el siguiente diseño.

3. Ramificación curvada

Un ajuste útil de implementar, es que el tronco, y por consiguiente las ramas, no crezcan linealmente, sino con cierta curvatura. Así se logra diseños más realistas en el sentido de ramajes curvados, aunque aun estos diseños tienen un carácter determinista podríamos decir.

Este determinismo se observa en el hecho de que un mismo código ejecutado en distintas ocasiones generaría siempre el mismo resultado, aunque hasta ahora si se logra el aspecto de árbol por colores y la generación de un cierto follaje.

Sin embargo, la cualidad de los árboles que aun no hemos implementado, es una cierta aleatoriedad. En este diseño debe notarse que todas las ramas hacia la derecha se abren en un mismo ángulo, e inversamente con las ramas de la izquierda. También ocurre que la curvatura de las ramas y sus dimensiones relativas son iguales, y esta es una característica prácticamente imposible de encontrar en la naturaleza.

4. Ramificación aleatoria

Algunos autores utilizan el término “generativo” para referirse a la frecuente aleatoriedad que se implementa en este tipo de arte, es decir, a la cualidad de que cada diseño sea único. De hecho existen un par de libros bien famosos productos de esta unicidad de cada ejemplar, ambos descritos como “libros generativos”.

Este componente de lo generativo, está íntimamente ligado a las ideas del ejemplo anterior. La forma como el tronco se transforma en una rama, involucra varios atributos, como son la altura a la que cada rama parte, el ángulo en el que se ramifica, la curvatura, sus dimensiones, incluso la forma como se va coloreando. Una estrategia para generar árboles realistas que utilizamos, fue controlando uno o varios (o todos) esos atributos de manera aleatoria.

En este ejemplo, las ramas a la derecha se extienden siguiendo dos posibilidades solamente, al igual que las ramas de la izquierda. Pero la combinación de ambos pares de posibilidades, aleatoriamente genera cambios radicales. El código asociado a este ejemplo sí genera aleatoriedad, y por lo tanto, teóricamente, cada vez que ejecutemos el mismo código, obtendremos un árbol distinto, y a veces muy distinto.

5. Ramificación aleatoria 2

Este árbol es un ejemplo aislado de los ejemplos anteriores, pero fue construido siguiendo esencialmente las misma ideas. Aquí contrasta con mayor claridad el minimalismo inicial del tronco, basado en unos pocos cuadrados que lentamente se van reduciendo, con el realismo del follaje, basado en millones de cuadrados mucho más pequeños que varían rápidamente.

Otro elemento previamente descrito y que también se observa con mayor claridad aquí, es el rol estratégico del color, puesto que se trata de una construcción plana que genera una cierta sensación de volumen. Esto se logra controlando los atributos del color (tinte, saturación y brillo) de manera sincronizada con las transformaciones geométricas.

En suma este tipo de diseños están combinando aspectos geométricos, en el sentido de tamaño y posición, con aspectos gráficos como los del color, de manera un tanto integrada. Si se leen correctamente los códigos asociados a este diseño, se podrá observar cómo transformaciones geométricas y de color están íntimamente relacionadas.

6. Arbol 2D en el espacio

Trabajando ahora en Structure Synth, un entorno similar a Context Free pero en 3D, es posible “traducir” los códigos de árboles 2D como los antes ejemplificados a 3D. El resultado es algo como este árbol, que si bien no es plano, conserva un cierto paralelismo como si todos los cubos estuvieran “alineados”.

Structure Synth cuenta con más recursos gráficos, por ejemplo un sistema denominado “raytrace” o trazador de rayos, que permite calcular cómo se refleja la luz sobre los objetos y como se distribuyen las sombras.

Con esto se genera un aspecto más realista aun, que permite observar también sombras, lo que provee una visión más completa de los objetos, digamos, como un par de vistas de una misma estructura.

7. Arbol 3D

Extendiendo la misma idea, en vez de pensar en 2 ramas, es decir, 2 transformaciones para ramificar el tronco, es útil pensar en 4 transformaciones. Este es un modelo muy similar a cómo se construyen algunos árboles de navidad.

Esta extensión nos permite ganar en realismo en cuanto a generar un follaje más complejo, pero el verdadero elemento clave es la aleatoriedad, como vimos en los ejemplos 2D.

Así, los árboles basados en 4 transformaciones en los que se controla cuidadosamente la aleatoriedad, incorporan una calidad de realismo particularmente aceptable para la cantidad de trabajo que se está desarrollando.

8. Arbol 3D aleatorio

El control de la aleatoriedad que este ejemplo requiere es un tanto más complejo. En general la dificultad no está en las ideas geométricas o los códigos a implementar, sino más bien en ajustar los valores de manera precisa para lograr el efecto esperado. Para esto no hay fórmula, sólo considerar que los distintos atributos geométricos de un árbol son todos aleatorizables, como las alturas a las que parten las ramas, ángulos en los que se extienden, escala relativa al tronco, entre otros.

Cada uno de estos se puede aleatorizar definiendo un conjunto de posibles valores y con qué frecuencia se debe seleccionar cada uno.

Aquí ya se entra en un aspecto un tanto más caótico que frecuentemente es un tanto sorprendente.

La geometría de los árboles

He intentado en este post describir los aspectos geométricos que nos permiten abordar el diseño de árboles en un entorno generativo. Esta descripción también coincide con la secuencia didáctica con la que fuimos abordando esta tarea, que regularmente fue incorporando elementos nuevos que surgieron de la práctica y conversaciones con los estudiantes.

Es muy interesante cómo un concepto tan común y cotidiano como un árbol, puede ser una fuente tan rica de experimentación matemática cuando se cuenta con las herramientas apropiadas. Para esto he tomado múltiples ideas prestadas, pero quizás la mayor inspiración es la forma como Benoit Mandelbrot hablaba de los fractales: “De las leyes más simples nacen infinitas maravillas que se repiten indefinidamente” (Fractales y el arte de la fracturación).

No es menor la forma como se tituló esta charla, Mandelbrot habló del “arte” de a fracturación, y con ese espíritu hemos venido desarrollando el curso, poniendo la matemática al servicio del arte…

Artículos, Geometría, Programación , , , , , , ,

  1. Miércoles, 7 de agosto de 2013 a las 10:33 | #1

    Algo realmente curioso… Una entrada sensacional. Mis felicitaciones

  1. Viernes, 23 de noviembre de 2012 a las 10:00 | #1
  2. Viernes, 31 de enero de 2014 a las 00:37 | #2

Artículo publicado en http://www.geometriadinamica.cl/2012/11/la-geometria-de-los-arboles/.