Obra escolhida: Concreção 9768
Análise geométrica
A obra que escolhi para analisar geometricamente e basear meu trabalho foi a concreção 9768 do artista abstracionista Luiz Sacliotto.
Pela análise geométrica da obra do artista, pode perceber o padrão do distanciamento entre cada um dos quadrados, o qual ocorria sempre a uma distância fixa. Se considerarmos cada cor de preenchimento como pertencente a um quadrado de tamanho diferente, é possível construir um programa que se faça valer destas propriedades.
Programação
Primeiramente, dividi a obra em quatro partes, para melhor programar seu preenchimento.
Utilizando a função rect do Processing, fiz uma função chamada luizSacliotto que recebe 3 inputs: o tamanho que terão os quadrados menores e as coordenadas "x" e "y" na qual será iniciada a construção da obra. Como o quadrado maior de uma parte tem 4 vezes o tamanho do lado do quadrado menor, uma variável chamada "c" é criada para guardar este valor.
Em seguida, coloquei esta função dentro de um laço que decrementa a cada repetição o valor de "c" em "h", construindo assim quadrados menores. Além disso, a coordenada y tinha seu valor somado em "h" para que o próximo quadrado fosse construído a uma distância que fosse igual ao lado do menor quadrado.
Feito isso, está completa a primeira parte da obra.
Para o preenchimento, é invertida a ordem que foi feita os preenchimentos da parte anterior.
Tomando este cuidado com todas as partes, temos finalmente a reprodução da obra:
Apropriação
Feita a replicação da obra, resolvi colocar a função dentro de um laço e a cada repetição do laço a totalidade da obra feita anteriormente se tornaria a primeira parte de uma obra ainda maior.
Segue abaixo todo o meu código completo para executar esta última etapa.
void setup(){
background(255);
size(1920, 1080);
}
void luizSacliotto(int h, int posX, int posY){
int c = h * 4;
fill(0);
//primeira parte
for(int i = 0; i<=3 ; i++){
rect(posX, posY, c, c);
posY += h;
c = c - h;
if(i%2==0){
fill(125,0 , 0);
}else{
fill(0);
}
}
//segunda parte
c= 4*h;
posX = c;
posY = 0;
fill(125,0,0);
for(int j = 0; j<=3; j++){
rect(posX, posY, c, c);
posY +=h;
posX += h;
c = c - h;
if(j%2==0){
fill(0);
}else{
fill(125,0,0);
}
}
//terceira parte
c = 4*h;
posX = 0;
posY = c;
fill(125,0,0);
for(int k = 0; k<=3; k++){
rect(posX, posY, c, c);
c -=h;
if(k%2==0){
fill(0);
}else{
fill(125, 0, 0);
}
}
//quarta parte
c= 4*h;
posX = c;
posY = c;
fill(0);
for(int m = 0; m<=3; m++){
rect(posX, posY, c, c);
posX +=h;
posY +=h;
c -=h;
if(m%2==0){
fill(125,0,0);
}else{
fill(0);
}
}
}
void draw(){
int localX = 0;
int localY = 0;
int tamanho = 40;
for(int j=0; j<=4; j++){
luizSacliotto(tamanho, localX, localY);
localX += 8*tamanho;
tamanho+= tamanho;
}
}