em anexo - Bruno Campagnolo de Paula

Propaganda
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
Download