PROCESSING

PROPUESTA: CURVAS DEL PLANO PARA EL ARTE GENERATIVO CON PROCESSING

Unidad didáctica de Lali Barrière

Processing es un lenguaje y un entorno de programación abierto y libre, con un doble propósito: por un lado, está pensado para facilitar el aprendizaje de la programación, incluso para aquellos sin una formación tecnológica sólida; por otro lado, está orientado al prototipado y producción de gráficos, animaciones e interacciones. Es una herramienta cuyo uso se orienta claramente a artistas y diseñadores. La primera versión de Processing se publicó en 2001, en el MediaLab del MIT. Los responsables fueron Casey Reas y Ben Fry, por aquél entonces estudiantes del famoso diseñador y artista digital John Maeda. En la actualidad el proyecto es sólido y robusto, muy fiable, y con una comunidad internacional de usuarios importante. También es muy interesante la gran cantidad de recursos de aprendizaje disponibles, en forma de cursos, tutoriales o libros, junto con una web muy buena, bien mantenida y quasi-exhaustiva.
Esta unidad didáctica trata sobre la programación de curvas y movimiento, herramientas necesarias para el arte generativo, utilizando como lenguaje Processing. Nos centramos en el caso bidimensional.
Desde el punto de vista del resultado, debemos distinguir entre curvas que se construyen dinámicamente, es decir, trayectorias, y curvas que se dibujan en un sólo frame. De hecho, cualquier curva podría ser implementada como trayectoria, tanto dinámica como en un único frame. Pero tanto el resultado como la forma de trabajar serán distintos en uno y otro caso, de ahí la distinción.
Nosotros empezamos por hablar de la implementación de diferentes curvas que tiene Processing, para luego pasar a hablar de cómo programar curvas propias, a partir de las ecuaciones matemáticas de sus trayectorias. Trabajamos con ejemplos. 

Primera parte. Curvas en Processing
Las curvas que podemos dibujar directamente en Processing son, en primer lugar, elipses y circunferencias, junto con sus arcos, aunque nuestra atención se centrará en los splines y las curvas de Bézier, dos formas distintas de interpolación. 
Las instrucciones curves(); y dentro de un bloque beginShape(); ... endShape(); una secuencia de instrucciones curveVertex(); son las dos posibilidades que tenemos para obtener, en Processing, una implementación de un tipo de splines de Catmull-Rom.
De forma análoga, deberemos usar la instrucción bezier(); o bien dentro de un bloque beginShape(); ... endShape(); una secuencia de instrucciones bezierVertex(); para las conocidas curvas de Bézier.

Estas dos formas de generar curvas se estudian con ejemplos sencillos, para seguidamente pasar a realizar una práctica libre, pero guiada.
Un ejemplo de uso de las curvas Béizier
Segunda parte. Curvas planas y coordenadas polares
Para programar curvas y movimiento en el plano es muy conveniente conocer las coordenadas polares. Este será uno de nuestros objetivos en este punto, aunque no el único ya que, a partir de ellas, vamos a mostrar algunas técnicas para obtener resultados gráficos interesantes.
Recordemos que las ecuaciones que definen las coordenadas de un punto en función del radio y el ángulo son x=r·cos(a), y=r·sin(a). A partir de estas ecuaciones, se obtiene:

· Una circunferencia, cuando se asigna al radio un valor constante;
· una espiral, cuando se asigna al radio un valor creciente;
· y en general, una trayectoria de revolución alrededor de un centro.

Se propone la práctica de estas tres posibilidades, dando para la tercera, que es más abierta, un ejemplo basado en las curvas de Lissajous.

Animación basada en las curvas de Lissajous, para mostrar el uso de las coordenadas polares

Tercera parte. Curvas como trayectorias de partículas
En este punto damos paso a un ejemplo más avanzado, en el que se realiza una pequeña simulación de un sistema físico. Concretamente, un sistema de partículas conectadas entre ellas por muelles, que pueden ser visibles o invisibles, y que se mueven sujetas a las fuerzas elásticas que estos muelles. provocan.
Muestra de las posibilidades que ofrece el trabajo con sistemas de partículas
La programación del sistema de partículas se da hecha y se explica a modo informativo. Dada su dificultad, se propone como práctica un trabajo de exploración de posibilidades estéticas, sin insistir en los detalles técnicos de la programación.

Cuarta parte. Envolventes de curvas y otras construcciones
Como cierre de la actividad se muestra la construcción de algunas curvas a partir de rectas. Este es un trabajo muy técnico, que pretende simplemente hacer ver cómo ideas pertenecientes a la rama más clásica de las matemáticas pueden servir de inspiración al artista digital.
En concreto, utilizamos la cardioide, la curva que recorre un punto de una circunferencia cuando ésta gira alrededor de otra circunferencia del mismo tamaño, apoyándose en ella. La construcción geométrica es muy sencilla, a partir de rectas que unen puntos de una circunferencia de una deteriminada manera y que resultan ser tangentes a la curva buscada.
Como en el caso de los sistemas de partículas, el código se da hecho. El resultado estético compensa las explicaciones que requiere.
Una generalización de la cardioide, trazada por sus rectas tangentes