Skip to content

Instantly share code, notes, and snippets.

@edmorais
Last active October 18, 2016 03:16
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save edmorais/afcc69afafd5f2dc83ac4c3cf4395c6b to your computer and use it in GitHub Desktop.
Save edmorais/afcc69afafd5f2dc83ac4c3cf4395c6b to your computer and use it in GitHub Desktop.
Reproduz o 'Wall Drawing #392' de Sol LeWitt (1983) e no final grava uma imagem. http://www.openprocessing.org/sketch/348952
/*_ ___ ___ ___ __ _ __
| | / __|_ _|_ ) \/ |/ /
| |__\__ \| | / / () | / _ \
|____|___/___/___\__/|_\___/
Aula de 18/04/2016:
Reproduz o 'Wall Drawing #392' de Sol LeWitt (1983) e no final grava uma imagem.
Por Eduardo Morais / FBAUP - www.eduardomorais.pt/fbaup/
*/
/*
Declarações de variáveis:
*/
int grelha = 40; // tamanho de cada quadrícula da nossa grelha.
int cx = 0;
int cy = 0; // coordenadas X,Y de origem da quadrícula a desenhar.
/*
Função setup():
Executada automaticamente no início do programa:
*/
void setup() {
size(800, 600); // tamanho da janela em pixels.
background(255); // cor de fundo (em escala de cinza).
strokeWeight(2); // largura do traço.
smooth(); // activa o 'anti-aliasing' (melhor qualidade de imagem).
}
/*
Função draw():
Executada repetidamente a cada 'frame'/fotograma de animação.
*/
void draw() {
/*
Se a quadrícula a desenhar ainda tiver uma origem visível (menor que a altura da janela):
*/
if (cy < height) {
/*
Sorteamos um número entre 0 e 3 (inclusivé).
a função random produz um float, que arredondamos para um int.
(abreviamos aquilo que no programa anterior fazíamos em dois passos)
*/
int sorte = round(random(0, 3));
// https://www.processing.org/reference/random_.html
// https://www.processing.org/reference/round_.html
/*
Agora, conforme o número sorteado...
*/
if (sorte == 0) {
stroke(0, 80, 200); // cor RGB.
// vamos desenhar uma linha 'decrescente' (\) -
// os pixels de início (x, y) são as coordenadas actuais,
// para as coordenadas de fim, somámos o tamanho da grelha às coordenadas de início:
line(cx, cy, cx+grelha, cy+grelha);
}
if (sorte == 1) {
stroke(200, 40, 40); // cor RGB.
// para desenhar uma linha 'crescente' (/)
// bastará trocar as coordenadas x de início (agora mais abaixo) pelas de fim (agora mais acima):
line(cx+grelha, cy, cx, cy+grelha);
}
if (sorte == 2) {
stroke(200, 200, 40); // cor RGB.
// vamos desenhar uma linha vertical.
// as coordenadas x são iguais no início e no fim -
// somamos meia largura da grelha para centrar a linha:
line(cx+(grelha/2), cy, cx+(grelha/2), cy+grelha);
}
if (sorte == 3) {
stroke(40, 160, 100); // cor RGB.
// vamos desenhar uma linha horizontal.
// as coordenadas y são iguais no início e no fim -
// somamos meia largura da grelha para centrar a linha:
line(cx, cy+(grelha/2), cx+grelha, cy+(grelha/2));
}
/*
Já desenhámos na quadrícula de origem cx, cy.
Agora vamos avançar o cx para a próxima vez que o draw() correr...
*/
cx = cx + grelha;
/*
... ou caso a quadrícula tenha origem fora da largura da janela, vamos para o início da fila de baixo:
*/
if (cx > width) {
cx = 0;
cy = cy + grelha;
}
/*
Mas se tivermos chegado ao final da janela:
*/
} else {
save("imagem.jpg"); // grava imagem na pasta do sketch.
stop(); // pára o programa.
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment