Jesús Rafael Soto , Répétition optique Nº 2 , 1951
                1)Estudo de padrão
              Após o reconhecimento do padrão foi necessário reconhecer as formas envolvidas e 
               suas relações para passar pro programa.
                Depois criar uma disposição igual à obra.
               2)Criação do código
                  a)Criar função do padrão.
                  b)Criar um método de repetição para preenchimento de qualquer tamanho de tela.
float lar = 30;            //largura desejada
float alt = lar * 2;      //altura em relação com largura
float x = 100;            //posição x do primeiro padrão a ser criado
float y = 100;            //posição y do primeiro padrão a ser criado
float xAt = x;
float yAt = y;
int cont = 0;
int cont2 = 1;
void setup()
{
  size(800,600);
  noStroke();
}
void padrao(float l , float h,float x ,float y)             //padrão
{
  fill(255);
  quad(x , y , x+l , y , x+l , y+h , x , y+h);
  fill(255,195,85);
  quad(x , y , x+ l/2  ,y , x+l/2 , y + h/2 , x , y+h/2);
  fill(44,37,39);
  quad(x+l/2 , y + h/2 , x+l , y+h/2 , x+l , y+h , x+l/2 , y+h);
  triangle(x , y , x + l/4 , y , x , y + h/2);
  triangle(x + l/4 , y + h/2 , x + l/2 , y + h/2 , x + l/2 , y + h);
  fill(255);
  triangle(x + 3*l/4 , y+h/2, x+l , y+h/2 , x + l , y + h);
}
void draw()
{
  if((xAt > -lar) && (cont == 0))           //criação da linha para a esquerda
  {
  padrao(lar,alt,xAt,yAt);
  xAt = xAt - lar;
  }
  else
  {
    if(cont == 0)
    {
    cont = 1;
    xAt = x;
    }
  }
  if((xAt < width) && (cont == 1))   //criação da linha para a direita
  {
    padrao(lar,alt,xAt,yAt);
    xAt = xAt + lar;
  }
  else
  {
    if (cont == 1)      //alteração de colunas
    {
      cont = 0;
      yAt = yAt + cont2 * alt;
      xAt = x;
    }
    else
    {
      if(yAt > height)  //inversão da criação de colunas
      {
        yAt = y;
        xAt = x;
        yAt = yAt -  alt;
        cont = 0;
        cont2 = -cont2;
      }
    }
  }
}
         Resultado:
                 3)Aplicação
                 Estudo de linhas para criação de aplicações:
                 3.1)  Retirando elementos conseguiu-se os seguintes resultados:
                                 variação 1
                              variação 2
  fill(255);
  triangle(x , y , x + l/3 , y + h/2 , x , y + h/2);
  triangle(x + l/3 , y , x + 2 * l/3 , y + h/2 , x + l/3 , y + h/2);
  fill(0); 
  triangle(x + l/3 , y+h/2, x+2*l/3 , y+h/2 , x + 2*l/3 , y + h);
  triangle(x + 2*l/3,y + h/2, x+l , y + h/2,x + l, y+h);
                  3.2)Utilização de cores randômicas criando texturas:
  quad(x , y , x+l , y , x+l , y+h , x , y+h);
  fill(random(0,255));
  quad(x , y , x+ l/2  ,y , x+l/2 , y + h/2 , x , y+h/2);
  fill(random(0,255));
  quad(x+l/2 , y + h/2 , x+l , y+h/2 , x+l , y+h , x+l/2 , y+h);
  triangle(x , y , x + l/4 , y , x , y + h/2);
  triangle(x + l/4 , y + h/2 , x + l/2 , y + h/2 , x + l/2 , y + h);
  fill(random(0,255));
  triangle(x + 3*l/4 , y+h/2, x+l , y+h/2 , x + l , y + h);
                 3.3) Inspiração em obra física de Jesús Soto:
float lar = 10;
float alt = lar * 20;
float x = 100;
float y = 100;
float xAt = x;
float yAt = y;
int cont = 0;
int cont2 = 1;
void setup()
{
  size(800,600);
  noStroke();
}
void padrao(float l , float h,float x ,float y)
{
  fill(0);
  quad(x , y , x+l , y , x+l , y+h , x , y+h);
  quad(x , y , x+ l/2  ,y , x+l/2 , y + h/2 , x , y+h/2);
  quad(x+l/2 , y + h/2 , x+l , y+h/2 , x+l , y+h , x+l/2 , y+h);
  fill(255);
  triangle(x , y , x + l/6 , y , x , y + h/2);
  triangle(x + l/6 , y + h/2 , x + l/2 , y + h/2 , x + l/2 , y + h);
  triangle(x + 3*l/4 , y+h/2, x+l , y+h/2 , x + l , y + h);
}
Referências :




















 















