Bruno C. de Paula Introdução à Programação Funções Matemáticas 1º Semestre 2009 > PUCPR > Design Digital Resumo da aula O objetivo hoje é conhecer algumas funções matemáticas e sua aplicação na programação gráfica; Motivação Vamos ver que tipo de arredondamentos, comparações, restrições, comparações e transformações podem ser feitas com números e onde tais operações se aplicam em situações reais de: – Movimentação; – Desenho; – Texturização; – Etc. 31/05/2017 3 Sintaxe introduzida: comparação entre números min (en/pt): obtém o mínimo entre 2 ou 3 números; max (en/pt): obtém o máximo entre 2 ou 3 números; 31/05/2017 4 Sintaxe Introduzida: restrições de valor abs (en/pt): retorna valor absoluto de um número; ceil (en/pt): arredonda para cima; floor (en/pt): arredonda para baixo; round (en/pt): arredondamento para o inteiro mais próximo; constrain (en/pt): restringe um valor a um intervalo; 31/05/2017 5 Sintaxe introduzida: normalização, mapeamento e interpolação Operações de “regra de 3”; norm (en/pt): Normaliza. Transforma um número de um intervalo para outro entre 0 e 1; map (en/pt): Mapeia. Converte um número de um intervalo para outro; lerp (en/pt): Interpola. Calcula um número entre 2 em um intervalo específico. 31/05/2017 6 Sintaxe introduzida: geração de números aleatórios random (en/pt): devolve um valor pseudo-aleatório; randomSeed (en/pt): escolhe a raiz do número aleatório; noise (en/pt): devolve valor de ruído de Perlin; noiseSeed (en/pt): ajusta a raiz do ruído de Perlin; noiseDetail (en/pt): ajusta o detalhe do ruído de Perlin. 31/05/2017 7 Sintaxe introduzida: expoentes e raízes sq (en/pt): Retorna o quadrado de um número; sqrt (en/pt): Calcula a raiz quadrada de um número; pow (en/pt): Devolve um número elevado a um expoente (potência). 31/05/2017 8 Sintaxe introduzida: funções diversas dist (en/pt): Calcula a distância entre 2 pontos; mag (en/pt): Calcula o comprimento de um vetor. Mesmo que dist(0,0,x,y); exp (en/pt): Retorna e (2.71...) elevado à uma potência; log (en/pt): Calcula o logaritmo neperiano de um número; 31/05/2017 9 Restrições e comparações min, max, abs, ceil, floor, round float a = min(2.3, 3.1); // valor mínimo println(a); // Exibe 2.3; float b = max(2.3, 3.1); // valor máx println(b); // Exibe 3.1; float c = abs(-12); // valor absoluto println(c); // Exibe 12.0 float d = ceil(12.2); // arredonda cima println(d); // Exibe 13 31/05/2017 10 constrain (valor, mínimo, máximo) int f = constrain(5, 10, 20); println(f); // Exibe 10 int g = constrain(30, 10, 20); println(g); // Exibe 20 Útil para restringir movimento do mouse; 31/05/2017 11 Mouse restringido via constrain 31/05/2017 12 Normalização Regra de três; Conversão de um valor para um intervalo entre 0 e 1; float h = norm(0, 0, 255); println(h); // Exibe 0; float i = norm(127, 0, 255); println(i); // Exibe 0.49... float(j) = norm(255, 0, 255); println(j); // Exibe 1. 31/05/2017 13 Normalização 31/05/2017 14 Mapeamento Regra de três; Conversão de um valor de um intervalo para outro; float k = map(20, 0, 100, 0, 255); println(k); // Exibe 51.0 31/05/2017 15 Mapeamento 31/05/2017 16 Mapeamento 31/05/2017 17 Mapeamento e restrição (1) 31/05/2017 18 31/05/2017 19 Geração de números pseudoaleatórios Permite que se dê a ilusão da remoção do determinismo de um programa; random(min, max): – Retorna um número pseudo-aleatório entre os 2 intervalos; float m = random(-10,10); println(m); // Não sei! Com certeza exibe um número entre -10 e 10 31/05/2017 20 Pontos aleatórios 31/05/2017 21 Linhas aleatórias 31/05/2017 22 Retângulos aleatórios 31/05/2017 23 + Linhas aleatórias 31/05/2017 24 Movimento Browniano 31/05/2017 25