Substrate

Implementação em GNU/Octave do algoritmo

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.

Palavras chave/keywords: substrate, art, matemática

Última actualização/Last updated: 2014-02-20 [14:39]


1999-2014 (ç) Tiago Charters de Azevedo

São permitidas cópias textuais parciais/integrais em qualquer meio com/sem alterações desde que se mantenha este aviso.

Verbatim copying and redistribution of this entire page are permitted provided this notice is preserved.