Last active
October 18, 2016 03:16
-
-
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
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/*_ ___ ___ ___ __ _ __ | |
| | / __|_ _|_ ) \/ |/ / | |
| |__\__ \| | / / () | / _ \ | |
|____|___/___/___\__/|_\___/ | |
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