Desenhando com algoritmos

"Pinceladas nervosas" feitas por um algoritmo.

See English translation of this text below.

Inspirado pelo interessante trabalho do Alexandre Villares,  que está fazendo arte com algoritmos, resolvi experimentar algumas coisas semelhantes, só que em vez de programar em Processing, vou usar o GDL do ArchiCAD!

É ainda um experimento incipiente, mas os resultados são muitos divertidos. Se, por um lado, o GDL não oferece as mesmas possbilidades do Processing — que é (até onde eu sei) uma linguagem de programação pensada especificamente para produzir arte visual —, por outro lado o GDL oferece outras, que provavelmente o Processing não cobre, relacionadas com o universo 3D e o BIM.

Por enquanto, trabalhei apenas em 2D, mas já dá para imaginar as possibilidades em 3D e as possíveis aplicações dessas ferramentas em Arquitetura e Urbanismo.

Entre os trabalhos do Villares, os que mais me chamaram a atenção são os que exploram a transição suave de estruturas geométricas exatas e simétricas para formas mais orgânicas e fluidas (veja os sketches 074 a 080 na página dele). Eu tentei explorar essa transição com um algoritmo completamente diferente.

As imagens deste post são fotos de tela do ArchiCAD, mostrando um mesmo objeto GDL, que pode se transformar totalmente, dependendo de como os seus parâmetros são configurados. Chamei o objeto de Vegetal, por motivos que ficam evidentes a partir da observação das imagens. É uma estrutura inspirada nas ramificações cada vez menores e mais numerosas que observamos na raíz de uma planta ou na copa de uma árvore.

Tentei explicar os conceitos do algoritmo nas legendas das imagens abaixo (clique nelas para ampliar).

Se você quiser experimentar o Vegetal, pode baixar o objeto GDL aqui.

Agradeço Bruno Schiavo e Luis Fernando Campedelli pela ajuda com a função que calcula a quantidade de nós, fundamental para o desenvolvimento do código.

Drawing with Algorithms

Inspired by Alexandre Villares’ interesting work, who is doing art with algorithms, I decided to try some similar things, but instead of programming in Processing, I will use ArchiCAD GDL.

It's still an incipient experiment, but the results are a lot of fun. If, on the one hand, GDL does not offer the same possibilities as Processing - which is (as far as I know) a programming language specifically designed to produce visual arts - on the other hand GDL offers other possibilities not covered by Processing, related to the 3D universe and BIM.

For now, I have only worked on 2D, but you can already imagine the possibilities in 3D and possible applications of these tools in Architecture and Urbanism.

Among Villares' works, the ones that most caught my attention are those that explore the smooth transition from exact, symmetrical structures to more organic and fluid forms (see sketches 074-080 on his page). I've tried exploring this transition with a completely different algorithm.

The images in this post are screenshots of ArchiCAD 2D plan window, showing the same GDL object, which can be fully transformed depending on how parameters are set. I called the object Vegetal, for reasons that are evident from the observation of the images. It is a structure inspired by the smaller and smaller branches that we observe in the root of a plant or in the crown of a tree.

I tried to explain the concepts of the algorithm in the captions of the images below (click on them to enlarge).

If you want to try Vegetal, you can download the GDL object here.

I'd like to thank Bruno Schiavo and Luis Fernando Campedelli for helping with the function that calculates the quantity of nodes, required to create this code.

Captions:

Main image (top): Nervous brushstrokes made by an algorithm.
 
2nd image: This image is good for illustrating the concept behind the code. Basically, Vegetal creates sets of 'branches'. From the end of each 'branch' a new set of branches is born, whose ends give rise to new sets, and so on. Here, a branch is simply a straight line; each set has 5 branches evenly distributed in a 90° arc, which were reproduced in 5 stages, each one in a different color and sizes equal to a fraction of the previous stage. Notice the number of lines generated by sets of 5 branches and 5 stages: they are precisely 3905 lines!
 
3rd image: Here, we change two parameters: the number of branches per set, from 5 to 4; and the distribution angle, from 90° to 360°. All very regular and accurate.
 
4th image: The missing ingredient to make these structures more organic and natural is randomness. Look what happens to the previous 4-branch structure when we multiply the insertion angles by a random number.
 
5th image: We swapped from lines to thin rectangles and, instead of randomizing angles, we used a randomizer for the lengths. There are 3 stages of 6-branch sets (the first stage, grey, is practically all covered by the other).
 
6th image: What if we randomly alternate filled and empty rectangles, isn’t that cool?
 
7th image: Here the branches are trapezoids, with regular distribution angles and randomized dimensions. I like the effect of disturbed symmetry. 4-branch sets in 6 stages. The last stage - red - seldom appears, with very small branches.
 
8th image: But of course the funniest part is to apply randomness both in angles and lengths. It is amazing how this picture and the one beside look like top views of trees in different flowering stages.
 
9th image: A friend called this drawing "the fennel equation".
 
10th image: And so on…

Esta imagem é boa para ilustrar o conceito adotado na programação. Basicamente, o objeto 'Vegetal' cria conjuntos de 'ramos'. Da extremidade de cada 'ramo' nasce um novo conjunto de ramos, cujas extremidades dão origem a novos conjuntos, e assim por diante. Aqui, um ramo é simplesmente uma linha reta, cada conjunto tem 5 ramos uniformemente distribuídos em um arco de 90º, que foram reproduzidos em 5 estágios, cada um de uma cor diferente e com tamanhos iguais a uma fração do estágio anterior. Repare a quantidade de linhas geradas por apenas conjuntos de 5 ramos e 5 estágios: são precisamente 3905 linhas!

Aqui, mudamos dois parâmetros: a quantidade de ramos por conjunto, de 5 para 4; e o ângulo de distribuição, de 90º para 360º. Tudo muito regular, exato e preciso.

O ingrediente que faltava para tornar essas estruturas mais orgânicas e naturais é a aleatoriedade. Veja o que acontece com a estrutura anterior de 4 ramos, quando multplicamos os ângulos de inserção dos ramos por um número randômico.

 

 

 

 

 

 

 

 

 

Trocamos as linhas por retângulos delgados e, em vez de randomizar os ângulos, usamos um randomizador nos comprimentos. São conjuntos de 6 ramos em 3 estágios (o primeiro estágio, cinza, está praticamente todo encoberto pelos outros). 

E se alternarmos randomicamente retângulos preenchidos e vazados, será que fica legal?

Aqui os ramos são trapézios, com ângulos de distribuição regulares e dimensões randomizadas. Gosto do efeito de 'simetria perturbada'. Conjuntos de 4 ramos, em 6 estágios. O último estágio — vermelho — só aparece eventualmente, com ramos muito pequenos.

Mas é claro que a parte mais divertida é aplicar a randomização tanto nos ângulos como nos comprimentos. É incrivel como esta imagem e a do lado lembram vistas de topo de árvores, com diferentes etapas de floração. 

Uma amiga chamou esse desenho de "algoritmo da erva-doce".

Tente adivinhar quantos ramos por conjunto e quantos estágios têm esta composição. O segredo é moderar a dose de randomização para que a composição pareça natural mantendo uma certa organização.

Você pode substituir os ramos geométricos por formas mais irregulares.

Aqui vemos três objetos com exatamente os mesmos parâmetros (clique para ampliar). Cada vez que o código é rodado, o resultado é diferente, graças aos randomizadores.

E assim por diante...

Compartilhe: 

Comentar