Informática para Ciências e Engenharias (B)...

79
Informática para Ciências e Engenharias (B) 2015/16 Teórica 6

Transcript of Informática para Ciências e Engenharias (B)...

Page 1: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Informática para Ciências e Engenharias (B)

2015/16

Teórica 6

Page 2: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Na aula de hoje

l  Representação de imagens •  pixels, sistema RGB

l  Gráficos em MATLAB •  Gráficos simples •  Imagens 2D

•  Exemplo: difusão •  Gráficos 3D

•  Exemplo: simulação estocástica de um incêndio

l  (Revisões)

Page 3: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Ecrã, Imagens e Pixels

Ecrã, imagens e pixels Ecrã, imagens e pixels

Page 4: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Ecrã, Imagens e Pixels

l  Representação de imagens •  pixels, sistema RGB

l  O ecrã é uma matriz de picture elements (pixels) •  a resolução é normalmente indicada pelo seu número de

linhas x colunas: •  1024 x 768, 800 x 600, ... (4:3), •  1280 x 720, 1366 x 178, 1920×1080, … (16:9)

•  cada imagem é também uma matriz de pixels

Page 5: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Imagem e Pixels

Page 6: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Imagens e Pixels

l  Caracteres são representados por pixels

Page 7: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Cores

l  No formato True Color, cada pixel tem 3 bytes (24 bits) para representar a cor •  RGB

•  1 byte (8 bits) para vermelho (Red) •  1 byte (8 bits) para verde (Green) •  1 byte (8 bits) para azul (Blue)

•  Hexadecimal •  números representados com 0, 1, …, 9, A, …, F •  dois dígitos = 16*16 = 256 combinações ( de 00 a FF)

Page 8: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Cores

Page 9: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Cores

l  “Cubo das cores” •  (0,0,0) preto •  (255,255,255) branco •  (255, 0, 0) vermelho •  (0, 255, 0) verde •  (0, 0, 255) azul

http://en.wikipedia.org/wiki/RGB_color_model

Page 10: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Manipulação do Ecrã

l  CPU dá instruções de escrita

l  na RAM de vídeo •  normalmente na placa gráfica. •  3 bytes por pixel em “true color”

Page 11: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Manipulação do Ecrã

l  O controlador do ecrã na placa gráfica actualiza os pixels no ecrã •  tipicamente 50 vezes por segundo

(ou mais)

Page 12: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Gráficos 2D

Gráficos em MATLAB: 2D Ecrã, imagens e pixels

Page 13: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Gráficos 2D

l  Gráficos simples podem ser feitos em MATLAB através da função pre-definida plot.

l  function plot(x, y, opts)

•  x é um vector com as abcissas •  y é um vector com as coordenadas •  opts é uma string especificando símbolos e cores

l  Nota: Existem várias variantes desta função pré-definida/comando, que podem ser vista do manual.

Page 14: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Gráficos 2D

Exemplo:

l  Gráfico do seno

octave:1> x=-pi:0.1:pi; octave:2> y=sin(x); octave:3> plot(x,y,'*-r') octave:4>

Page 15: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Gráficos 2D

Exemplo:

l  Gráfico do seno

octave:1> x=-pi:0.1:pi; octave:2> z=-sin(x); octave:3> plot(x,z,’+b') octave:4>

Page 16: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Gráficos 2D

Exemplo:

l  Juntar gráficos

octave:3> plot(x,y,'*-r') octave:4> plot(x,z,’+b')

Page 17: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Gráficos 2D

l  Hold on •  Mantém o gráfico anterior

l  Adicionar legendas

octave:1> x=-pi:0.1:pi; octave:2> y=sin(x); octave:3> plot(x,y,'*-r’) octave:4> plot(x,-y,'+b; -seno(x);') octave:5> hold on octave:6> plot(x,y,'*-r; seno(x);’)

Page 18: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Gráficos 2D

l  Em resumo: •  Gráficos simples podem ser feitos em MATLAB através da

função pre-definida •  plot(x, y, opts)

l  Para melhorar o aspecto gráfico, podem ainda ser usados os comandos •  Title(titulo da imagem); •  Xlabel(legenda do eixo dos xx); •  Ylabel(legenda do eixo dos yy);

Page 19: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Gráficos 2D

l  Nota: •  Em MATLAB (MATrix LABoratory) muitas operações

comuns são estendidas a matrizes e vectores. •  No entanto, isto não é verdade na generalidade das

linguagens de programação.

Page 20: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Gráficos 2D

l  “Manchas gráficas” podem ser especificadas em MATLAB através da função pre-definida fill.

l  função fill(vx, vy, vCor) •  vx vector com coordenadas x de 4 pontos •  vy vector com coordenadas y de 4 pontos •  vCor vector com 3 valores RGB, entre 0 e 1

Page 21: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Gráficos 2D

Page 22: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Gráficos 2D

l  colormap e image •  com colormap definimos um mapa de cores.

•  Matriz de 3 colunas, com uma cor RGB por linha •  a função image representa uma matriz com as cores

definidas •  Cada célula da matriz indica o índice (linha) da cor no

mapa de cores.

Page 23: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Gráficos 2D

mapaCores=([1,0,0;0,1,0;0,0,1]) imagem=floor(rand(50)*3)+1; colormap(mapaCores) image(imagem)

Page 24: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Simulação de Difusão

Exemplo 1: Simulação de Difusão (em 2D)

Page 25: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Simulação de Difusão

l  Vamos simular a difusão de X numa solução (em 2D) •  Representação:

•  Uma matriz (de pixels) com concentrações •  Simulação:

•  Discreta: Simular a difusão por passos •  Em cada passo de simulação:

•  calcular quanto difunde para os 8 vizinhos •  Actualizar a matriz de concentrações

Page 26: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Simulação de Difusão

l  Vamos simular a difusão de X numa solução (em 2D) •  Representação:

•  Uma matriz (de pixels) com concentrações •  Simulação:

•  Discreta: Simular a difusão por passos •  Condição fronteira (não há 8 vizinhos)

•  As células nos extremos são constantes •  (há alternativas, como usar uma fronteira periódica)

Page 27: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Simulação de Difusão

l  Vamos usar 2 funções :

•  é bom ter os cálculos numa parte: function novaConc = passodifusao(matConc, coefDif)

•  função para calcular um passo de difusão

•  e os gráficos noutra: function difusao(matConcs, coefDif, iteracoes)

•  chama a anterior a cada passo e desenha o gráfico

Page 28: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Simulação de Difusão

Page 29: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Simulação de Difusão

Normalmente evita-se aninhar muitos ciclos remetendo parte para outra função. Mas este caso exigiria copiar toda a matriz matConc, pelo que é mais eficiente deixar na mesma função.

Page 30: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Simulação de Difusão

A indentação é muito importante nestes casos. Sem indentação correcta o código fica ilegível e muito mais propenso a erros (por exemplo, faltar o end).

Page 31: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Simulação de Difusão

Page 32: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Simulação de Difusão

Para todas as células (l,c) internas da matriz

Page 33: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Simulação de Difusão

Matriz de 3x3 centrada em (l,c)

Page 34: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Simulação de Difusão

Para todos os vizinhos da célula em (l, c) excepto o próprio)

Page 35: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Simulação de Difusão

Calcular quanto se difunde e actualizar na matriz da nova concentração. Actualizamos na nova para não alterar os valores a usar para as outras células.

Page 36: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Simulação de Difusão

l  testar passodifusao

octave:12> testMat=zeros(5); octave:13> testMat(3,3)=1 testMat = 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0

octave:14> tesMat=passodifusao(testMat,0.1) tesMat = 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.05000 0.10000 0.05000 0.00000 0.00000 0.10000 0.40000 0.10000 0.00000 0.00000 0.05000 0.10000 0.05000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000

Page 37: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Simulação de Difusão

Page 38: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Simulação de Difusão

Gradiente de 100 tons de branco até azul

Page 39: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Simulação de Difusão

Para cada iteração •  calcular um passo de difusão •  desenhar a imagem. •  comando axis square evita a distorção da imagem •  refresh obriga a desenhar o gráfico durante a simulação.

Page 40: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Simulação de Difusão

l  Gota

concs=zeros(30); concs(14:16,14:16)=500; difusao(concs,100);

Page 41: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Simulação de Difusão

l  Salpicos

concs=zeros(30); concs(2:end-1,2:end-1)=... (rand(28)>0.9)*500; difusao(concs,0.05,100);

Page 42: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Simulação de Difusão

l  Gravar o resultado numa série de imagens •  Nota: print não faz parte da matéria print(nome) (sprintf veremos mais tarde)

•  Na função difusao

for f=0:iteracoes image(matConcs); axis square; refresh; figs = strcat(name,'%03i.png'); print(sprintf(figs,f)); matConcs=passodifusao(matConcs,coefDif); end

Page 43: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Gráficos 3D

Gráficos em MATLAB: 3D

Page 44: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Gráficos 3D

l  Para fazer um gráfico em 3D precisamos de •  Matrizes X, Y

•  Formam a “grelha de base” (mesh grid) •  Matriz Z

•  associa um valor z a cada par (x,y)

x = 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5

y = 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 4 4 4 4 4 5 5 5 5 5

z = 5 4 1 8 10 7 10 7 10 6 9 6 6 7 5 4 3 7 7 2 7 1 5 3 9

Page 45: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Gráficos 3D

l  Nota: •  matrizes são indexadas por (linha, coluna) •  mas x varia na horizontal e y na vertical •  logo, x é a coluna e y a linha

•  é preciso atenção a esta convenção

x = 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5

y = 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 4 4 4 4 4 5 5 5 5 5

z = 5 4 1 8 10 7 10 7 10 6 9 6 6 7 5 4 3 7 7 2 7 1 5 3 9

Page 46: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Gráficos 3D

l  Para fazer um gráfico em 3D precisamos de •  Matrizes X, Y, Z

•  X e Y podem ser criadas com a função meshgrid e.g. [xx,yy] = meshgrid(1:5, 1:5) •  Chamar uma das funções

•  mesh(x,y,z) traça uma rede 3D •  surf(x,y,z) traça uma superfície 3D

Page 47: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Gráficos 3D

l  Para fazer um gráfico em 3D ...

•  mesh(x,y,z) •  traça uma rede 3D

•  surf(x,y,z) •  traça uma superfície

3D

Page 48: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Gráficos 3D

l  Especificar cores: •  Podemos acrescentar uma matriz para indicar quais as

cores a usar •  tem de ter a mesma dimensão das outras •  as cores são as do colormap corrente, interpoladas. •  o menor valor da matriz C corresponde à primeira cor

do mapa de cores •  o maior valor da matriz C corresponde à última cor do

mapa de cores •  os valores intermédios são interpolados

Page 49: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Gráficos 3D

c=ones(5) c(1,1)=2; c(4,4)=3; colormap([1,0,0;0,1,0;0,0,1]); surf(x,y,z,c)

Célula (1,1) (cor 2 do color map) Green -[0,1,0])

Célula (4,4) (cor 3 do color map) Blue -[0,0,1])

Page 50: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Gráficos 3D

l  Para mudar a orientação: •  view(azimute, elevação)

•  azimute e elevação em graus •  por omissão: •  Azimute = -37.5º •  Elevação = 30º

Page 51: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Gráficos 3D

l  Para rodar o ponto de vista: •  Com os ponteiros do relógio: aumentar azimute

>> view(-20,+30)

•  Contra os ponteiros do relógio: diminuir azimute

>> view(-60,+30)

Page 52: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Gráficos 3D

l  Para variar a elevação: •  Ver mais “de baixo”: diminuir o ângulo de elevação

>> view(-37.5,+15)

•  Ver mais “de cima”: aumentar o ângulo de elevação

>> view(-37.5,+90)

Page 53: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Simulação de um Incêndio

Exemplo 2: Simulação de um Incêndio (em 3D)

Page 54: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Simulação de um Incêndio

l  Objectivo •  Modelando a elevação do terreno com uma matriz 3D

Page 55: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Simulação de um Incêndio

l  Objectivo •  Modelando a elevação do terreno com uma matriz 3D •  Queremos simular como um incêndio se propaga no terreno

•  Considerando alguns factores •  Pode haver vento •  O declive pode fazer diferença

Page 56: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Simulação de um Incêndio

l  Simulação •  numa matriz, cada célula indica que a vegetação está

•  1- normal •  2- queimada •  3- a arder

•  a que está a arder pode propagar o fogo aos 8 vizinhos •  com uma probabilidade que depende do •  do declive, •  do vento, •  ...

Page 57: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Simulação de um Incêndio

l  Simulação •  numa matriz, cada célula indica que a vegetação está

•  1- normal •  2- queimada •  3- a arder

•  a probabilidade de propagar o fogo a cada vizinho pode ser dada por •  uma matriz de 3x3 (pontos cardiais e colaterais) •  assim podemos simular vento ou outros factores

dando valores diferentes para direcções diferentes •  modificada pelo declive

Page 58: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Simulação de um Incêndio

l  Simulação •  probabilidade de propagar o fogo:

•  modificada pelo declive •  somar um factor dependente da diferença de elevação •  mais provável propagar-se a subir

0.10000 0.14000 0.10000 0.14000 0.00000 0.14000 0.10000 0.14000 0.10000

Page 59: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Simulação de um Incêndio

l  Simulação •  a cada iteração da simulação temos de

•  propagar o fogo de todas as áreas a arder •  testar as áreas a arder para determinar quais se

apagam •  para a simulação temos de

•  calcular cada iteração •  representar graficamente o progresso do incêndio

•  3 funções

Page 60: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Simulação de um Incêndio

l  Simulação •  Assinaturas das funções:

•  function novoEstado = propaga(estado, ... mapa, probPropagar, efeitoDeclive)

•  function estado = extingue(estado, probApagar)

•  function incendio(mapa, focoInicial, ... probPropagar, probApagar, ... efeitoDeclive, iteracoes)

Page 61: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Simulação de um Incêndio

l  Propagar os focos do incêndio

Page 62: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Para todas as células internas da matriz que estejam a arder. Nota: Não queremos propagar as da fronteira para evitar sair dos limites da matriz).

Page 63: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Para todos os vizinhos por arder dessa célula. Nota: não precisamos excluir a própria célula porque essa está a arder.

Page 64: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Calculamos a probabilidade de propagação modificando o valor da matriz pelo declive Nota: mais provável propagar-se para cima.

Page 65: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Se propaga, marcamos no novoEstado (e não no estado para evitar propagar imediatamente esse novo foco). Nota: rand devolve um valor pseudo-aleatório entre 0 e 1.

Page 66: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Simulação de um Incêndio

l  Extinguir as zonas a arder

Page 67: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Simulação de um Incêndio

l  Para simular •  preparar o gráfico •  ciclo das iterações

•  propagar •  extinguir •  desenhar

Page 68: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Simulação de um Incêndio

l  Simular o incêndio

Page 69: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Simulação de um Incêndio

Cria a matriz com o estado inicial da vegetação do mesmo tamanho da matriz com a elevação do terreno. Podia ser: ones(size(mapa,1),size(mapa,2)) Depois inicia o incêndio.

Page 70: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Simulação de um Incêndio

Prepara as matrizes para o gráfico 3D. Nota: x é colunas, y linhas. Cria o mapa de cores (verde para normal, preto para queimado, laranja para fogo).

Page 71: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Simulação de um Incêndio

A cada iteração propaga e extingue os fogos activos com as probabilidades respectivas.

Page 72: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Simulação de um Incêndio

Depois desenha o gráfico, orienta-o adequadamente ... e força a sua actualização (sem o refresh só veríamos o gráfico no final da simulação)

Page 73: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Simulação de um Incêndio

probPropagar = 0.10000 0.14000 0.10000 0.14000 0.00000 0.14000 0.10000 0.14000 0.10000 efeitoDeclive = 0

l  Sem vento nem declive

Page 74: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Simulação de um Incêndio

probPropagar = 0.10000 0.14000 0.10000 0.14000 0.00000 0.14000 0.10000 0.14000 0.10000 efeitoDeclive = 0.1

l  Sem vento mas com declive

Page 75: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Simulação de um Incêndio

l  Com vento e declive

probPropagar = 0.04000 0.02000 0.04000 0.14000 0.00000 0.14000 0.20000 0.40000 0.20000 efeitoDeclive = 0.1

Page 76: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Resumo

l  Gráficos 2D (pontos, linha) •  plot(vectorX, vectorY, opções) •  hold on, hold off •  Clf

l  Imagens 2D (pontos, linha) •  fill(coordsX, coordsY ,corRGB) •  colormap(matrizCoresRGB) •  image(matrizIndicesCores)

Page 77: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Resumo

l  Gráficos 3D •  meshgrid(x,y), •  mesh ou surf (x,y,z), ou (x,y,z,c) •  view(azimute, elevação)

Page 78: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Para estudar esta aula

l  Manual Octave •  Capítulo 15, plotting

l  MATLAB plotting functions •  http://www.mathworks.com/help/matlab/creating_plots/using-

high-level-plotting-functions.html

l  Por curiosidade (para a próxima aula) •  Método Monte Carlo: •  http://en.wikipedia.org/wiki/Monte_Carlo_method

Page 79: Informática para Ciências e Engenharias (B) 2015/16iceb.ssdi.di.fct.unl.pt/1516/web/resources/iceb_t06.pdf · l Gráficos em MATLAB ... • a resolução é normalmente indicada

Dúvidas ?