O algortimo chamado de substrate desenvolvido por Jared Tarbell permite a construção computacional de figuras artisticamente "válidas"; até com papel e caneta.

A versão mais simples deste algoritmo (ver figura seguinte) consiste em escolher um ponto no plano (ponto vermelho em cima à esquerda) e um ângulo, marcar um outro ponto (a verde), a uma distância arbitrária do primeiro, sobre a recta definida pelo par (ponto vermelho, ângulo). Escolher aleatóriamente um ponto (a azul) sobre esta recta e, finalmente, escolher aleatoriamente o ponto final, para a iteração seguinte sobre uma recta perpendicular à primeira e que passa no ponto azul.

Primeira iteração.
Primeira iteração.

O código em Octave que implementa o que acabou de ser descrito é:

function retval=substrule(x)
  rmax=100;
  r=rmax*rand;
  s=r*rand;
  y=x(1:2)+r*[cos(x(3)) sin(x(3))];
  z=x(1:2)+s*[cos(x(3)) sin(x(3))];
  alpha=x(3)+(-1)^(floor(10*rand))*pi/2;
  plot([x(1) y(1)], [x(2) y(2)],'k','linewidth',2)
#  plot(x(1),x(2),'ro')
#  plot(y(1),y(2),'go')
  retval=[z alpha];
endfunction;

As 12 figuras seguintes foram obtidas com 200 iterações sobre um ponto inicial. São, de uma certa maneira, passeios aleatórios sobre o plano.

12
12

Embora não tão sofisticadas como o substrato que motivou a sua construção, as figuras não deixam, na minha opinião, de ser artisticamente "válidas", permitindo ver para além do que lá está.

Deixo para mais tarde as considerações sobre a generalização da forma simples deste algoritmo assim como a implementação noutra linguagem de programação.

Created: NaN

Last updated: 23-01-2025 [00:04]


For attribution, please cite this page as:

Charters, T., "Substrate": https://nexp.pt/substrate.html (23-01-2025 [00:04])


(cc-by-sa) Tiago Charters - tiagocharters@nexp.pt