Visualização Científica – MAI5015 · 2020. 4. 28. · Interpolação em Células de um Grid...

33
Visualização Científica – MAI5015 Representação de Dados Afonso Paiva ICMC-USP 27 de abril de 2020

Transcript of Visualização Científica – MAI5015 · 2020. 4. 28. · Interpolação em Células de um Grid...

Page 1: Visualização Científica – MAI5015 · 2020. 4. 28. · Interpolação em Células de um Grid Objetivo: dada uma função f i amostrada nos vértices i do grid, queremos calcular

Visualização Científica – MAI5015

Representação de Dados

Afonso Paiva

ICMC-USP

27 de abril de 2020

Page 2: Visualização Científica – MAI5015 · 2020. 4. 28. · Interpolação em Células de um Grid Objetivo: dada uma função f i amostrada nos vértices i do grid, queremos calcular

Interpolação em Células de um Grid

Objetivo: dada uma função fi amostrada nos vértices i do grid, queremos

calcular uma função interpoladora (linear por partes) F nas células do grid.

F(x,y,z)

ξ

η

célula de referênciacélula física

CfCr

Page 3: Visualização Científica – MAI5015 · 2020. 4. 28. · Interpolação em Células de um Grid Objetivo: dada uma função f i amostrada nos vértices i do grid, queremos calcular

Interpolação em Células de um Grid

Objetivo: dada uma função fi amostrada nos vértices i do grid, queremos

calcular uma função interpoladora (linear por partes) F nas células do grid.

F(x,y,z)

ξ

η

célula de referênciacélula física

CfCr

Célula de Referência (Cr )

I Vértices: v1 = (0, 0), v2 = (1, 0), v3 = (1, 1), v4 = (0, 1)

I Coordenadas: (⇠, ⌘)

I Função base local: �11,�

12,�

13,�

14 : Cr = [0, 1]2 ! R

Page 4: Visualização Científica – MAI5015 · 2020. 4. 28. · Interpolação em Células de um Grid Objetivo: dada uma função f i amostrada nos vértices i do grid, queremos calcular

Interpolação em Células de um Grid

Objetivo: dada uma função fi amostrada nos vértices i do grid, queremos

calcular uma função interpoladora (linear por partes) F nas células do grid.

F(x,y,z)

ξ

η

célula de referênciacélula física

CfCr

Célula Física (Cf )

I Vértices: p1, p2, p3, p4

I Coordenadas: (x , y , z)

I Função base global: �11,�

12,�

13,�

14 : Cf ⇢ R3 ! R

Page 5: Visualização Científica – MAI5015 · 2020. 4. 28. · Interpolação em Células de um Grid Objetivo: dada uma função f i amostrada nos vértices i do grid, queremos calcular

Interpolação em Células de um Grid

Objetivo: dada uma função fi amostrada nos vértices i do grid, queremos

calcular uma função interpoladora (linear por partes) F nas células do grid.

F(x,y,z)

ξ

η

célula de referênciacélula física

CfCr

Célula Física (Cf )

I Interpolação: F =P4

i=1 fi�1i

I Restrição: F (pj) = fj

I Ortogonalidade: �1i (pj) = �ij

Page 6: Visualização Científica – MAI5015 · 2020. 4. 28. · Interpolação em Células de um Grid Objetivo: dada uma função f i amostrada nos vértices i do grid, queremos calcular

Interpolação Linear

a

bx

Qualquer ponto x no segmento ab pode ser obtido da seguinte forma:

x = (1 � t)a + tb , com t 2 [0, 1]

Agora, dado um ponto x como obter o parâmetro t?

t =kx � akkb � ak

Page 7: Visualização Científica – MAI5015 · 2020. 4. 28. · Interpolação em Células de um Grid Objetivo: dada uma função f i amostrada nos vértices i do grid, queremos calcular

Interpolação Bilinear

Precisamos mapear Cr em Cf = ABCD usando trans-

formações conhecidas como projetores.

I Mapear os lados ⇠ = 0 e ⇠ = 1 nos lados

AB ⌘ r(0, ⌘) e CD ⌘ r(1, ⌘), respectivamente,

usando o projetor P⇠ definido como:

P⇠(r) = P⇠(⇠, ⌘) = (1 � ⇠) r(0, ⌘) + ⇠ r(1, ⌘)

I Mapear os lados ⌘ = 0 e ⌘ = 1 nos lados

AC ⌘ r(⇠, 0) e BD ⌘ r(⇠, 1), respectivamente,

usando o projetor P⌘ definido como:

P⌘(r) = P⌘(⇠, ⌘) = (1 � ⌘) r(⇠, 0) + ⌘ r(⇠, 1)x

y

0

1

1 ξ

η

B

A

C

D

Page 8: Visualização Científica – MAI5015 · 2020. 4. 28. · Interpolação em Células de um Grid Objetivo: dada uma função f i amostrada nos vértices i do grid, queremos calcular

Interpolação Bilinear

A interpolação bilinear é feita usando a transformação

composta P⌘P⇠:

P⌘(P⇠(r)) = P⌘((1 � ⇠) r(0, ⌘) + ⇠ r(1, ⌘))

= (1 � ⇠)P⌘(r(0, ⌘)) + ⇠ P⌘(r(1, ⌘))

= (1 � ⇠) [(1 � ⌘) r(0, 0) + ⌘ r(0, 1)]

+ ⇠ [(1 � ⌘) r(1, 0) + ⌘ r(1, 1)]

= (1 � ⇠) (1 � ⌘) r(0, 0) + (1 � ⇠) ⌘ r(0, 1)

+ ⇠ (1 � ⌘) r(1, 0) + ⇠ ⌘ r(1, 1)

= (1 � ⇠) (1 � ⌘)A + (1 � ⇠) ⌘B

+ ⇠ (1 � ⌘)C + ⇠ ⌘D

Problema: apenas os vértices A, B, C e D são pre-

servados, mas as fronteiras de Cf são substituídas por

segmentos de reta.

x

y

0

1

1 ξ

η

B

A

C

D

Page 9: Visualização Científica – MAI5015 · 2020. 4. 28. · Interpolação em Células de um Grid Objetivo: dada uma função f i amostrada nos vértices i do grid, queremos calcular

Interpolação Bilinear

Se p = (⇠, ⌘) 2 Cr , então a função interpoladora pode ser escrita como:

F (⇠, ⌘) =4X

i=1

fi �1i (⇠, ⌘) com

�11(⇠, ⌘) = (1 � ⇠)(1 � ⌘)

�12(⇠, ⌘) = (1 � ⇠)⌘

�13(⇠, ⌘) = ⇠⌘

�14(⇠, ⌘) = ⇠(1 � ⌘)

ξξ ξξ

η η η η

Como calcular F (x , y , z) se p = (x , y , z) 2 Cf ?

Page 10: Visualização Científica – MAI5015 · 2020. 4. 28. · Interpolação em Células de um Grid Objetivo: dada uma função f i amostrada nos vértices i do grid, queremos calcular

Putting it all together

F(x,y,z)

ξ

η

célula de referênciacélula física

CfCr

Precisamos definir uma transformação de coordenadas T : [0, 1]2 ! R3

entre as células Cr e Cf , tal que T (vi ) = pi . Se T é linear, temos que:

(x , y , z) = T (⇠, ⌘) =4X

i=1

pi �1i (⇠, ⌘)

Page 11: Visualização Científica – MAI5015 · 2020. 4. 28. · Interpolação em Células de um Grid Objetivo: dada uma função f i amostrada nos vértices i do grid, queremos calcular

Putting it all together

Dada uma célula Cf , podemos construir uma aproximação de classe C1por

partes da seguinte forma:

F (x , y , z) =4X

i=1

fi �1i (x , y , z) com

�1i (x , y , z) =

(�1

j (T�1(x , y , z)) , se (x , y , z) 2 Cf , em que pi = T (vj)

0 , se (x , y , z) /2 Cf

Page 12: Visualização Científica – MAI5015 · 2020. 4. 28. · Interpolação em Células de um Grid Objetivo: dada uma função f i amostrada nos vértices i do grid, queremos calcular

Coordenadas Baricéntricas

DefiniçãoO ponto v é o baricentro dos pontos v1, . . . , vn com pesos w1, . . . ,wn se

somente se

v =w1v1 + · · ·+ wnvn

w1 + · · ·+ wn

Os valores wi são as coordendas baricéntricas de v.

Coordenadas Baricéntricas Normalizadas

�i (v) =wi (v)

w1(v) + · · ·+ wn(v)

Logo, v =P

i �ivi comP

i �i = 1, isto é, uma combinação convexa dos

pontos v1, · · · , vn.

Page 13: Visualização Científica – MAI5015 · 2020. 4. 28. · Interpolação em Células de um Grid Objetivo: dada uma função f i amostrada nos vértices i do grid, queremos calcular

Coordenadas Baricéntricas

DefiniçãoO ponto v é o baricentro dos pontos v1, . . . , vn com pesos w1, . . . ,wn se

somente se

v =w1v1 + · · ·+ wnvn

w1 + · · ·+ wn

Os valores wi são as coordendas baricéntricas de v.

Coordenadas Baricéntricas Normalizadas

�i (v) =wi (v)

w1(v) + · · ·+ wn(v)

Logo, v =P

i �ivi comP

i �i = 1, isto é, uma combinação convexa dos

pontos v1, · · · , vn.

Page 14: Visualização Científica – MAI5015 · 2020. 4. 28. · Interpolação em Células de um Grid Objetivo: dada uma função f i amostrada nos vértices i do grid, queremos calcular

Coordenadas Baricéntricas no Triângulo

v2v1

v3

x

T

Objetivo: dado x 2 T , queremos �1,�2,�3 � 0 tal que:

�1 + �2 + �3 = 1 ,

e

x = �1v1 + �2v2 + �3v3

Page 15: Visualização Científica – MAI5015 · 2020. 4. 28. · Interpolação em Células de um Grid Objetivo: dada uma função f i amostrada nos vértices i do grid, queremos calcular

Coordenadas Baricéntricas no Triângulo

Precisamos resolver o sistema linear de ordem 3:

2

41 1 1

v11 v

12 v

13

v21 v

22 v

23

3

5

2

4�1�2�3

3

5 =

2

41

x1x2

3

5

Pela Regra de Cramer a solução (única) é

�1 =A1

A, �2 =

A2

A, �3 =

A3

A.

v2v1

v3

x

A

A 1

A 3

A 2

Observação: se um �i < 0 então x está fora do triângulo T .

Page 16: Visualização Científica – MAI5015 · 2020. 4. 28. · Interpolação em Células de um Grid Objetivo: dada uma função f i amostrada nos vértices i do grid, queremos calcular

Coordenadas Baricéntricas no Triângulo

Precisamos resolver o sistema linear de ordem 3:

2

41 1 1

v11 v

12 v

13

v21 v

22 v

23

3

5

2

4�1�2�3

3

5 =

2

41

x1x2

3

5

Pela Regra de Cramer a solução (única) é

�1 =A1

A, �2 =

A2

A, �3 =

A3

A.

v2v1

v3

x

A

A 1

A 3

A 2

Observação: se um �i < 0 então x está fora do triângulo T .

Page 17: Visualização Científica – MAI5015 · 2020. 4. 28. · Interpolação em Células de um Grid Objetivo: dada uma função f i amostrada nos vértices i do grid, queremos calcular

Tipos de Células

η

ξ

ξ ξ

ξξ

ξ

η

η

η

η

η

ξ

ζ

ζ

ζ

F (p) =2X

i=1

fi �1i (T

�1lin (p))

Segmentos de Reta

�11(⇠) = 1 � ⇠

�12(⇠) = ⇠

T�1lin (p) =

kp � p1kkp2 � p1k

Page 18: Visualização Científica – MAI5015 · 2020. 4. 28. · Interpolação em Células de um Grid Objetivo: dada uma função f i amostrada nos vértices i do grid, queremos calcular

Tipos de Células

η

ξ

ξ ξ

ξξ

ξ

η

η

η

η

η

ξ

ζ

ζ

ζ

F (p) =3X

i=1

fi �1i (T

�1tri (p))

Triângulos

�11(⇠, ⌘) = 1 � ⇠ � ⌘

�12(⇠, ⌘) = ⇠

�13(⇠, ⌘) = ⌘

T�1tri (p) =

✓A(p, p1, p2)A(p1, p2, p3)

,A(p, p2, p3)A(p1, p2, p3)

◆com A(a, b, c)| {z }

área

=12k(b � a)⇥ (c � a)k

Page 19: Visualização Científica – MAI5015 · 2020. 4. 28. · Interpolação em Células de um Grid Objetivo: dada uma função f i amostrada nos vértices i do grid, queremos calcular

Tipos de Células

η

ξ

ξ ξ

ξξ

ξ

η

η

η

η

η

ξ

ζ

ζ

ζ

F (p) =4X

i=1

fi �1i (T

�1rect(p))

Retângulos

�11(⇠, ⌘) = (1 � ⇠)(1 � ⌘)

�12(⇠, ⌘) = ⇠(1 � ⌘)

�13(⇠, ⌘) = ⇠⌘

�14(⇠, ⌘) = ⌘(1 � ⇠)

T�1rect(p) =

✓(p � p1) · (p2 � p1)

kp2 � p1k2 ,(p � p1) · (p4 � p1)

kp4 � p1k2

Page 20: Visualização Científica – MAI5015 · 2020. 4. 28. · Interpolação em Células de um Grid Objetivo: dada uma função f i amostrada nos vértices i do grid, queremos calcular

Tipos de Células

η

ξ

ξ ξ

ξξ

ξ

η

η

η

η

η

ξ

ζ

ζ

ζ

F (p) =4X

i=1

fi �1i (T

�1tet (p))

Tetraedros

�11(⇠, ⌘, ⇣) = 1 � ⇠ � ⌘ � ⇣

�12(⇠, ⌘, ⇣) = ⇠

�13(⇠, ⌘, ⇣) = ⌘

�14(⇠, ⌘, ⇣) = ⇣

T�1tet (p) =

V (p, p1, p3, p4)

V (p1, p2, p3, p4),

V (p, p1, p2, p4)

V (p1, p2, p3, p4),

V (p, p1, p2, p3)

V (p1, p2, p3, p4)

!com V (a, b, c, d)

| {z }volume

=| det(b � a, c � a, d � a)|

6

Page 21: Visualização Científica – MAI5015 · 2020. 4. 28. · Interpolação em Células de um Grid Objetivo: dada uma função f i amostrada nos vértices i do grid, queremos calcular

Tipos de Células

η

ξ

ξ ξ

ξξ

ξ

η

η

η

η

η

ξ

ζ

ζ

ζ

F (p) =8X

i=1

fi �1i (T

�1box(p))

Hexaedros

�11(⇠, ⌘, ⇣) = (1 � ⇠)(1 � ⌘)(1 � ⇣)

�12(⇠, ⌘, ⇣) = ⇠(1 � ⌘)(1 � ⇣)

�13(⇠, ⌘, ⇣) = ⇠⌘(1 � ⇣)

�14(⇠, ⌘, ⇣) = (1 � ⇠)⌘(1 � ⇣)

�15(⇠, ⌘, ⇣) = (1 � ⇠)(1 � ⌘)⇣

�16(⇠, ⌘, ⇣) = ⇠(1 � ⌘)⇣

�17(⇠, ⌘, ⇣) = ⇠⌘⇣

�18(⇠, ⌘, ⇣) = (1 � ⇠)⌘⇣

T�1box(p) =

✓(p � p1) · (p2 � p1)

kp2 � p1k2 ,(p � p1) · (p4 � p1)

kp4 � p1k2 ,(p � p1) · (p5 � p1)

kp5 � p1k2

Page 22: Visualização Científica – MAI5015 · 2020. 4. 28. · Interpolação em Células de um Grid Objetivo: dada uma função f i amostrada nos vértices i do grid, queremos calcular

Cálculo de Derivadas em Dados Discretos

Um conjunto discreto de dados D = {M, fi ,�i} é formado pelos vértices pi 2 Rde

células Ci de uma malha M, pela função amostrada fi = f (pi ) 2 R e pelas funções

base �i . Assim, vamos calcular a derivada da função interpoladora F (reconstrução

de f ) em D:

F (p) =nX

k=1

fk �k(p)

) @F

@xi(p) =

nX

k=1

fk@�k

@xi(p)

Pelo fato de �k(x1, . . . , xd) = �k(T�1(x1, . . . , xd)) com T�1 : ⇠i = ⇠i (x1, . . . , xd),

temos:

@F

@xi(p) =

nX

k=1

fk@�k

@xi(⇠1, . . . , ⇠d)

Page 23: Visualização Científica – MAI5015 · 2020. 4. 28. · Interpolação em Células de um Grid Objetivo: dada uma função f i amostrada nos vértices i do grid, queremos calcular

Cálculo de Derivadas em Dados Discretos

Um conjunto discreto de dados D = {M, fi ,�i} é formado pelos vértices pi 2 Rde

células Ci de uma malha M, pela função amostrada fi = f (pi ) 2 R e pelas funções

base �i . Assim, vamos calcular a derivada da função interpoladora F (reconstrução

de f ) em D:

F (p) =nX

k=1

fk �k(p) ) @F

@xi(p) =

nX

k=1

fk@�k

@xi(p)

Pelo fato de �k(x1, . . . , xd) = �k(T�1(x1, . . . , xd)) com T�1 : ⇠i = ⇠i (x1, . . . , xd),

temos:

@F

@xi(p) =

nX

k=1

fk@�k

@xi(⇠1, . . . , ⇠d)

Page 24: Visualização Científica – MAI5015 · 2020. 4. 28. · Interpolação em Células de um Grid Objetivo: dada uma função f i amostrada nos vértices i do grid, queremos calcular

Cálculo de Derivadas em Dados Discretos

Um conjunto discreto de dados D = {M, fi ,�i} é formado pelos vértices pi 2 Rde

células Ci de uma malha M, pela função amostrada fi = f (pi ) 2 R e pelas funções

base �i . Assim, vamos calcular a derivada da função interpoladora F (reconstrução

de f ) em D:

F (p) =nX

k=1

fk �k(p) ) @F

@xi(p) =

nX

k=1

fk@�k

@xi(p)

Pelo fato de �k(x1, . . . , xd) = �k(T�1(x1, . . . , xd)) com T�1 : ⇠i = ⇠i (x1, . . . , xd),

temos:

@F

@xi(p) =

nX

k=1

fk@�k

@xi(⇠1, . . . , ⇠d)

Page 25: Visualização Científica – MAI5015 · 2020. 4. 28. · Interpolação em Células de um Grid Objetivo: dada uma função f i amostrada nos vértices i do grid, queremos calcular

Cálculo de Derivadas em Dados Discretos

Segue que pela Regra da Cadeia:

@F

@xi(p) =

nX

k=1

fk

dX

j=1

@�k

@⇠j

@⇠j@xi

Na forma matricial:

2

6664

@F@x1@F@x2...@F@xd

3

7775=

nX

k=1

fk

2

66664

@⇠1@x1

@⇠2@x1

· · · @⇠d@x1

@⇠1@x2

@⇠2@x2

· · · @⇠d@x2

.

.

....

. . ....

@⇠1@xd

@⇠2@xd

· · · @⇠d@xd

3

77775

| {z }inversa de J>T =

@T�1

j@xi

2

66664

@�k@⇠1@�k@⇠2...

@�k@⇠d

3

77775

Page 26: Visualização Científica – MAI5015 · 2020. 4. 28. · Interpolação em Células de um Grid Objetivo: dada uma função f i amostrada nos vértices i do grid, queremos calcular

Cálculo de Derivadas em Dados Discretos

Exemplo: considere um grid uniforme no plano, onde cada célula tem ta-

manho (r1, r2) e funções base �1k .

r1

r2

(p , p )1 2

(p + r , p + r )1 21 2

(0, 0)

(1, 1)

T (x, y)

η

ξ

(⇠, ⌘) = T�1(x , y) =

✓x � p1

r1,y � p2

r2

@F@x@F@y

�=

4X

k=1

fk

"@⇠@x

@⌘@x

@⇠@y

@⌘@y

#2

4@�1

k@⇠@�1

k@⌘

3

5

�11(⇠, ⌘) = (1 � ⇠)(1 � ⌘) �1

2(⇠, ⌘) = ⇠(1 � ⌘) �13(⇠, ⌘) = ⇠⌘ �1

4(⇠, ⌘) = ⌘(1 � ⇠)

@⇠�11 = ⌘ � 1 @⇠�

12 = 1 � ⌘ @⇠�

13 = ⌘ @⇠�

14 = �⌘

@⌘�11 = ⇠ � 1 @⌘�1

2 = �⇠ @⌘�13 = ⇠ @⌘�1

4 = 1 � ⇠

Page 27: Visualização Científica – MAI5015 · 2020. 4. 28. · Interpolação em Células de um Grid Objetivo: dada uma função f i amostrada nos vértices i do grid, queremos calcular

Cálculo de Derivadas em Dados Discretos

Exemplo: considere um grid uniforme no plano, onde cada célula tem ta-

manho (r1, r2) e funções base �1k .

r1

r2

(p , p )1 2

(p + r , p + r )1 21 2

(0, 0)

(1, 1)

T (x, y)

η

ξ

(⇠, ⌘) = T�1(x , y) =

✓x � p1

r1,y � p2

r2

@F@x@F@y

�=

4X

k=1

fk

1r1

0

01r2

�2

4@�1

k@⇠@�1

k@⌘

3

5

�11(⇠, ⌘) = (1 � ⇠)(1 � ⌘) �1

2(⇠, ⌘) = ⇠(1 � ⌘) �13(⇠, ⌘) = ⇠⌘ �1

4(⇠, ⌘) = ⌘(1 � ⇠)

@⇠�11 = ⌘ � 1 @⇠�

12 = 1 � ⌘ @⇠�

13 = ⌘ @⇠�

14 = �⌘

@⌘�11 = ⇠ � 1 @⌘�1

2 = �⇠ @⌘�13 = ⇠ @⌘�1

4 = 1 � ⇠

Page 28: Visualização Científica – MAI5015 · 2020. 4. 28. · Interpolação em Células de um Grid Objetivo: dada uma função f i amostrada nos vértices i do grid, queremos calcular

Cálculo de Derivadas em Dados Discretos

Exemplo: considere um grid uniforme no plano, onde cada célula tem ta-

manho (r1, r2) e funções base �1k .

r1

r2

(p , p )1 2

(p + r , p + r )1 21 2

(0, 0)

(1, 1)

T (x, y)

η

ξ

(⇠, ⌘) = T�1(x , y) =

✓x � p1

r1,y � p2

r2

@F@x@F@y

�=

4X

k=1

fk

1r1

0

01r2

�2

4@�1

k@⇠@�1

k@⌘

3

5

�11(⇠, ⌘) = (1 � ⇠)(1 � ⌘) �1

2(⇠, ⌘) = ⇠(1 � ⌘) �13(⇠, ⌘) = ⇠⌘ �1

4(⇠, ⌘) = ⌘(1 � ⇠)

@⇠�11 = ⌘ � 1 @⇠�

12 = 1 � ⌘ @⇠�

13 = ⌘ @⇠�

14 = �⌘

@⌘�11 = ⇠ � 1 @⌘�1

2 = �⇠ @⌘�13 = ⇠ @⌘�1

4 = 1 � ⇠

Page 29: Visualização Científica – MAI5015 · 2020. 4. 28. · Interpolação em Células de um Grid Objetivo: dada uma função f i amostrada nos vértices i do grid, queremos calcular

Cálculo de Derivadas em Dados Discretos

Exemplo: considere um grid uniforme no plano, onde cada célula tem ta-

manho (r1, r2) e funções base �1k .

r1

r2

(p , p )1 2

(p + r , p + r )1 21 2

(0, 0)

(1, 1)

T (x, y)

η

ξ

(⇠, ⌘) = T�1(x , y) =

✓x � p1

r1,y � p2

r2

@F@x@F@y

�=

4X

k=1

fk

1r1

0

01r2

�2

4@�1

k@⇠@�1

k@⌘

3

5

�11(⇠, ⌘) = (1 � ⇠)(1 � ⌘) �1

2(⇠, ⌘) = ⇠(1 � ⌘) �13(⇠, ⌘) = ⇠⌘ �1

4(⇠, ⌘) = ⌘(1 � ⇠)

@⇠�11 = ⌘ � 1 @⇠�

12 = 1 � ⌘ @⇠�

13 = ⌘ @⇠�

14 = �⌘

@⌘�11 = ⇠ � 1 @⌘�1

2 = �⇠ @⌘�13 = ⇠ @⌘�1

4 = 1 � ⇠

Page 30: Visualização Científica – MAI5015 · 2020. 4. 28. · Interpolação em Células de um Grid Objetivo: dada uma função f i amostrada nos vértices i do grid, queremos calcular

Cálculo de Derivadas em Dados Discretos

Exemplo: considere um grid uniforme no plano, onde cada célula tem ta-

manho (r1, r2) e funções base �1k .

r1

r2

(p , p )1 2

(p + r , p + r )1 21 2

(0, 0)

(1, 1)

T (x, y)

η

ξ

(⇠, ⌘) = T�1(x , y) =

✓x � p1

r1,y � p2

r2

rF =

✓(1 � ⌘)

f2 � f1

r1+ ⌘

f3 � f4

r1, (1 � ⇠)

f4 � f1

r2+ ⇠

f3 � f2

r2

�11(⇠, ⌘) = (1 � ⇠)(1 � ⌘) �1

2(⇠, ⌘) = ⇠(1 � ⌘) �13(⇠, ⌘) = ⇠⌘ �1

4(⇠, ⌘) = ⌘(1 � ⇠)

@⇠�11 = ⌘ � 1 @⇠�

12 = 1 � ⌘ @⇠�

13 = ⌘ @⇠�

14 = �⌘

@⌘�11 = ⇠ � 1 @⌘�1

2 = �⇠ @⌘�13 = ⇠ @⌘�1

4 = 1 � ⇠

Page 31: Visualização Científica – MAI5015 · 2020. 4. 28. · Interpolação em Células de um Grid Objetivo: dada uma função f i amostrada nos vértices i do grid, queremos calcular

Aspectos Computacionais

Problema: se um ponto p = (x , y , z) pertence a uma célula Ci de uma

malha M, como localizar Ci ⇢ M?

Solução:

I Grids Uniformes:

⇣jxr1

k,j

yr2

k,j

zr3

k⌘;

I Grids Retangulares: use o comando find em cada direção;

I Malhas Não-Estruturadas: encontre os vértices pi 2 M mais próximos

de p e depois encontre a célula com vértice pi a que contém p;

[idx,dist] = knnsearch(X,Y,’k’,k): encontra os k vizinhos mais

próximos em X para cada ponto em Y ;

Page 32: Visualização Científica – MAI5015 · 2020. 4. 28. · Interpolação em Células de um Grid Objetivo: dada uma função f i amostrada nos vértices i do grid, queremos calcular

Aspectos Computacionais

Problema: se um ponto p = (x , y , z) pertence a uma célula Ci de uma

malha M, como localizar Ci ⇢ M?

Solução:

I Grids Uniformes:

⇣jxr1

k,j

yr2

k,j

zr3

k⌘;

I Grids Retangulares: use o comando find em cada direção;

I Malhas Não-Estruturadas: encontre os vértices pi 2 M mais próximos

de p e depois encontre a célula com vértice pi a que contém p;

[idx,dist] = knnsearch(X,Y,’k’,k): encontra os k vizinhos mais

próximos em X para cada ponto em Y ;

Page 33: Visualização Científica – MAI5015 · 2020. 4. 28. · Interpolação em Células de um Grid Objetivo: dada uma função f i amostrada nos vértices i do grid, queremos calcular

Aspectos Computacionais

Problema: se um ponto p = (x , y , z) pertence a uma célula Ci de uma

malha M, como localizar Ci ⇢ M?

Solução:

I Grids Uniformes:

⇣jxr1

k,j

yr2

k,j

zr3

k⌘;

I Grids Retangulares: use o comando find em cada direção;

I Malhas Não-Estruturadas: encontre os vértices pi 2 M mais próximos

de p e depois encontre a célula com vértice pi a que contém p;

[idx,dist] = knnsearch(X,Y,’k’,k): encontra os k vizinhos mais

próximos em X para cada ponto em Y ;