Last active
April 22, 2016 16:04
-
-
Save edmorais/839a05f7e8f16cdc2380bd0cf22e07e9 to your computer and use it in GitHub Desktop.
Pequena ferramenta de desenho com controlos de teclado. http://www.openprocessing.org/sketch/346629
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: | |
Pequena ferramenta de desenho com controlos de teclado. | |
Por Eduardo Morais / FBAUP - www.eduardomorais.pt/fbaup/ | |
*/ | |
/* | |
Declarações de variáveis: | |
*/ | |
color cor1 = color(255, 192); | |
color cor2 = color(255, 255, 0, 192); | |
color cor3 = color(255, 0, 255, 192); | |
color cor4 = color(0, 255, 255, 192); // 'paleta' de 4 cores à escolha. | |
color cor; // cor actualmente seleccionada. | |
boolean efeito = true; // determina se o efeito de desvanecer está ligado. | |
int contador = 1; // contador de ficheiros gravados. | |
/* | |
Função setup(): | |
Executada automaticamente no início do programa: | |
*/ | |
void setup() { | |
// já não é preciso explicar estas funções: | |
size(600, 600); | |
background(0); | |
smooth(); | |
cor = cor1; // seleccionamos uma cor inicial. | |
} | |
/* | |
Função draw(): | |
Executada repetidamente a cada 'frame'/fotograma de animação. | |
*/ | |
void draw() { | |
/* | |
Se o efeito de desvanecimento estiver ligado, desenhamos um rectângulo muito transparente a tapar toda a janela: | |
*/ | |
if (efeito == true) { | |
noStroke(); // não queremos que o rectângulo tenha contornos. | |
fill(0, 3); | |
rect(0, 0, width, height); | |
} | |
/* | |
O Processing dá-nos várias variáveis automáticamente preenchidas que descrevem o estado do rato. | |
Se esivermos a carregar no botão esquerdo: | |
*/ | |
if (mousePressed == true) { | |
// vamos determinar a distância entre as coordenadas do rato no anterior (pmouse) e actual draw(): | |
float d = dist(pmouseX, pmouseY, mouseX, mouseY); | |
// vamos 'mapear' a distância entre 1 e 30 para um valor entre 20 e 1. | |
// https://processing.org/reference/map_.html | |
float l = abs(map(d, 1, 30, 20, 1)); | |
// queremos que a grossura do traço varie inversamente com a velocidade do rato (distâncias maiores = traço mais fino): | |
strokeWeight(l); | |
stroke(cor); // seleccionamos a cor actual como cor de traço. | |
// desenhamos uma linha entre as coordenadas anteriores e actuais do rato (com um random para tornar o traço mais impreciso): | |
line(pmouseX, pmouseY, mouseX+random(-5, 5), mouseY+random(-5, 5)); | |
} | |
} | |
/* | |
Função keyPressed(): | |
Executada automaticamente quando carregamos numa tecla! | |
Dá-nos a variável key com a tecla que carregámos. | |
*/ | |
void keyPressed() { | |
/* | |
Vamos fazer as teclas 1-4 escolher a cor actual (copiamos o valor de uma das variáveis que define a nossa 'paleta'): | |
*/ | |
if (key == '1') cor = cor1; | |
if (key == '2') cor = cor2; | |
if (key == '3') cor = cor3; | |
if (key == '4') cor = cor4; | |
/* | |
Vamos por a tecla C a limpar o ecrã, prevendo maiúsculas - caso o caps lock esteja ligado - e minúsculas: | |
*/ | |
if (key == 'c' || key=='C') background(0); | |
/* | |
A tecla E liga ou desliga o efeito de desvanecimento. | |
Para tal invertemos o valor da variável booleana (true/false) com o operador de negação '!': | |
*/ | |
if (key == 'e' || key=='E') efeito = !efeito; | |
/* | |
A tecla S grava uma imagem na pasta do sketch. | |
Incrementamos o contador para que a imagem seguinte que gravarmos tenha outro nome: | |
*/ | |
if (key == 's' || key=='S') { | |
save("imagem"+contador+".png"); | |
contador++; // igual a: contador = contador + 1; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment