A obra que escolhi foi essa
escultura, Concretion 8469 de Luiz Sacliotto, ano 1984. Feita de alumínio, é composta de duas chapas
padronizadas, interligadas por uma terceira chapa em forma de paralelogramo.
Abaixo, temos um desenho com a análise
geométrica das chapas padronizadas:
São formadas por 10 pedaços de
alumínio cortados geometricamente, dispostos de forma que nos faz lembrar o
formato de um losango de altura e largura iguais (da forma do desenho acima).
Considerando que m=h/10 (módulo igual à altura dividido por dez), os pedaços de
alumino podem ser formados geometricamente por retângulos e triângulos
retângulos. A composição geométrica de cada um desses pedaços (contando de cima
para baixo) é a seguinte:
·
1 triângulo retângulo de catetos = m;
·
1 triângulo retângulo de catetos = m e 1
quadrado de lado=m;
·
1 retângulo de altura=m e largura=2m e 1
triângulo retângulo de catetos = m;
·
1 triângulo retângulo de cateto =m e um
retângulo de altura=m e largura=3m;
·
1 retângulo de altura=m e largura=4m e 1
triângulo retângulo de catetos = m;
·
1 triângulo retângulo de catetos = m e 1
retângulo de altura=m e largura=4m;
·
1 retângulo de altura=m e largura=3m e 1
triângulo retângulo de catetos = m;
·
1 triângulo retângulo de catetos = m e 1
retângulo de altura=m e largura=2m;
·
1 quadrado de lado=m e 1 triângulo retângulo de
catetos = m;
·
1 triângulo retângulo de catetos = m;
Minha aplicação desenvolvida no
Processing se apropria da forma geométrica dessa chapa principal da escultura.
Para isso, criei três funções: trianguloRetanguloA(x,y,l), trianguloRetanguloB(x,y,l),
e Sacliotto(x,y,h). As duas primeiras foram criadas para auxiliar na construção
do padrão, enquanto a terceira é o padrão em si.
trianguloRetanguloA(x,y,l) cria
um triângulo retângulo com origem (x,y) no ângulo reto. Caso o valor de l seja
positivo, a hipotenusa fica virada para o 4° quadrante. Se l for negativo, a
hipotenusa fica virada para o 2° quadrante.
trianguloRetanguloB(x,y,l) também
cria um triângulo retângulo com origem (x,y) no ângulo reto. Caso o valor de l
seja positivo, a hipotenusa fica virada para o 3° quadrante. Se l for negativo,
a hipotenusa fica virada para o 1° quadrante.
Sacliotto(x,y,h) cria o padrão da
chapa principal da escultura na posição (x,y) e com altura h, levando em
consideração a análise geométrica feita.
Com a forma apropriada da
escultura, desenvolvi uma aplicação que cria uma tecelagem com o padrão na cor
preta e o mesmo padrão na cor branca, que preenchem a tela da aplicação.
Resultado final:
CÓDIGO DA APLICAÇÃO COMPLETO E COMENTADO:
void
trianguloRetanguloA(int x, int y, int l)
// desenha triangulo retangulo no
ponto(x,y)com origem no angulo reto.
{
triangle(x, y, x, y+l, x+l, y);
}
void
trianguloRetanguloB(int x, int y, int l)
// desenha triangulo retangulo no
ponto(x,y)com origem no angulo reto.
{
triangle(x, y, x, y+l, x-l, y);
}
void
Sacliotto(int x, int y, int h)
// Cria o padrão de tamanho h nas
coordenadas (x,y), de acordo com a análise geométrica.
{
int
m=h/10;//Definindo o módulo.
//Pedaços do lado
direito:
trianguloRetanguloB(x,
y-4*m, -m);
rect(x, y-3*m, 2*m, m);
trianguloRetanguloB(x+2*m, y-2*m, -m);
rect(x, y-m, 4*m, m);
trianguloRetanguloB(x+4*m, y, -m);
rect(x, y+m, 3*m, m);
trianguloRetanguloA(x+3*m, y+m, m);
rect(x, y+3*m, m, m);
trianguloRetanguloA(x+m, y+3*m, m);
//Pedaços do lado
esquerdo:
rect(x-m, y-4*m, m, m);
trianguloRetanguloA(x-m, y-3*m, -m);
rect(x-3*m, y-2*m, 3*m, m);
trianguloRetanguloA(x-3*m, y-m, -m);
rect(x-4*m, y, 4*m, m);
trianguloRetanguloB(x-4*m, y, m);
rect(x-2*m, y+2*m, 2*m, m);
trianguloRetanguloB(x-2*m, y+2*m, m);
trianguloRetanguloB(x, y+4*m, m);
}
void setup() {
size(500, 500);
//Definindo o tamanho da tela da aplicação.
noStroke();
fill(0);
background(128);
}
int x=0;
int y=0;
int h=100;// Definindo o tamanho dos padrões.
void draw()
{
fill(0);
Sacliotto(x, y, h);
//Cria um padrão preto na
posição(x,y).
fill(255);
Sacliotto(x+h/2,
y+h/2, h);
/*Cria um padrão
branco na posição (x+h/2,y+h/2).
Dessa forma, os
padrões brancos ficam sempre posicionados
entre 4 padrões
pretos, e vice versa.*/
x+=h;
// Incrementa x em
h. Dessa forma, o padrão repete-se horizontalmente.
if (x>width+h) {
x=0;
y+=h;
}
/* Incrementa y em h
quando x>largura+h. Dessa forma, garantimos que
independentemente
do tamanho da tela da aplicação, o padrão se repita
horizontalmente e
verticalmente também, preenchendo completamente a tela.*/
if (y>height && x>width) {
stop();
}
/* Para a aplicação
quando y>altura e x>largura da tela da aplicação,
ou seja, quando preencher completamente a tela*/
}