Você está na página 1de 0

Estrutura de dados Mate Face e aplicaes

em gerao e movimento de malhas



caro Lins Leito da Cunha


















Estrutura de dados Mate Face e
aplicaes em gerao e movimento de
malhas


caro Lins Leito da Cunha





Orientador: Prof. Dr. Antonio Castelo Filho







Dissertao apresentada ao Instituto de Cincias Matemticas e
de Computao - ICMC-USP, como parte dos requisitos para
obteno do ttulo de Mestre em Cincias - Cincias de
Computao e Matemtica Computacional.







USP So Carlos
Maro/2009




SERVIO DE PS-GRADUAO DO ICMC-USP

Data de Depsito:

Assinatura:________________________

Aos meus pais.
Agradecimentos
Agradeo primeiramente Deus, acima de tudo e de todos.
Agradeo aos meus pais, que me serviram de grande exemplo de vida.
s minhas irms e meus avs.
Ao meu orientador e professor Antonio Castelo Filho.
Aos professores Luis Gustavo Nonato e Helio Vieira Lopes, pelo apoio, sugestes e
crticas.
Aos demais professores e amigos do LCAD, com destaque para os co-autores de
trabalhos: Joo Paulo Gois, Alexandre de Lacassa e Valdecir Polizelli. Gostaria de
estender tambm meu agradecimento aos amigos Mario Lizir e Marcos Lage pelo
apoio e sugestes.
Aos meus amigos de Joo Pessoa, em especial, s minhas amigas Thase Kelly Costa
e Nathassia Guedes e minha namorada Rafaela Braga pela contribuio que deram
durante a escrita dessa dissertao.
FAPESP, pelo nanciamento deste projeto.
Resumo
Estruturas de dados (ED) topolgicas oferecemdiversas vantagens quando se deseja
executar uma deformaosobre uma malha. Essas EDs permitemmovimentar os ns da
malha semmodicar sua topologia, sorelativamente simples de seremimplementadas
e tambm so passveis de serem incorporadas a um ciclo simulao/deformao de
forma completamente automtica e eciente. O primeiro objetivo deste trabalho a
concepo de uma ED topolgica para representao de malhas elsticas. Tais malhas
podem ser do tipo supercial ou volumtrica, e ainda simples ou mista. Para melhor
desempenho, conabilidade e menor consumo de memria, deseja-se que a ED seja
implcita quanto representao de componentes incidentes e adjacentes dos elementos
presentes na malha.
Outro objetivo deste trabalho abordar o problema de gerao de malhas em
domnios arbitrrios denidos por uma funo implcita. O mtodo proposto
uma extenso do algoritmo de Partio da Unidade Implcita (PUI). Para isso, o
mtodo proposto baseado numa abordagem de preenchimento de superfcies. Este
mtodo proposto gera adaptativamente tetraedros em diferentes nveis de renamento
de acordo com o nvel de detalhe presente na regio do domnio. Diferentemente
de trabalhos anteriores, esta caracterstica feita naturalmente sem necessitar de
uma estrutura auxiliar. Para este m, usa-se uma estrutura algbrica chamada de
triangulao J
a
1
que capaz de lidar comtais renamentos. Almdomais, a triangulao
J
a
1
permite que se percorra a estrutura simplesmente atravs de regras algbricas que
uma outra vantagem do mtodo proposto.
Abstract
Topological data Structures (DS) oer several advantages when performing a
deformation on a mesh. These DSs allow movement throughout the mesh without
modifying its topology, are relatively simple to implement, and there is always the
possibility of merging it to simulation/deformation cycle on a completely automatic
and ecient form. The main goal of this work is to design and implement a topological
DS to represent elastic meshes. These meshes can be either of surface or volume kind,
and even simple or mixed. For better performance, more reliability and lower memory
consumption, it is necessary that the DSs allow the representation of incident and
adjacent components of a given element to be implicit.
The second objective to this work is to tackle the problem of mesh generation on
arbitrary domains dened by implicit functions. The proposed method is an extension
to the algorithm of Partition of Unity Implicits (PUI). For this the proposed method
is based on an isosurface stung approach. It adaptively generates the tetrahedra in
dierent levels of renement accordingly to the level of detail presented by the regions
of the domain. Dierently to previous work, this feature is done naturally without the
aid of an auxiliary data structure. To this end, we use an algebraic structure, named
J
a
1
triangulation, which is capable of dealing with such renements. In addition, the
J
a
1
triangulation permits traversing through the mesh by simply using algebraic rules
which is another advantage to the proposed method.
Contedo
Contedo i
Lista de Figuras v
Lista de Tabelas xi
1 Introduo 1
1.1 Contextualizao e Motivao . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1.1 ED Topolgica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1.2 Gerao de Malhas . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.1.3 Plataforma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3 Organizao da Dissertao . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2 Conceitos Bsicos 7
2.1 Complexo Celular e Malhas . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.2 Malhas Elsticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.3 Consideraes Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3 Estruturas de Dados Topolgicas 19
3.1 Estruturas de Dados 2D . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.1.1 Winged-Edge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.1.2 Half-Edge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.1.3 Handle-Edge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.1.4 Corner-Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.1.5 Compact Half-Edge . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
i
Contedo
3.2 Estruturas de Dados 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.2.1 Handle-Face . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.2.2 Compact Half-Face . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.3 Estrutura de Dados - Opposite Face . . . . . . . . . . . . . . . . . . . . . . 29
3.3.1 A estrutura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.3.2 Perl de malha . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.3.3 Exemplo de aplicao usando a OF . . . . . . . . . . . . . . . . . . 31
3.4 Consideraes Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4 Mate Face 37
4.1 Implementao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
4.1.1 Perl de malha . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
4.1.2 Vetor de elementos . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.2 Composio da ED MF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.2.1 Vrtice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.2.2 Aresta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.2.3 Face . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.2.4 Clula . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.2.5 Malha . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
4.2.6 Estruturas auxiliares . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.2.7 Iteradores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.2.8 Suporte a formatos de arquivos . . . . . . . . . . . . . . . . . . . . 46
4.2.9 Clculos geomtricos . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.2.10 Operaes topolgicas . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.3 Adaptao da OF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.4 MF 2D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.4.1 Malhas triangulares . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4.4.2 Malhas quadrilteras . . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.4.3 Malhas mistas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
4.5 MF 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
4.5.1 Malhas tetradricas . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
4.5.2 Malhas hexadricas . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
4.5.3 Malhas prismticas e malhas piramidais . . . . . . . . . . . . . . 59
4.5.4 Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
4.6 Consideraes Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
ii
Contedo
5 Gerao Algbrica de Malhas Adaptativas a partir de Funes Implcitas 65
5.1 Trabalhos Relacionados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
5.1.1 Isosurface Stung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
5.2 Aproximao de Superfcie Implcita a Partir de Nuvem de Pontos e a
Triangulao J
a
1
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
5.2.1 Partio da Unidade Implcita em Multinvel . . . . . . . . . . . . 69
5.2.2 A Triangulao J
a
1
. . . . . . . . . . . . . . . . . . . . . . . . . . . 70
5.3 Gerao de Malhas Adaptativas Algbricas . . . . . . . . . . . . . . . . . 73
5.3.1 Avaliao de vrtices, pontos de corte e Warping . . . . . . . . . . 75
5.3.2 Triangulao por estncil . . . . . . . . . . . . . . . . . . . . . . . 76
5.4 Prova de Qualidade dos ngulos Diedrais . . . . . . . . . . . . . . . . . 78
5.5 Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
5.6 Consideraes Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
6 Aplicaes 91
6.1 Execuo de malha dinmica . . . . . . . . . . . . . . . . . . . . . . . . . 91
6.1.1 Vrtices ativos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
6.1.2 Passos de iterao . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
6.2 Aplicao I - Movimento de malha triangular plana . . . . . . . . . . . . 94
6.3 Aplicao II - Movimento de malha mista plana . . . . . . . . . . . . . . 96
7 Concluso 99
7.1 Trabalhos Futuros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
Referncias Bibliogrcas 103
A Cdigos Exemplos 109
iii
Contedo
iv
Lista de Figuras
1.1 Ilustrao da composio da estrutura de dados topolgica. . . . . . . . 3
2.1 Um exemplo que representa um complexo celular (esquerda) e um
exemplo que no representa um complexo celular (direita). . . . . . . . . 9
2.2 Adjacncias entre clulas. . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.3 Complexo celular orientado no sentido anti-horrio. . . . . . . . . . . . . 11
2.4 Operaes de estrela e elo. . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.5 Variedades (a) e (b) e no-variedade (c). . . . . . . . . . . . . . . . . . . . 12
2.6 Tipos de clulas que so representadas dentro do escopo deste projeto. . 13
2.7 Exemplo de uma malha que no se caracteriza por ser um complexo
celular, apesar de ser uma decomposio celular. Neste caso, a interseo
entre as 2-clulas 1 e 2 no uma face comum. . . . . . . . . . . . . . . . 13
2.8 Tipos de molas usadas nas aplicaes de malhas elsticas deste projeto. . 16
2.9 Ilustrao da composio do coeciente de rigidez total na aresta e
i j
formado por duas molas torcionais e sua mola longitudinal. . . . . . . . 17
3.1 Linha de tempo dos trabalhos anteriores para EDs 2D. . . . . . . . . . . . 21
3.2 Representao de informaes de uma aresta armazenada por uma
winged-edge. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.3 Uma half-edge com a associao de seus elementos incidentes. . . . . . . 23
3.4 Formas de composio de uma aresta de interior (esquerda) e uma aresta
de bordo (direita). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.5 Vrtices, corners e faces de um tetraedro aberto. . . . . . . . . . . . . . . . 25
3.6 Ilustrao da composio dos 4 nveis da estrutura CHE. . . . . . . . . . 27
3.7 Linha de tempo dos trabalhos anteriores para EDs 3D. . . . . . . . . . . . 27
v
Lista de Figuras
3.8 Ilustrao da composio dos 4 nveis da estrutura CHF. . . . . . . . . . 29
3.9 Representao explcita bsica de uma malha supercial 2D. . . . . . . . 31
3.10 Representao explcita bsica de uma malha supercial 3D. . . . . . . . 32
3.11 Perl de uma malha usada no sistema CyberMed. . . . . . . . . . . . . . 33
3.12 Visualizao do trax humano com 3 camadas: sistema digestivo,
esqueleto e pele. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.13 Visualizao de um estgio da simulao de coleta de medula ssea. . . 35
4.1 Vetor de alocao por blocos. . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.2 Vrtice singular com as clulas incidentes destacadas. . . . . . . . . . . . 40
4.3 Composio bsica do vrtice de uma malha plana. . . . . . . . . . . . . 41
4.4 Composio bsica da clula triangular. . . . . . . . . . . . . . . . . . . . 42
4.5 Composio bsica da clula tetradrica. . . . . . . . . . . . . . . . . . . . 43
4.6 Tipos de clulas e indexao de seus vrtices baseados no modelo padro
do formato VTK. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.7 Problema de indexao de vizinhana usando a idia de corners opostos
em clulas quadrilteras (a) e hexadricas (b). . . . . . . . . . . . . . . . . 48
4.8 Abordagem de vizinhana por half-edge (he) em clulas quadrilteras (a)
e por half-face (hf) em clulas tetradricas (b). . . . . . . . . . . . . . . . . 48
4.9 Operao de estrela de umvrtice na MF, onde a clula 0 a clula inicial
da busca da operao. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.10 Operao de estrela de um vrtice de interior em uma malha supercial
mista. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.11 Ilustrao da MF 2D bsica. . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4.12 Indexao de elementos de uma clula triangular. . . . . . . . . . . . . . 51
4.13 Representao da malha do modelo Olivier Hand. Este modelo foi obtido
do repositrio Aim@Shape. . . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.14 Representao em wireframe da malha de um elefante onde foi atribudo
a cada vrtice um valor de acordo com uma simulao de equao de calor. 53
4.15 Duas visualizaes da malha do modelo de um busto, que foi obtido do
repositrio Aim@Shape. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
4.16 Representao da malha supercial mista de um modelo CAD obtido do
repositrio Aim@Shape. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.17 Ilustrao da MF 3D bsica. . . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.18 Ilustrao das clulas resultantes da operao estrela da aresta em
vermelho. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
vi
Lista de Figuras
4.19 Indexao de elementos de uma clula tetradrica. . . . . . . . . . . . . . 58
4.20 Visualizao dos vrtices internos (em amarelo) e de bordo (em
vermelho) do modelo Stanford Bunny. . . . . . . . . . . . . . . . . . . . . 58
4.21 Visualizao do resultado de uma simulao numrica de um modelo
que representa parte de um reator nuclear. Este modelo em conjunto
com os dados da simulao foi obtido do repositrio Aim@Shape. . . . . 59
4.22 Visualizao dos vrtices internos (em amarelo) e de bordo (em
vermelho) do modelo Bump. . . . . . . . . . . . . . . . . . . . . . . . . . . 60
4.23 Visualizao das arestas internas (em amarelo) e externas (em vermelho)
do modelo Fru. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
5.1 Visualizao da malha do Stanford Bunny. . . . . . . . . . . . . . . . . . . 67
5.2 Ilustrao bidimensional do comportamento do renamento dos blocos
de uma triangulao J
a
1
induzidos pelo critrio de erro da aproximao. . 71
5.3 Exemplo 2D de uma grade da triangulao J
a
1
(esquerda) e detalhes do
bloco g = (3, 2), r = 0 onde mostrado dois percursos para traar os
simplexos do bloco (direita). Esta gura foi adaptada do trabalho [19]. . 72
5.4 Ilustrao do bloco de transio 3D onde so rotulados os tipos de
tetraedros destacados na Figura 5.5. . . . . . . . . . . . . . . . . . . . . . 74
5.5 Ilustrao dos 7 tipos de tetraedros existentes na triangulao J
a
1
3D. O
tetraedro do canto superior esquerdo pertence ao bloco bsico e os seis
restantes pertencem ao bloco de transio. . . . . . . . . . . . . . . . . . . 75
5.6 Conjunto de estnceis para gerar a triangulao dos tetraedros. Os
vrtices dos tetraedros so rotulados com os sinais (0, +, ), os pontos de
corte esto em branco e a triangulao resultante est em azul. fcil
notar que os cinco estnceis de baixo geram de dois a trs tetraedros.
Mesmo que a triangulao J
a
1
apresente sete tipos de tetraedros, o
tetraedro de bloco bsico foi escolhido para representar o estncil sem
qualquer perda de generalidade. Esta gura foi adaptada do trabalho [19]. 77
5.7 Exemplo de duas faces quadrilteras vizinhas que precisam ser cortadas
por uma mesma diagonal (em amarelo). Os tetraedros esquerda
(formado por v
0
, v
1
, v
2
e v
3
) e direita (formado por v
0
, v
1
, v
2
e v
3
)
foram rotacionados em sentidos opostos em relao a aresta formada
por v
0
e v
1
para melhor visualizar as faces vizinhas. . . . . . . . . . . . . 78
vii
Lista de Figuras
5.8 Ordemde construo dos vrtices do tetraedro da triangulao J
a
1
. Como
ilustrado, o primeiro vrtice localiza-se no centro do bloco; o segundo
o centro de face do bloco; o terceiro o centro de uma aresta; e o quarto
um vrtice do bloco. Esta gura foi obtida do trabalho [19]. . . . . . . . 79
5.9 Ilustrao de um asterstico do vrtice v
0
. . . . . . . . . . . . . . . . . . . 81
5.10 Malhas do modelo de vaso, a primeira mala foi gerada sem o uso da
regra de warping e a segunda foi gerada com o uso da regra de warping. . 83
5.11 Aproximao de regies das malhas do vaso para melhor demonstrar a
diferena do resultado sem o uso de warping ( esquerda) e com o uso de
warping ( direita). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
5.12 Malha do Drago Chins composta por 1053k tetraedros. . . . . . . . . . 85
5.13 Ilustrao da relao de qualidade de tetraedros de algumas malhas
geradas pelo mtodo proposto. . . . . . . . . . . . . . . . . . . . . . . . . 86
5.14 Vaso semwarping, esta malha apresentou razo de aspecto mdio de 3,61
com desvio padro de 4,1706 e pior elemento com valor acima de 20. . . 87
5.15 Vaso comwarping, esta malha apresentou razo de aspecto mdio de 1,77
com desvio padro de 0,2904 e pior elemento com valor de 15,5. . . . . . 87
5.16 Drago chins, esta malha apresentou razo de aspecto mdio de 1,84
com desvio padro de 0,36899 e pior elemento com valor de 19,9. . . . . 87
5.17 Stanford Bunny, esta malha apresentou razo de aspecto mdio de 1,86
com desvio padro de 0,4032 e pior elemento com valor de 19,9. . . . . . 88
5.18 Duas Esferas, esta malha apresentou razo de aspecto mdio de 1,8197
com desvio padro de 0,3544 e pior elemento com valor de 4,9. . . . . . . 88
5.19 Elipse, esta malha apresentou razo de aspecto mdio de 1,8019 com
desvio padro de 0,3277 e pior elemento com valor de 4,3. . . . . . . . . 88
5.20 Corao, esta malha apresentou razo de aspecto mdio de 1,7293 com
desvio padro de 0,2272 e pior elemento com valor de 4,2. . . . . . . . . 89
5.21 Witch Hat, esta malha apresentou razo de aspecto mdio de 1,807 com
desvio padro de 0,33128 e pior elemento com valor de 5,1. . . . . . . . . 89
6.1 Malha que representa a parte externa do aeroflio. O bordo interno da
malha (que representa o aeroflio) est localizado no centro da malha. . 94
6.2 Execuo do passos da Aplicao I e comparao entre a malha original
e o resultado nal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
6.3 Aproximao das regies consideradas mais crticas aps 60 passos. . . . 96
viii
Lista de Figuras
6.4 Malha da mo original formada por 6207 vrtices e 4345 clulas. Esta
malha foi gerada pelo algoritmo de gerao de malhas proposto por
Mario Augusto de Souza Lizir. . . . . . . . . . . . . . . . . . . . . . . . . 97
6.5 Execuo do passos da Aplicao II e comparao entre a malha original
e o resultado nal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
ix
Lista de Figuras
x
Lista de Tabelas
2.1 Relao de elementos de clula . . . . . . . . . . . . . . . . . . . . . . . . 12
3.1 Dados armazenados referentes a aresta a da Figura 3.2. . . . . . . . . . . 22
3.2 Lista de dados do tetraedro. . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.3 Composio das camadas do trax. . . . . . . . . . . . . . . . . . . . . . . 33
3.4 Composio dos objetos usados na simulao de coleta de medula ssea. 34
4.1 Relao de malhas usadas nos testes. . . . . . . . . . . . . . . . . . . . . . 61
4.2 Comparao de tempo (em segundos) da execuo de carga de malhas
pelas EDs OF, MF e MF Implcita. . . . . . . . . . . . . . . . . . . . . . . . 62
4.3 Comparao de tempo (emsegundos) da execuo da estrela dos vrtices
das malhas pelas EDs OF e MF. . . . . . . . . . . . . . . . . . . . . . . . . 62
5.1 Relao de ngulos diedrais mnimos e mximos dos tetraedros
(apresentados na Figura 5.5) que compem a triangulao J
a
1
. . . . . . . . 79
5.2 Tempo de gerao das malhas ilustradas na Figura 5.13 de acordo com a
etapa. A unidade de tempo dada em segundos. . . . . . . . . . . . . . . 84
xi
Lista de Tabelas
xii
Cap

itulo
1
Introduo
Neste captulo, sero introduzidos os temas estudados neste trabalho: estrutura
de dados (ED) topolgica e gerao de malhas tetradricas. O primeiro tema
envolve a implementao de uma ED capaz de representar malhas bidimensionais
e tridimensionais a serem utilizadas em aplicaes de malhas elsticas. O segundo
problema envolve a implementao de um gerador de malhas tetradricas com boa
qualidade.
1.1 Contextualizao e Motivao
1.1.1 ED Topolgica
A simulao numrica pode, em poucas palavras, ser denida como a arte de
reproduzir e prever fenmenos da natureza em um computador. Ao longo dos anos,
a simulao numrica vem ganhando importncia nas tentativas de compreenso
desses fenmenos e tornou-se ferramenta fundamental no desenvolvimento de novas
tecnologias empregadas nas mais diversas reas do conhecimento.
A mecnica dos uidos uma disciplina onde os mtodos numricos e a simulao
computacional vm sendo aplicados h vrios anos com muito sucesso. O progresso
cientco e tecnolgico que adveio desse conhecimento culminou com o aparecimento
de uma nova rea do conhecimento, a Mecnica dos Fluidos Computacional (CFD).
Em muitas aplicaes, um dos aspectos comuns aos problemas de CFD sem
dvida a complexidade da geometria do domnio em que se d o escoamento. A
1
Introduo
representao computacional do domnio torna-se assim, um dos primeiros problemas
a serem enfrentados. Neste contexto, a modelagem geomtrica desempenha um
papel primordial, uma vez que problemas inerentes dessa rea de aplicao, como
por exemplo, a representao de domnios complexos, decomposies espaciais,
manipulao e movimento de malhas, so naturalmente tratados pelas ferramentas
oriundas da modelagem geomtrica.
A questo, portanto, que em simulaes numricas de escoamento de uidos,
algumas superfcies no podem ser consideradas como corpos rgidos. Considere, por
exemplo, a asa de um avio em vo. A fora originria do escoamento do ar pela asa
pode ser intensa o suciente para deformar sua estrutura. Essa deformao altera o
escoamento de ar e, consequentemente, a congurao do campo de foras devido ao
escoamento do uido. Desta forma, umciclo de simulao do escoamento de umuido
no entorno de uma estrutura elstica, como a asa de um avio, exige que simulaes
da deformao da estrutura sejam acopladas s simulaes do escoamento do uido
[23, 35]. Observe que neste ciclo uido-estrutura, a malha udica (malha em torno da
estrutura onde ser efetuada a simulao) precisa se ajustar nova descrio geomtrica
ditada pela deformao da estrutura, e aqui justamente onde a modelagemgeomtrica
pode contribuir.
Existem trs formas de se realizar o ajuste de uma malha udica nova descrio
geomtrica denida pela deformao de uma estrutura. A primeira gerar uma
nova malha a partir da nova geometria. Essa opo no adequada, pois exige
a interveno do gerador de malhas durante o ciclo simulao/deformao, o que
tornaria o processo invivel. Uma segunda opo reaproveitar grande parte da malha
original, alterando apenas as regies afetadas pela deformao [58]. Muito embora
esta seja uma opo robusta e possvel de ser automatizada, ela consideravelmente
complexa de ser implementada e requer bons algoritmos de interpolao para transferir
os dados da malha original malha modicada. A terceira opo consiste em
apenas movimentar os ns da malha original evitando qualquer alterao em sua
conectividade (topologia). Essa ltima opo oferece diversas vantagens, pois alm de
sua implementao ser relativamente simples, ela tambm passvel de ser incorporada
ao ciclo simulao/deformao de forma completamente automtica e eciente.
Portanto, alm das questes relacionadas com a representao de malhas e
domnios, problemas envolvendo movimento de malhas podem ser mais facilmente
tratados com o uso de modelagem geomtrica. O casamento entre modelos elsticos e
estruturas de dados topolgicas possibilita que inconsistncias como sobreposio de
2
Introduo
clulas e elementos com razo de aspecto ruim sejam detectados e tratados dentro de
um contexto topolgico, facilitando a implementao.
Estruturas de dados (ED) topolgicas buscam indexar os elementos da malha
de modo a representar as relaes de incidncia e adjacncia entre tais elementos,
garantindo ainda um acesso eciente a suas informaes [46, 9]. Muitas das estruturas
topolgicas descritas na literatura visam indexar os dados de modo a facilitar os
mecanismos de acesso as relaes de vizinhana e as buscas empregadas na construo
ou leitura das malhas [36], viabilizando ainda o controle de procedimentos adaptativos.
Outro aspecto importante que merece ser discutido a forma de armazenamento
empregada por essas estruturas. Neste caso, podendo ser de forma explcita (onde
dados como relaes de adjacncia podem ser armazenados em listas ou vetores), ou
de forma implcita (onde as relaes podemser obtidas atravs de operaes algbricas).
Vale ressaltar o interesse deste trabalho na concepo de uma ED topolgica que
possibilite obter as principais relaes de incidncia e adjacncia de um dado elemento
de uma malha. O acesso a essas relaes deve ser em tempo constante ou proporcional
ao nmero de elementos vizinhos do elemento em questo. Desta forma, a construo
de uma estrutura implcita que possa ser empregada emqualquer tipo de decomposio
celular (seja ela simples ou mista) ainda um desao.
Dividindo as malhas em bidimensionais e tridimensionais (de acordo com o seu
elemento de maior dimenso), tm-se, para cada caso, diferentes tipos de elementos.
No caso bidimensional, o domnio poder ser composto por tringulos e quadrilteros.
J no contexto tridimensional, os elementos podero ser tetraedros, prismas de base
triangular, pirmides de base quadrangular e hexaedros. A Figura 1.1 ilustra essa
organizao. O termo malha mista ser utilizado para os casos em que a malha
composta por mais de um tipo de elemento.
Figura 1.1: Ilustrao da composio da estrutura de dados topolgica.
Uma caracterstica importante levada em considerao na concepo da ED a de
3
Introduo
abstrair, o mximo possvel, o conhecimento necessrio sobre EDs topolgicas. Para
isso, necessrio que ela tenha uma interface simples e eciente, alm de ter uma
documentao completa de toda sua estrutura (classes, atributos, mtodos, etc.). Deste
modo seus usurios podero utiliz-la semnecessitar conhecer os mecanismos internos
de funcionamento da ED.
1.1.2 Gerao de Malhas
Outro foco deste trabalho foi abordar o problema de gerao de malhas tetradricas
emdomnios arbitrrios denidos por funes implcitas. Foi proposta uma abordagem
para esse problema baseada no mtodo de Isosurface Stung proposto por Labelle e
Shewchuk [37]. A abordagem, aqui proposta, gera malhas adaptativas em diferentes
nveis de renamento de acordo com os detalhes apresentados pelas regies do
domnio. Para tal propsito, a triangulao J
a
1
proposta por Castelo et al. [14] foi
utilizada.
Para tal feito, o trabalho baseado na Partio da Unidade Implcita em Multi-nvel
(PUI) proposta por Gois et al. [30] foi estendido para um mtodo de gerao de
malhas adaptativas tetradricas que emprega o uso de estnceis tetradricos e regras
de warping de pontos apresentados em [37]. Este trabalho tem como foco gerar malhas
volumtricas com boa qualidade de tetraedros.
A etapa inicial do mtodo PUI utilizada para obter uma malha tetradrica inicial
e tambm aproximar a funo implcita de uma superfcie. Esta funo implcita
determina a posio de um vrtice relativa a superfcie e permite calcular onde uma
aresta transversal (arestas com um vrtice dentro da superfcie e com o outro fora da
superfcie) intersecta a superfcie, este ponto ser denominado de ponto de corte. A
partir desta malha inicial, so empregadas as idias apresentadas em [37].
Pelo fato da triangulao J
a
1
ser utilizada neste trabalho, a malha inicial diferente
daquela utilizada em [37], por isso, foram necessrias algumas adaptaes s regras de
warping e aos estnceis utilizados.
1.1.3 Plataforma
Todo o trabalho foi desenvolvido utilizando a linguagem de programao C++.
Esta escolha foi feita levando-se em conta o desempenho que a linguagem oferece e a
possibilidade de uso de templates para permitir a concepo de uma ED exvel. Alm
disso, a ED portvel com relao ao sistema operacional, ou seja, no seu modo bsico
pode ser utilizada em qualquer sistema operacional.
4
Introduo
Oaplicativo Doxygen
1
foi escolhido para criar uma documentao padro do cdigo
da estrutura MF. Para exibio de resultados foi utilizada a biblioteca grca OpenGL.
Todos os trabalhos foram feitos em um computador com processador Intel Core 2 Quad
de 2.4GHz e 4 GB de memria Ram.
1.2 Objetivos
Este projeto de pesquisa teve como um de seus principais objetivos desenvolver
atividades relacionadas s aplicaes de modelagens geomtricas em CFD. O primeiro
objetivo deste projeto, que de absoluta importncia para o desenvolvimento de
diversas ferramentas em CFD, desenvolver uma estrutura de dados eciente para
representao e manipulao de malhas.
Tem-se o interesse em representar tanto malhas bidimensionais (planares ou
superciais) quanto tridimensionais (volumtricas) que podem ser compostas por
elementos simpliciais ou mistos. A inteno criar e implementar um modelo de
representao implcita para que a estrutura seja ao mesmo tempo leve (reduzido
consumo de memria) e eciente (retornar rapidamente as relaes de incidncia e
adjacncia). Alm disso, como foi dito na seo anterior, a estrutura conter uma
interface simples e eciente, para torn-la fcil de ser integrada em diversas aplicaes
que envolvem o uso de malhas.
Outro objetivo deste projeto o desenvolvimento de um gerador de malhas
tetradricas. As malhas resultantes devem ser adaptativas e com boa qualidade de
ngulos diedrais.
1.3 Organizao da Dissertao
Nesta dissertao sero detalhados os conceitos estudados e as atividades
realizadas. Ela est organizada da seguinte forma:
Captulo 2: nesse captulo so abordados os fundamentos ditos como necessrios
para o desenvolvimento da ED deste projeto;
Captulo 3: nesse captulo apresentada uma reviso bibliogrca sobre EDs
topolgicas, com o maior destaque para a ED Opposite Face (OF) proposta por
Mario Lizier [41] que ser a base para o desenvolvimento da estrutura do projeto;
Captulo 4: nesse captulo apresentada a ED Mate Face (MF) e os detalhes de
sua implementao. Esta ED auxiliou o desenvolvimento do mtodo de gerao
1
Doxygen - source code documentation generator tool Site: http://www.stack.nl/dimitri/doxygen/
5
Introduo
de malhas apresentado no Captulo 5 e serviu de base para a implementao das
aplicaes apresentadas no Captulo 6;
Captulo 5: nesse captulo apresentado o mtodo de gerao de malhas
desenvolvido. Este mtodo a segunda contribuio desta dissertao;
Captulo 6: nesse captulo so apresentadas algumas aplicaes de movimento
de malhas elsticas;
Captulo 7: nesse captulo feita uma apreciao sobre os resultados obtidos e
sero detalhados alguns trabalhos futuros;
Apndice A: nesse apndice so apresentados alguns cdigos exemplos de uso
da MF que sero referenciados no Captulo 4.
6
Cap

itulo
2
Conceitos Bsicos
Neste captulo sero revisados alguns conceitos bsicos envolvendo complexos
celulares. Sero introduzidos noes de clulas, de complexos celulares e de algumas
relaes topolgicas. Estes conceitos foram obtidos de [12, 39]. Alm disso, sero
apresentados conceitos de malhas elsticas que foram utilizados na implementao
das aplicaes de movimento de malhas.
2.1 Complexo Celular e Malhas
Nesta seo apresenta-se a fundamentao terica para contextualizar o tipo de
malha estudada neste trabalho.
Denio 1 (Espao am) Dados v
0
, v
1
, . . . , v
n
R
m
, o espao
S = a f f {v
0
, . . . , v
n
} =

v R
m
:
n

i=0

i
v
i
= v, e
n

i=0

i
= 1

denominado espao am gerado por v


0
, v
1
, . . . , v
n
.
Denio 2 (Clula) Uma clula convexa am gerada pelos pontos v
0
, v
1
, . . ., v
n
denida
como sendo o conjunto:
= [v
0
, v
1
, . . . , v
n
] =

v R
m
:
n

i=0

i
v
i
= v,
n

i=0

i
= 1 e
i
0

.
7
Conceitos Bsicos
Em outra palavras, o menor conjunto convexo contendo os pontos v
0
, . . ., v
n
.
Denio 3 (Dimenso de uma clula) A dimenso de uma clula convexa am
= [v
0
, v
1
, . . . , v
n
] denida como sendo a dimenso do espao am, ou seja, o menor nmero
de vetores linearmente independentes entre v
1
v
0
, v
2
v
0
, . . . , v
n
v
0
.
Por conveno, as clulas de dimenso igual a 0 (0-clula) sero chamadas de
vrtices, as clulas de dimenso igual a 1 (1-clula) sero chamadas de arestas, e as
clulas de dimenso igual a 2 (2-clula) sero chamadas de faces. Em caso geral, uma
n-clula ser tratada como sendo um elemento de uma malha.
Umcaso particular de clula que comumente tratado na literatura o de simplexo.
Denio 4 (Simplexo) Um simplexo de dimenso d (d-simplexo) uma clula convexa am
de dimenso d gerada por d + 1 pontos.
Por conveno, o 0-simplexo chamado de vrtice, o 1-simplexo de aresta, o 2-
simplexo de tringulo e o 3-simplexo de tetraedro.
Denio 5 (Bordo de uma clula) Obordo de uma clula , denotado por (), o conjunto
de sub-clulas satisfazendo:
1. Se

(), ento

gerado por um subconjunto de vrtices de ;


2. p

, onde

(), no existe uma bola contendo p em a f f () inteiramente contida


em

;
3. Se

1
e

2
pertencem a () e tem a mesma dimenso

2
e

1
.
Denio 6 (Face) Sejam = [w
0
, . . . , w
n
] uma p-clula convexa ame = [v
0
, . . . , v
m
] uma
q-clula. Ento, se {w
0
, . . . , w
n
} {v
0
, . . . , v
m
}, diz-se que uma face do bordo de (()) se:
1. ();
2. Se existe alguma outra sub-clula cujo espao am o mesmo que o de (ou seja,
a f f () = a f f ()), ento .
Denio 7 (Decomposio celular) Uma coleo C de clulas convexas ans dita uma
decomposio celular de um conjunto K R
m
se:
1. K =
C
;
8
Conceitos Bsicos
2. Se
1
,
2
C ento
1

2
= ou
1

2
C;
3. Todo subconjunto compacto de K intercepta um nmero nito de clulas de C.
Denio 8 (Triangulao) Uma decomposio celular C de K R
m
chamada de
triangulao de K, se todas as clulas de C so simplexos.
Denio 9 (Complexo celular) Um complexo celular C um conjunto nito de clulas
convexas ans que satisfazem:
1. se C e face de ento C;
2. se
1
e
2
C ento
1

2
= ou
1

2
uma face comum de
1
e
2
.
A condio 2 da Denio 9 garante que a interseo entre duas clulas quaisquer
se d somente por uma face em comum entre eles, impedindo assim intersees
indesejadas. A Figura 2.1 esquerda representa um exemplo de um complexo celular,
e direita, um exemplo que no representa um complexo celular.
Figura 2.1: Um exemplo que representa um complexo celular (esquerda) e um exemplo
que no representa um complexo celular (direita).
Neste trabalho, o conceito de adjacncia entre elementos ser importante para se
percorrer entre elementos vizinhos de um complexo celular. Alm disso, as relaes
topolgicas tratadas so de fundamental importncia para um bom desempenho de
aplicativos. A seguir, sero apresentadas algumas denies relacionadas vizinhana
entre elementos.
Denio 10 (Clulas adjacentes) Uma clula
1
dita adjacente (vizinha) a outra clula

2
se
1

2
uma face comum de
1
e
2
.
9
Conceitos Bsicos
Observao 1 No caso de vrtices, um vrtice dito vizinho do outro se existe uma aresta
que contm os dois. Vale salientar, que esta denio de vizinho no se equivale denio de
adjacncia.
A Figura 2.2 apresenta dois exemplos de adjacncia entre clulas.
Quanto ao nmero mximo de vizinhos das 2-clulas fcil notar que este valor se
equivale ao nmero de arestas e, para o caso de 3-clulas, se equivale ao nmero de
faces.
(a) Adjacncia entre 2-clulas
por uma aresta.
(b) Adjacncia entre 3-clulas
por uma face.
Figura 2.2: Adjacncias entre clulas.
Denio 11 (Clulas incidentes) Dadas uma p-clula e uma k-clula onde p > k, estas
clulas so ditas incidentes se uma face de .
Denio 12 (Orientao de clulas) Seja C um complexo celular de dimenso p, onde p
a maior dimenso de todas as suas clulas. A orientao de duas p-clulas adjacentes e
pertencentes a C coerente se a (p 1)-face que compartilham tem orientao oposta em cada
uma das clulas. Ocomplexo celular C orientvel se uma orientao coerente pode ser escolhida
para todas as suas clulas (Figura 2.3).
Denio 13 (Ponto de acumulao) Se A um conjunto de R
m
, ento x um ponto de
acumulao de A se qualquer aberto de R
m
contendo x tambm contm ponto de A.
Denio 14 (Fecho de conjunto) O fecho de um conjunto A ,F(A), o conjunto de todos
os pontos de acumulao de A.
Denio 15 (Estrela) Seja C um complexo celular. A estrela (star) de um elemento C,
denotada por S() o conjunto dos elementos de C que contm , i.e., S() = { C : }.
10
Conceitos Bsicos
Figura 2.3: Complexo celular orientado no sentido anti-horrio.
A Figura 2.4(a) ilustra um exemplo da estrela de um vrtice central. As arestas em
preto e as faces em laranja pertencem estrela do vrtice em azul.
Denio 16 (Elo) O elo (link) de um elemento C denotado por L(), o conjunto
L() = { F(S()) : = }, onde F(S()) o fecho da estrela de .
AFigura 2.4(b) ilustra umexemplo de elo de umvrtice central. As arestas empreto
e os vrtices em vermelho pertencem ao elo do vrtice em azul.
(a) Estrela do vrtice central
(azul)
(b) Elo do vrtice central
(azul)
Figura 2.4: Operaes de estrela e elo.
Denio 17 (Homeomorsmo) Sejamdois conjuntos Ue V e uma aplicao, f : U V. f
chamada de homeomorsmo se f inversvel e, f e f
1
so contnuas. Se f umhomeomorsmo
ento os conjuntos V e U so ditos homeomorfos.
Denio 18 (Variedade) Um complexo celular C de dimenso n dito uma variedade linear
por partes de dimenso n, se, para todo de C, ou L() homeomorfo a uma esfera de dimenso
11
Conceitos Bsicos
n 1 (Figura 2.5(a)), ou homeomorfo a um disco de dimenso n 1 (Figura 2.5(b)). Caso
contrrio C dito uma no-variedade (Figura 2.5(c)).
Caso o elo de uma clula seja homeomorfo a uma esfera de dimenso n 1, esta
clula dita como sendo uma clula de interior. E caso seu elo seja homeomorfo a um
disco de dimenso n 1, esta clula dita como sendo uma clula de bordo.
(a) Ponto de interior (b) Ponto de Bordo (c) No-variedade
Figura 2.5: Variedades (a) e (b) e no-variedade (c).
No contexto deste trabalho, o maior elemento que formar um complexo celular
ser tratado simplesmente como clula. Como foi dito anteriormente, neste trabalho
tem-se o interesse em representar tanto malhas bidimensionais quanto tridimensionais
que podem ser compostas por complexos simples ou mistos (hbridos). A Figura 2.6
apresenta os diferentes tipos de clulas dentro do escopo deste projeto. As clulas de
dimenso 2 so as clulas de maior dimenso no contexto de malhas superciais e so
representadas por tringulos e quadrilteros. Eas clulas de dimenso 3 so as de maior
dimenso no contexto de malhas volumtricas. Estas clulas so representadas por
tetraedros, prismas (com base triangular), pirmides (com base quadrada) e hexaedros.
A Tabela 2.1 apresenta a composio de cada tipo de clula de interesse deste projeto.
Tabela 2.1: Relao de elementos de clula
Tipo Nmero de Vrtices Nmero de Arestas Nmero de Faces
Tringulos 3 3 -
Quadrilteros 4 4 -
Tetraedros 4 6 4
Pirmides 5 8 5
Prismas 6 9 5
Hexaedros 8 12 6
12
Conceitos Bsicos
Figura 2.6: Tipos de clulas que so representadas dentro do escopo deste projeto.
A denio de uma malha mais exvel que a de um complexo celular pois s
vezes interessante tratar malhas que seja do tipo ilustrado na Figura 2.7. No contexto
deste trabalho, quando se fala em malha faz-se referncia a um complexo celular.
Figura 2.7: Exemplo de uma malha que no se caracteriza por ser um complexo celular,
apesar de ser uma decomposio celular. Neste caso, a interseo entre as 2-clulas 1 e
2 no uma face comum.
2.2 Malhas Elsticas
Malhas elsticas so mtodos que buscam reposicionar os vrtices de uma malha
por meio de simulaes de foras fsicas de atrao e repulso. Nesse caso, a malha
vista como um domnio onde os vrtices (vistos como partculas) se movimentam
at encontrarem alguma congurao de equilbrio de foras. Em geral, tais mtodos
trabalham como um sistema de molas onde cada aresta conectando dois vrtices vista
como uma mola que tem um comprimento de equilbrio. As molas contribuem no
13
Conceitos Bsicos
movimento dos vrtices para se chegar na congurao de equilbrio [2, 21].
Assumindo que as foras atuantes em um vrtice tenham sido computadas,
necessrio formular alguma equao de movimento que possa reger o comportamento
dinmico dos vrtices. Pela segunda lei de Newton, tem-se a seguinte equao:
m x =

F (2.1)
onde x o vetor de posies dos vrtices da malha, m a massa associada aos vrtices
e

F so as foras atuando nos vrtices. Este modelo pode ser estendido para o caso
massa-mola-amortecimento, onde a fora

F computada a partir das foras que agem
nos vrtices:


f : fora entre-vrtices, anloga a uma mola e age apenas entre vrtices adjacentes.


f
d
: fora de amortecimento, contrria aomovimentoe contribui para convergncia
do sistema.
Cada vrtice i possui trs variveis de estado posio x
i
, velocidade x
i
e acelerao
x
i
e dois atributos massa m
i
e coeciente de amortecimento d
i
. Para simplicar
o sistema, assumido que todos os vrtices possuem a mesma massa e o mesmo
coeciente de amortecimento.
A fora de amortecimento,

f
d
, contribui para a convergncia dos vrtices para uma
congurao estvel. Essa fora contrria ao movimento, proporcional velocidade
do vrtice e denida por

f
d
= d x.
A fora total

F agindo nos vrtices ento dada por:

F =

f +

f
d
=

f d x (2.2)
Desta forma, a equao nal do sistema pode ser descrita pela seguinte equao
diferencial ordinria de segunda ordem:
m x + d x =

f (2.3)
Uma equao diferencial de primeira ordem tambm pode ser utilizada para
formular o problema [8, 58]. Embora tenha mais chances de estacionar em um mnimo
14
Conceitos Bsicos
local, esta formulao tem maior estabilidade numrica. O movimento dos vrtices
passa a ser expresso pela seguinte equao:

f d x = 0 (2.4)
O problema pode ser ainda mais simplicado em um sistema conhecido como
quase-esttico [6, 26, 21] da forma

f = 0.
A formulao de

f determinante para a soluo do sistema. Considere

f
i
como
a fora resultante em um vrtice v
i
devido a inuncia de outros vrtices v
j
. Existem
vrias formas de se calcular tal fora, sendo a analogia com molas uma das mais
conhecidas e empregadas em CFD.
Na analogia com molas, estas sendo ctcias, so atribudas entre os vrtices e
determina-se a fora pela aplicao da lei de Hook:

f = k

(2.5)
onde k o coeciente de resistividade da mola e

o deslocamento.
Cada aresta da malha tratada como sendo uma mola possuindo um coeciente
de rigidez. Tais molas so chamadas longitudinais. Considerando que a fora
resultante em um vrtice calculada apenas para as molas que incidem nele, a prpria
conectividade da malha determina quais vrtices inuenciam no clculo das foras
atuantes no vrtice v
i
devido aos vrtices vizinhos v
j
, como mostra a Equao 2.6:

f
i
=

jV(x
i
)
k
i j
(x
j
x
i

l
i j
) (2.6)
onde

l
i j
o vetor de equilbrio entre os vrtices v
i
e v
j
, V(x
i
) representa o conjunto de
vrtices adjacentes ao vrtice v
i
.
Tal abordagem tem sido empregada em problemas de simulaes fsicas onde a
fronteira da malha se move com o tempo, como ser mostrado nas aplicaes do
Captulo 6.
Nesse tipo de problema interessante preservar algumas propriedades da malha
original. Por exemplo, a proporo entre os comprimentos das arestas. Assim, a
proporo de tamanho entre os elementos tende a ser mantida depois da suavizao.
Nesse caso o vetor

l
i j
da Equao 2.6 denido a partir da aresta entre os vrtices v
i
e
v
j
na malha original [6] e a equao da fora pode ser escrita como:
15
Conceitos Bsicos

f
i
=

jV(x
i
)
k
i j
(

i
) (2.7)
onde

i
o deslocamento do vrtice v
i
.
Para preservar a proporo de tamanho entre os elementos, o coeciente da mola
pode ser calculado como [2]:
k
i j
=
1
(l
0
i j
)
2
,
onde l
0
i j
o comprimento da aresta entre os vrtices v
i
e v
j
na malha inicial, ou seja,
antes da deformao no bordo. A Figura 2.8(a) apresenta uma representao da mola
longitudinal sobre a aresta e
i j
.
Uma limitao desse tipo de modelagem que no se pode garantir que um
vrtice no atravesse uma aresta, o que causa elementos inconsistentes (ou elementos
sobrepostos). A principal causa da decincia das molas longitudinais que elas no
levam em considerao a rea do tringulo ou o ngulo entre as arestas. Uma soluo
para este problema consiste em agregar molas torcionais [26] ao sistema. As molas
torcionais tm seus coecientes de rigidez C
i jm
calculados a partir da equao:
C
i jm
m
=
1
1 + cos(
i jm
i
)
1
1 cos(
i jm
i
)
=
1
sin
2
(
i jm
i
)
=
(e
i j
)
2
(e
im
)
2
4A(t
i jm
)
2
,
onde
i jm
i
o ngulo entre as arestas e
im
e e
jm
, A(t
i jm
) a rea do tringulo t
i jm
e C
i jm
i
o coeciente de rigidez da mola torcional situada no vrtice v
i
do tringulo t
i jm
(ver
Figura 2.8(b)). Observe que o coeciente tende a innito quando o ngulo tende a 0

ou 180

.
(a) Mola longitudinal (b) Mola torcional
Figura 2.8: Tipos de molas usadas nas aplicaes de malhas elsticas deste projeto.
As molas torcionais esto situadas nos vrtices enquanto as molas longitudinais
16
Conceitos Bsicos
esto nas arestas.
Baseado no trabalho de Farhat et al. [26], Blom [6] props uma abordagem
simplicada para agregar a informao dos ngulos num sistema composto por molas
longitudinais. Ele denominou essa mola simplicada como semi-torcional cuja idia
principal fazer comque os ngulos inuenciemos coecientes de molas longitudinais.
A proposta de Blom baseava-se simplesmente em dividir o coeciente da mola
longitudinal na aresta e
i j
pelo valor do ngulo interno do tringulo t
i jm
em v
m
(
i jm
m
).
Almde algumas indenies quanto ao clculo do coeciente para arestas internas,
a proposta de Blom tem algumas caractersticas indesejadas quando o ngulo ca
muito obtuso. Uma melhoria na abordagem de molas semi-torcionais foi introduzida
por Zeng e Ethier [64]. A idia consiste em basicamente adicionar o coeciente de
mola torcional ao coeciente de mola longitudinal oposta. Assim, o coeciente de
resistividade total na aresta e
i j
(
i j
) dado por:

i j
= k
i j
+ C
i jm
m
+ C
i jn
n
(2.8)
onde v
m
e v
n
so vrtices presentes na estrela da aresta e
i j
. A Figura 2.9 representa como
formado o coeciente
i j
na aresta e
i j
.
Figura 2.9: Ilustrao da composio do coeciente de rigidez total na aresta e
i j
formado
por duas molas torcionais e sua mola longitudinal.
A equao geral da fora no vrtice v
i
considerando tambm molas torcionais pode
ento ser descrita como:

f
i
=

jV(x
i
)
(k
i j
+ C
i jm
m
+ C
i jn
n
) [

i
]. (2.9)
Alm de malhas bidimensionais (planares), para muitas aplicaes necessrio
movimentar malhas superciais. Isto , malhas compostas por elementos
17
Conceitos Bsicos
bidimensionais representando a superfcie de um modelo tridimensional. Soares et.
al [59] desenvolveu um mtodo para aplicao de malhas elsticas em triangulaes
sobre superfcies de tal modo a preservar a geometria da superfcie original.
2.3 Consideraes Finais
Os fundamentos apresentados neste captulo foram de grande importncia para o
desenvolvimento deste projeto. Os conceitos sobre os tipos de elementos existentes
em uma malha e a relao entre eles permitiram um melhor entendimento para a
modelagem da ED, alm de se poder padronizar os tipos de dados representados por
ela.
Quanto ao conceito de malha elstica, este permitiu entender mais o funcionamento
dessas malhas e assim poder elaborar aplicaes de movimento de malhas. Estas
aplicaes sero apresentadas no Captulo 6.
18
Cap

itulo
3
Estruturas de Dados Topolgicas
Decomposies celulares, comumente empregadas em simulao numrica de
fenmenos fsicos e usualmente chamadas de malhas ou grades, podem ser agrupadas
em duas grandes categorias: regulares (ou estruturadas) e no-estruturadas.
Malhas regulares so caracterizadas por uma indexao dos elementos por meio de
estruturas de dados simples, como por exemplo, matrizes. No caso de malhas no-
estruturadas, a no uniformidade da decomposio celular requer uma estratgia de
representao mais sosticada, que so as estruturas de dados (ED) topolgicas [4].
Como foi dito anteriormente, EDs topolgicas buscam indexar os elementos da
malha de modo a representar as relaes entre eles, garantindo assim um acesso
eciente a tais informaes [46, 9]. A representao das relaes de incidncia e
adjacncia entre os elementos de uma malha de extrema importncia no contexto
de simulaes numricas de fenmenos fsicos, uma vez que mtodos numricos como
volumes nitos, elementos nitos e diferenas nitas generalizadas fazemusoextensivo
de tais relaes.
A grande maioria das EDs topolgicas descritas na literatura visa indexar os dados
de modo a facilitar os mecanismos de acesso s relaes de vizinhana e as buscas
empregadas na construo ou leitura das malhas [36] viabilizando ainda o controle de
procedimentos adaptativos [9]. Outro aspecto bastante importante destas estruturas
so os operadores topolgicos utilizados na construo e manuteno das mesmas [48].
Os dados topolgicos das malhas podem ser armazenados de duas formas: por
representao explcita ou por representao implcita. A forma explcita faz o uso
19
Estruturas de Dados Topolgicas
de listas ou vetores para armazenar tanto os elementos que constituem a malha
quanto suas relaes de incidncia e adjacncia [50]. E a forma implcita representa
apenas os elementos da malha, mantendo as relaes entre os elementos implicitamente
representadas, podendo ser recuperadas via operaes algbricas [55, 33].
As representaes implcitas tm vrias vantagens sobre a explcita, entre elas
as de menor consumo de memria e de maior simplicidade na implementao dos
operadores topolgicos, aumentando assim a conabilidade e a robustez de tais
estruturas. A principal desvantagem da representao implcita a diculdade
de empreg-la em decomposies celulares com diferentes tipos de clulas. Na
verdade, a literatura apresenta representaes implcitas com mecanismos ecientes
de recuperao das relaes de incidncia e adjacncia apenas para decomposies
simpliciais, isto , malhas triangulares [55] ou tetraedrais [7].
Este captulo apresenta os estudos de algumas EDs Topolgicas presentes na
literatura que so de maior interesse para este projeto. Entre as EDs de maior interesse
esto aquelas que so capazes de representar complexos celulares. Pretende-se aqui
fazer um estudo sobre EDs semelhantes ED proposta neste projeto, ED esta que ser
uma expanso da Opposite Face proposta por Mario Lizier [41]. A apresentao destas
EDs foi dividida de acordo com a dimenso da malha que representam: superciais
(2D) ou volumtricas (3D).
Vale ressaltar que o maior interesse desse trabalho est voltado para estruturas do
tipo implcitas que possibilitam obter as principais relaes de incidncia e adjacncia
de um dado elemento em tempo constante ou proporcional ao nmero de elementos
vizinhos deste elemento. O diferencial deste trabalho, quanto as EDs topolgicas, est
no fato de alm dela ser implcita, ela pode ser empregada em decomposies 2D ou
3D simples ou mistas.
3.1 Estruturas de Dados 2D
EDs 2D so do tipo que representam decomposies celulares de superfcie
e, dependendo do espao onde a decomposio representada, seu sistema de
coordenadas pode ser do tipo 2D ou 3D. As malhas destas decomposies so do
tipo poligonais, sendo tringulos e quadrilteros os mais comuns entre os polgonos
utilizados.
A Figura 3.1 representa uma linha de tempo de trabalhos voltados a EDs 2D ao
longo dos anos.
Proposta por Guibas e Stol [32], a ED Quad-Edge uma variante da Winged-
20
Estruturas de Dados Topolgicas
Figura 3.1: Linha de tempo dos trabalhos anteriores para EDs 2D.
Edge capaz de tratar variedades de dimenso 2 no orientveis. Pelo fato de
poder representar variedades no orientveis, esta ED necessita de uma categoria de
operaes diferente do interesse deste trabalho, por isso no ser mais detalhada.
A estrutura Singular Handle-Edge (SHE) proposta por Nonato et al. [49, 51], assim
como a Handle-Edge [42, 13], capaz de representar explicitamente o bordo de uma
superfcie combinatria. Porm, o que diferencia a SHE que ela capaz de tratar
singularidades. Devido a essa semelhana e ao fato que a Handle-Edge serviu de
base para a Compact Half-Edge (CHE), escolheu-se somente detalhar a Handle-Edge no
decorrer desta seo.
Campagna et al. [11] propuseram uma extenso escalonvel da Half-Edge chamada
de Directed-Edges. Essa estrutura pode ser representada em trs nveis de acordo com
o tipo de representao (implcita ou explcita) dos elementos da malha. Este tipo de
abordagemse faz interessante quando se deseja balancear entre o consumo de memria
e a necessidade de bom processamento. Como a CHE apresenta esse mesmo tipo de
abordagem escolheu-se somente detalh-lo quando for apresentada a CHE.
Devido s suas caractersticas, as EDs 2D de maior interesse para esse projeto (com
exceo da Opposite Face 2D que ser apresentada na Seo 3.3) sero detalhadas a
seguir.
3.1.1 Winged-Edge
A Winged-Edge proposta por Baumgart [3] um dos primeiros trabalhos propostos
para a representao de superfcies emR
3
. Esta EDutiliza arestas para poder acessar os
dados necessrios de uma malha. Nesta ED, as seguintes informaes so necessrias
para cada aresta da malha:
Os vrtices de suas extremidades;
As faces esquerda e direita dela;
A aresta antecessora e sucessora desta aresta em relao face da esquerda;
21
Estruturas de Dados Topolgicas
A aresta antecessora e sucessora desta aresta em relao face da direita.
A tabela 3.1 demonstra os dados armazenados referentes aresta a presente na
Figura 3.2.
Figura 3.2: Representao de informaes de uma aresta armazenada por uma winged-
edge.
Tabela 3.1: Dados armazenados referentes a aresta a da Figura 3.2.
Aresta Vrtice Faces Esquerda Direita
Nome Inicio Final Esquerda Direita Pred Suc Pred Suc
a X Y 1 2 d b c e
Alm da tabela 3.1, a Winged-Edge necessita de mais duas tabelas: uma tabela de
vrtices, onde, alm do identicador do vrtice, o indicador de uma aresta incidente a
este vrtice armazenado; e uma tabela de faces, onde, alm do identicador da face,
o indicador de uma aresta pertencente ao bordo dessa face armazenado.
3.1.2 Half-Edge
A Half-Edge uma ED proposta por Mntyl [46] centrada em uma aresta capaz de
manter informao de incidncia de vrtices, arestas e faces. Cada aresta decomposta
em duas half-edges com orientao induzida por sua clula incidente (Figura 3.3).
Uma face incidente e um vrtice incidente so armazenados em cada half-edge,
e, para cada face e vrtice, uma half-edge armazenada. A Figura 3.3 representa a
associao da half-edge (HE
i
) com os seus elementos adjacentes. Nota-se que o vrtice
incidente a HE
i
est de vermelho, e sua face incidente induz sua orientao no sentido
anti-horrio. A half-edge oposta (O(HE
i
)) de HE
i
tem orientao invertida induzida pela
face oposta a face de HE
i
.
22
Estruturas de Dados Topolgicas
Figura 3.3: Uma half-edge com a associao de seus elementos incidentes.
Assim como a Winged-Edge, algumas modicaes feitas Half-Edge podem tornar
possvel a omisso de algumas das informaes fazendo com que ambas as estruturas
utilizem menos memria.
3.1.3 Handle-Edge
A Handle-Edge uma verso estendida da Half-Edge proposta por Lopes [42], cujo
propsito a representao eciente para uso de operadores de ala. Deste modo, a
Handle-Edge necessita representar explicitamente as curvas de bordo da superfcie. A
ED utiliza ponteiros para representar os tipos de ns de cada elemento da malha.
Entre os ns da estrutura tem-se: o n face que representa o tringulo que compe a
superfcie; o n vrtice que representa tanto os ns internos quantos os ns de bordo; o
n half-edge HE
i
que representa a orientao da aresta na sua face incidente; o n curva
de bordo que representa uma componente do bordo atravs de uma aresta pertencente
uma de suas arestas incidentes; o n aresta que representa tanto as arestas internas
quanto as arestas de bordo, cada aresta composta pelo trio (HE
i
, HE
j
, S) onde i j e
S representa a curva de bordo a quem a aresta possa pertencer.
Note que a representao da aresta s pode ser feita da forma (HE
i
, HE
j
, ),
(HE
i
, , S) ou (, HE
j
, S) como mostra a Figura 3.4. Para cada aresta se uma de suas
HE vazia a aresta dita como sendo aresta de bordo da superfcie, caso contrrio, a
aresta dita como sendo aresta de interior.
Figura 3.4: Formas de composio de uma aresta de interior (esquerda) e uma aresta
de bordo (direita).
23
Estruturas de Dados Topolgicas
3.1.4 Corner-Table
Uma Corner-Table uma ED concisa para representar malhas triangulares. Nela
usado o conceito de corners para representar a associao de um tringulo a um de seus
vrtices ou, equivalentemente, associar um tringulo ao bordo oposto de uma corner
[55, 62].
Nesta ED, as corners, os vrtices e os tringulos so indexados por nmeros no
negativos. Cada tringulo denido por trs corners consecutivos que denem sua
orientao. A indexao das corners diferente para cada tringulo. Por exemplo, na
Figura 3.5, as corners 0, 1 e 2 correspondemao primeiro tringulo (tringulo 0), as corners
3, 4 e 5 correspondem ao segundo tringulo (tringulo 1) e assim sucessivamente.
Como consequncia disso, uma corner c associada ao seu tringulo t por t = c%3
(onde c%3 uma operao que retorna o resto da diviso de c por 3). A corner-table
representa a geometria de uma superfcie por associar cada corner ao seu ndice de
vrtice geomtrico.
Assumindo a orientao anti-horria de representao dos tringulos, para cada
corner c, o prox(c) e o ante(c) so corners de seu tringulo obtidos atravs do uso de das
seguintes equaes: prox(c) = (c +1)%3 e ante(c) = (c +2)%3. Estas equaes tornam-se
importantes na obtenode dados dos vrtices vizinhos dentrode ummesmotringulo.
Pelo fato do armazenamento dos pontos seguiremo sentido de construo do tringulo,
pode-se saber qual vrtice vizinho est sendo acessado.
A adjacncia de bordos entre tringulos vizinhos representada por associar a cada
corner c sua corner oposta O[c] que tem a mesma aresta oposta. A Figura 3.5 demonstra
os elementos (vrtices, corners e tringulos) para o caso de um tetraedro e a tabela 3.2
uma lista dos dados deste tetraedro. importante destacar que como o tetraedro um
objeto grco slido denido por uma malha triangular, toda corner tem associado a
ela trs faces triangulares e consequentemente trs corners opostos.
Levando em considerao a equao t(c) = c/3 pode-se fazer a representao dos
tringulos t(c) da malha de forma implcita.
3.1.5 Compact Half-Edge
A ED Compact Half-Edge (CHE) proposta por Lage [39] apresenta caractersticas
semelhantes s apresentadas nas estruturas Handle-Edge, Corner-Table e Direct-Edges.
Inicialmente, essa EDfoi criada para representar malhas triangulares, mas recentemente
foram incorporadas algumas extenses para representar malhas de quadrilteros e a
at mesmo malhas mistas (tringulos+quadrilteros).
24
Estruturas de Dados Topolgicas
Figura 3.5: Vrtices, corners e faces de um tetraedro aberto.
Tabela 3.2: Lista de dados do tetraedro.
Corner Vrtice Tringulo Oposto
0 0 0 2
1 1 0 2
2 3 0 2
3 1 1 0
4 2 1 0
5 3 1 0
6 1 2 3
7 0 2 3
8 2 2 3
9 3 3 1
10 2 3 1
11 0 3 1
Baseada na Direct-Edges, essa EDtema caracterstica de ser escalonvel por fazer um
balanceamento entre o consumo de memria e a necessidade de bomprocessamento da
aplicao onde a ED usada. Para isso, a ED composta por 4 nveis de escalabilidade,
sendo o nvel 0 o com menor uso de memria e o nvel 3 o de maior uso de memria
mas de melhor desempenho de processamento para dados topolgicos. A seguir, sero
detalhadas algumas caractersticas dos nveis de escalabilidade:
Nvel 0
Neste nvel, s so armazenadas as informaes essenciais para representar uma
malha de tringulos. Aqui no se tem o interesse de representar relaes de
25
Estruturas de Dados Topolgicas
incidncias e adjacncias entre os elementos da malha. Serve basicamente para
aplicaes de visualizao da mesma. Porm, assimcomona Corner-Table, existem
algumas relaes de adjacncias internas s clulas entre os vrtices.
Nvel 1
A partir deste nvel, as relaes de adjacncias entre clulas so armazenadas.
Assim como na Half-Edge esta relao obtida atravs das relaes entre as half-
edges opostas de duas clulas vizinhas.
Nvel 2
At o momento, as clulas no foram representadas explicitamente, pois os seus
dados foram armazenados em suas respectivas listas em ordem de acordo com
suas clulas e orientao e, assim, a clula a quem estes dados pertencem pode
ser determinada a partir de uma simples operao algbrica. Neste nvel, as
clulas passama ser representadas explicitamente e, deste modo, pode-se associar
atributos a determinados elementos.
Nvel 3
Finalmente, neste nvel adicionada uma representao explcita para curvas de
bordo.
A Figura 3.6 representa como cada nvel desta ED formado.
3.2 Estruturas de Dados 3D
As EDs 3D representam decomposies celulares volumtricas e, devido a este fato,
o seu sistema de coordenadas do tipo 3D. As malhas destas decomposies so do
tipo poliedral, sendo os tetraedros os mais comuns entre os poliedros utilizados na
literatura.
A Figura 3.7 representa uma linha de tempo de trabalhos voltados a EDs 3D ao
longo dos anos.
Dobkin e Lazslo [22] estenderam a ED Quad-Edge para propor uma nova estrutura
chamada Facet-Edge que capaz de representar complexos celulares que sosubdivises
de uma esfera tridimensional. Porm, alm da dimenso da malha representada, a
Facet-Edge se diferencia por tratar somente complexos celulares orientveis.
A estrutura Non-Manifold Indexed Data Structure with Adjacencies foi proposta por
De Floriani e Hui [27]. Esta ED apresenta uma abordagem interessante para tratar
26
Estruturas de Dados Topolgicas
Figura 3.6: Ilustrao da composio dos 4 nveis da estrutura CHE.
Figura 3.7: Linha de tempo dos trabalhos anteriores para EDs 3D.
operaes de estrelas de seus componentes, entretanto por se tratar de uma ED que
representa no-variedades, optou-se por no detalh-la.
Devido s suas caractersticas, as EDs 3D de maior interesse para esse projeto (com
exceo da Opposite Face 3D que ser apresentada na Seo 3.3) sero detalhadas a
seguir:
3.2.1 Handle-Face
A Handle-Face uma verso estendida da Handle-Edge proposta por Lopes e Tavares
[43] para representao de malhas volumtricas formadas por tetraedros. Esta ED
utiliza o conceito de half-face representada por um tringulo, cuja orientao induzida
27
Estruturas de Dados Topolgicas
pelo tetraedro a que ela pertence. Assim como a Handle-Edge, esta ED utiliza ponteiros
para representar os tipos de ns de cada elemento da malha.
Entre os ns da estrutura tem-se: o n 3-manifold que representado por uma lista
de superfcies (que formam o bordo do volume), por uma lista de faces internas, por
uma lista de arestas internas e nalmente uma lista de vrtices internos; o n superfcie
que corresponde ao tetraedro tem uma lista de suas half-faces, de arestas e de vrtices;
o n face que pode representar tanto a face de bordo quanto a face interna. As faces
representadas aqui so do tipo triangulares, caso seja interna conectada a suas duas
half-faces e, caso contrrio, conectado a uma nica half-face e a superfcie que a contm;
o n half-face que representa uma half-face da clula (tetraedro) atravs de seu ciclo de
half-edges; entre outros, tm-se ainda os ns de arestas, os ns de half-edges e os ns de
vrtices.
3.2.2 Compact Half-Face
A ED Compact Half-Face (CHF) proposta por Lage [38, 39] apresenta caractersticas
semelhantes s apresentadas na estrutura Handle-Face. Esta ED foi criada para
representar malhas tetradricas e, assim como a CHE usa, a caracterstica de
escalabilidade de estruturas.
A CHF composta por 4 nveis de escalabilidade, sendo o nvel 0 o com menor uso
de memria e o nvel 3 o de maior uso de memria, mas de melhor desempenho
de processamento para dados topolgicos. A seguir, sero detalhadas algumas
caractersticas dos nveis de escalabilidade:
Nvel 0
Neste nvel, s so armazenadas as informaes essenciais para representar uma
malha de tetraedros. So armazenadas somente as informaes de geometria e
os tetraedros para gerar uma visualizao da malha.
Nvel 1
Neste nvel, as relaes de adjacncias entre os tetraedros soarmazenadas. Assim
como na Handle-Face esta relao obtida atravs das relaes entre uma half-face e
a sua half-face oposta.
Nvel 2
Neste nvel, as clulas passam a ser representada explicitamente e, deste modo,
pode-se associar atributos a determinados elementos. Novos contineres so
adicionados a estrutura para armazenar tais atributos.
28
Estruturas de Dados Topolgicas
Nvel 3
Finalmente, neste nvel adicionada uma representao explcita da superfcie
de bordo para representar explicitamente as relaes de incidncia e adjacncia
entre as clulas de bordo.
A Figura 3.8 representa como cada nvel desta ED formado.
Figura 3.8: Ilustrao da composio dos 4 nveis da estrutura CHF.
3.3 Estrutura de Dados - Opposite Face
Nesta seo, ser apresentada a ED Opposite Face (OF) que foi proposta por Mario
Lizier [41]. Esta EDservir de base para a implementao da EDMate Face (MF). Alguns
detalhes de implementao sero omitidos neste captulo devido semelhana entre
as duas EDs, estes detalhes sero apresentados no captulo seguinte para apresentar
semelhanas e comparaes.
O objetivo do desenvolvimento de uma nova estrutura para o armazenamento e
manipulao de malhas o de otimizar o processo de gerao de malha, priorizando
os procedimentos mais requisitados. Inicialmente, a OF foi baseada nos trabalhos
29
Estruturas de Dados Topolgicas
realizados na estrutura Corner-Table. Uma das preocupaes para a denio da
estrutura foi a minimizao do consumo de memria necessrio para a representao
da malha. Outro ponto observado foi prover facilidade de utilizao e exibilidade.
A ED representa explicitamente os vrtices e clulas (tringulos ou tetraedros)
de uma malha simplicial. Foi desenvolvida para ser exvel quanto aos tipos de
malhas que ela armazena, ou seja, dependendo onde a ED usada, os dados contidos
nela podem ser 2D ou 3D. Alm disso, podem ser acrescentados mais dados que
caracterizam a malha. Uma das suas principais caractersticas fornecer o rpido
acesso a dados topolgicos e disponibilizar funes para execuo de clculos para
malha. Esta EDfoi implementada emC++para usufruir da vantagemque a linguagem
apresenta quanto programao de estruturas exveis.
3.3.1 A estrutura
A ED armazena os componentes bsicos de uma malha e quanto a representao
desses componentes da malha, a OF faz uso dos dois tipos de representao: os dados
de vrtice, de tringulos (clula 2D) e de tetraedros (clula 3D) so representados
explicitamente, e os dados de arestas e faces so representados implicitamente.
Na ED, os vrtice e clulas so armazenados em vetores separados e identicados
por umnmero inteiro, positivo e nico para cada elemento presente emseu respectivo
vetor. Esse identicador nico permite acesso direto a qualquer um desses elementos,
pois h uma associao entre a posio da memria deste elemento e seu identicador.
A Figura 3.9 ilustra como feito o armazenamento dos dados de uma malha
supercial. A malha formada por referncias dos seus vetores de clulas e vrtices,
e, como foi dito anteriormente, cada vetor armazena seu respectivo dado usando um
identicador nico. Os vrtices so formados pelas suas coordenadas geomtricas (no
espao 2D ou 3D, dependendo do perl da malha no caso dessa Figura o espao 2D).
E, por sua vez, a clula armazena os identicadores dos vrtices que a formam alm
de suas clulas vizinhas. Assim como ocorre na Corner-Table, a relao de vizinhana
obtida a partir da relaoentre umvrtice de uma clula e uma outra clula oposta a esse
vrtice. No caso de malhas 3D formadas por tetraedros, essa idia pode ser estendida
facilmente, j que clulas vizinhas compartilham uma face entre si e os vrtices opostos
a essas faces so nicos para cada clula.
Mesmo armazenando somente as relaes de adjacncias, pode-se obter, comacesso
direto, a maioria das informaes necessrias de uma malha com bom desempenho.
Desse modo, possvel a representao implcita de certas informaes da malha
30
Estruturas de Dados Topolgicas
reduzindo assim o consumo de memria.
3.3.2 Perl de malha
Para tornar a ED exvel, foi proposta a idia de associar pers s malhas de acordo
com suas caractersticas e tipos de componentes. Assim, caso necessite, um usurio
poder criar um perl prprio alm dos pers bsicos j existentes na OF.
O que diferencia cada perl bsico da OF o tipo de identicador que indexa os
elementos da malha (int ou long), alm disso, para o espao mtrico do elemento, pode-
se utilizar os tipos de ponto utuante (oat, double e long double). Tambm necessrio
denir os tipos de vrtices (2D ou 3D), de clulas (tringulo ou tetraedro) e o tipo de
classe de manipulao de malha (planar, supercial ou volumtrica; orientada ou no
orientada). As Figuras 3.9 e 3.10 apresentam dois tipos de pers bsicos o ofDefault2D
(para representao de malhas triangulares planas) e o ofDefault3D (para representao
de malhas tetradricas), onde space do tipo ponto utuante e ids do tipo inteiro no
negativo. Nota-se que h pouca diferena entre tais pers (somente no tipo de classe
de manipulao de malha, vrtice e clula), isso demonstra a facilidade de uso da OF.
Figura 3.9: Representao explcita bsica de uma malha supercial 2D.
3.3.3 Exemplo de aplicao usando a OF
AOFvemsendoutilizada emdiversas aplicaes doLCADe emoutros laboratrios.
Aqui, ser apresentadoousodesta EDemumsistema baseadoemrealidade virtual para
simulao de procedimentos mdicos. Este sistema chamado de CyberMed [24, 25] e
31
Estruturas de Dados Topolgicas
Figura 3.10: Representao explcita bsica de uma malha supercial 3D.
foi desenvolvido em conjunto com o Laboratrio de Tecnologias para Ensino Virtual
e Estatstica da Universidade Federal da Paraba (LabTEVE-UFPB) e o Laboratrio
de Computao de Alto Desempenho da Universidade de So Paulo (LCAD-USP).
A OF foi responsvel em armazenar dados geomtricos e topolgicos dos objetos
a serem visualizados e/ou interagidos. Em cada simulao estes objetos podem
representar tanto rgos humanos quanto objetos de interao, alm disso, podem
ser compostos por mais de uma camada, ou seja, mais de uma malha supercial com
dados independentes [61, 20].
Alm dos dados bsicos j tratados na OF, a aplicao necessita de outros dados
(do tipo normais de faces e vrtices, coecientes de elasticidade, etc.) para tornar
possvel um bom nvel de realismo. Por isso a caracterstica de exibilidade da ED
foi bastante til, pois no s permitiu acesso eciente a esses dados, como tambm s
foram necessrias implementaes de classes que herdam as classes base da ED e de
um novo perl para os objetos grcos usados. Entre as classes bsicas esto as de
malha, de vrtice e de clula. Para caracterizar as classes que pertencem ao CyberMed
todas elas foram nomeadas com o prexo cyb como mostra o perl da malha detalhado
na Figura 3.11.
Neste perl (traits), nota-se que as representaes do espao so do tipo double e dos
identicadores dos elementos so do tipo inteiro. Entre as classes, vale a pena citar a
classe cybVertex que representa os vrtices no espao 3D e armazena suas coordenadas
e normais; a classe cybCell que representa as clulas triangulares com sua normal de
superfcie e os vrtices pertencentes a cada clula; e a classe cybMesh que representa
32
Estruturas de Dados Topolgicas
Figura 3.11: Perl de uma malha usada no sistema CyberMed.
a malha em geral com o vetor de clulas e vrtices. Cada uma dessas classes criadas
para o CyberMed herdam caractersticas de suas respectivas super-classes originais da
ED OF.
Os exemplos 1 e 2 demonstram duas aplicaes do CyberMed. Em cada exemplo
detalhada a composio dos objetos grcos representados quanto ao nome da camada,
nmero de vrtices e nmero de clulas.
Exemplo 1 (Visualizao da anatomia humana) Em carter geral, a visualizao desse
sistema pode ser de trs maneiras (normal, anaglifo ou obturao) [20]. Como aplicao de
visualizador da anatomia humana interessante dividir em camadas simples (ou at mesmo
mltiplas) cada rgo presente na regio do corpo sendo visualizada. A Figura 3.12 representa
um modelo que composto por 3 camadas, onde cada uma tem seus dados armazenados
separadamente, o que possvel observar durante a visualizao atravs das caractersticas
de transparncia e cor atribudas individualmente. A tabela 3.3 apresenta a composio de cada
camada, no total, o objeto composto por 43359 vrtices e 83654 clulas.
Tabela 3.3: Composio das camadas do trax.
Camada Nmero de Clulas Nmero de Vrtices
Sistema digestivo 53418 27276
Esqueleto 24702 12716
Pele 5534 3367
Total 83654 43359
Exemplo 2 (Simulao do procedimento de coleta de medula ssea) A aplicao de
coleta de medula ssea envolve uma simulao do procedimento onde uma agulha coleta medula
33
Estruturas de Dados Topolgicas
Figura 3.12: Visualizaodotraxhumanocom3 camadas: sistema digestivo, esqueleto
e pele.
a partir do osso plvico humano. Para tal aplicao dois tipos de objetos grcos so necessrios:
uma representao da rea da bacia humana formada por trs camadas (pele, osso e medula)
e uma representao da agulha que efetuar a coleta formada por uma nica camada. Nessa
simulao, a bacia o objeto esttico e a agulha o objeto de interao do usurio que efetuar a
simulao [61].
A Figura 3.13 representa um estgio da simulao, nela esto representados o objeto esttico
(onde s se v a pele da bacia) e a agulha. A pele a nica parte visvel da bacia para dar um
carter de realismo simulao, j que em uma coleta de medula real a pele tambm a nica
parte visvel. A tabela 3.4 apresenta a composio de cada camada, no total, a bacia composta
por 20930 vrtices e 41873 clulas.
Tabela 3.4: Composio dos objetos usados na simulao de coleta de medula ssea.
Camada Nmero de Clulas Nmero de Vrtices
Medula 16072 8036
Osso 24164 12070
Pele 1637 824
Total Bacia 41873 20930
Agulha 256 460
34
Estruturas de Dados Topolgicas
Figura 3.13: Visualizao de um estgio da simulao de coleta de medula ssea.
3.4 Consideraes Finais
O estudo das estruturas apresentadas neste captulo serviu de grande valia para
o desenvolvimento do projeto. Junto com os conceitos apresentados no Captulo 2,
as idias aqui apresentadas auxiliaram na modelagem e implementao da ED deste
projeto.
Mesmo que a estrutura MF seja uma extenso da OF, foram necessrias algumas
adaptaes em certas abordagens da OF. Estas adaptaes sero apresentadas no
decorrer do prximo captulo.
35
Estruturas de Dados Topolgicas
36
Cap

itulo
4
Mate Face
Neste captulo sero apresentados detalhes de modelagem e implementao da ED
topolgica chamada Mate Face (MF).
Assimcomo na OF, o desenvolvimento desta EDse focou emas duas caractersticas:
a facilidade de uso e exibilidade. Devido a isso e para apoiar usurios, o uso de
uma documentao padro de seu cdigo se fez necessrio, tornando a ED mais
compreensvel.
Um dos principais objetivos da estrutura MF poder representar tanto malhas
bidimensionais (planares ou superciais) quanto tridimensionais (volumtricas), alm
disso, essas malhas podem ser simples ou mistas. Porm, devido ao interesse em
implementar a ED seguindo a forma de representao implcita, ainda no foi possvel
representar malhas volumtricas mistas. A implementao desta foi proposta como
sendo um dos trabalhos futuros da ED.
A seguir, sero apresentados alguns detalhes de implementao da MF de acordo
com as caractersticas herdadas da OF. Nas sees posteriores, ser detalhada a
composio da estrutura, alm de serem apresentados alguns exemplos de aplicao
de visualizao de malhas. Finalmente, sero apresentados alguns resultados
comparativos com a OF e as consideraes nais.
37
Mate Face
4.1 Implementao
A estrutura OF foi implementada usando a linguagem C++. Originalmente,
esta linguagem foi adotada para se manter a compatibilidade com os demais
projetos desenvolvidos no Laboratrio LCAD. Alm disso, foram levados em conta
o desempenho que a linguagem oferece e a possibilidade de uso de templates[41].
A MF foi proposta para estender a OF quanto aos tipos de elementos que seja capaz
de representar. Uma das principais diferenas entre a OF e a MF que esta representa as
arestas e faces explicitamente. Outra diferena est no fato que a MF representa malhas
mistas e, devido a isto, foram necessrias algumas adaptaes. Uma das adaptaes
que se destacam a da operao de determinao de vizinhana de uma clula, que
originalmente (pela OF) era feita usando o conceito de corners opostos. Este conceito,
porm no adequado para malhas com faces com mais de trs vrtices. Conceitos
como half-edges e half-faces permitemo uso de uma abordagemdiferente mais adequada
para os novos tipos de dados acrescentados na extenso. As operaes de determinao
de vizinhana sero demonstradas ao longo deste captulo.
Mesmo havendo algumas modicaes, a MF herdou muitas de suas caractersticas
da OF. Algumas destas caractersticas herdadas sero apresentadas a seguir:
4.1.1 Perl de malha
Assim como na OF, todas as classes da ED MF dependem de parmetros templates
que precisam ser denidos no momento de sua declarao. Com isso, possvel tornar
a ED exvel podendo representar tipos de malhas diferentes, com dados associados
em elementos distintos, bastando apenas alterar a denio do parmetro template.
Desta maneira, no so realizados testes de vericao de tipos durante a execuo do
algoritmo sobre a estrutura, pois esta tarefa realizada durante a compilao.
Cada classe que representa um determinado componente da malha necessita de um
conjunto de parmetros templates diferente. O uso de perl foi ento escolhido para
tornar mais prtico o uso de templates, pois assim pode-se agrupar num nico conjunto
todos os parmetros necessrios para todas as classes da estrutura. Este perl deve
conter todos os tipos utilizados em todas as classes, desta maneira, ca cada classe
responsvel por escolher os tipos que utiliza.
A MF adota a mesma estrutura de perl que a OF utiliza para denio de uma
malha. A nica diferena que, devido extenso, foram adicionados os tipos
de arestas e de faces, alm de serem acrescentados novos tipos de clulas e classes
manipuladoras de malhas.
38
Mate Face
Vale salientar, mais uma vez, que o uso de pers bastante importante para tornar a
ED exvel. J que permite a um usurio criar novos pers caso deseje associar dados a
elementos da malha. Tudo o que o usurio precisa fazer criar uma nova classe (onde
o dado vai ser atribudo) que herde da sua respectiva classe base da MF. Um exemplo
desta exibilidade foi apresentado na Subseo 3.3.3.
4.1.2 Vetor de elementos
Uma das vantagens em utilizar um identicador para referenciar cada elemento de
uma malha poder associ-lo com a posio de memria do elemento. Por exemplo,
se todos os vrtices forem alocados em um vetor, pode-se enumer-los de acordo com a
posio de cada vrtice no vetor. Porm, essa abordagem tem alguns problemas, como
exemplo, o limite imposto pelo tamanho de espao de memria alocado a um vetor.
Outro problema pode ser observado quando se deseja remover algum elemento deste
vetor. Para contornar estes problemas e ainda poder tirar proveito do acesso direto
memria, Lizier [41] props o uso de um vetor alocado em partes com gerenciamento
de posies vazias. Assim, blocos de memria so alocados dinamicamente, na medida
em que novos elementos so inseridos em seus respectivos vetores.
Estes blocos so indexados em um vetor de ponteiros, onde a posio de um bloco
nesse vetor a diviso inteira do identicador do elemento pelo tamanho do bloco. A
posio do elemento no bloco dada pelo resto dessa diviso. Desta maneira, o limite
ainda estabelecido no momento em que o vetor de ponteiros alocado, mas pode-se
denir uma ordem de grandeza maior do nmero de elementos de uma malha.
A MF herda a classe deste vetor de elementos da OF e, como na OF, todo elemento
inserido neste vetor deve herdar da classe base da estrutura (mfBase), pois nesta classe
se encontra a estrutura necessria para realizar o gerenciamento de posies vazias. A
classe do vetor de elementos chamada de mfVector.
A Figura 4.1 ilustra o esquema de alocao deste vetor.
Vale salientar que na MF cada vrtice, aresta ou face podem ser representados de
duas formas: por um nico identicador que representa sua posio em seu respectivo
vetor de elementos ou por um ndice que indica sua posio em sua clula incidente.
A questo de indexao de elementos tratada na seo 4.2.4.
4.2 Composio da ED MF
Todas as malhas representadas pela MF tem associado a elas um tipo de perl. Este
perl indica a dimenso da malha e que tipos de dados e operaes que a compem.
39
Mate Face
Figura 4.1: Vetor de alocao por blocos.
Os cdigos exemplos A.1 e A.2 demonstram dois tipos de pers, o primeiro representa
uma malha supercial triangular dentro de um espao 2D, e o segundo representa uma
malha volumtrica padro formada por tetraedros.
A seguir, sero detalhados alguns dos tipos de classes bases da MF.
4.2.1 Vrtice
As informaes geomtricas bsicas da malha so armazenadas nos seus vrtices.
Cada vrtice est associado a uma posio (por um vetor de coordenadas) no espao,
que base da maioria das operaes geomtricas. Alm do vetor de coordenadas,
o vrtice armazena uma referncia (por meio de um identicador) para uma clula
incidente. Caso o vrtice seja singular, ser armazenado um identicador para uma
clula de cada componente que constitui a singularidade a ser armazenada. A gura
4.2 ilustra o caso de um vrtice singular que pertence a dois componentes diferentes.
Figura 4.2: Vrtice singular com as clulas incidentes destacadas.
40
Mate Face
Nesta EDescolheu-se representar singularidade de vrtices pois o tratamento destas
singularidades se demonstra bastante til em aplicaes de gerao de malhas. Alm
disso, este tipo de relao torna mais eciente a determinao de vizinhana entre
clulas durante o processo de carga de malha como demonstrado na seo 4.4.
A classe base dos vrtices a mfVertex. Os templates do perl necessrios para
a denio desta classe so a dimenso do espao do vrtice, que corresponde ao
tamanho do vetor que armazenar as coordenadas, e os tipos que deniro o tipo de
dado da coordenada e o tipo de identicador.
Para tratar malhas comsingularidade nos vrtices, necessrio utilizar como vrtice
base a classe mfSingularVertex, na qual uma lista de singularidade associada ao vrtice.
A partir desta lista, possvel percorrer, de forma direta, todas as clulas incidentes
a um determinado vrtice. Para denir a classe mfSingularVertex so necessrios os
mesmos parmetros da classe mfVertex.
Para simplicar o uso dos vrtices, foram implementadas as classes mfVertex2D e
mfVertex3D, que correspondem respectivamente a vrtices no espao bidimensional e
tridimensional. Estas classes s precisam do parmetro de tipos. A Figura 4.3 ilustra
uma malha planar e a composio de seus vrtices.
Figura 4.3: Composio bsica do vrtice de uma malha plana.
4.2.2 Aresta
A componente aresta representada explicitamente, e tem como classe base a
mfEdge. Foi necessrio este tipo de representao para poder associar informaes
esta componente. Porm, devido a exibilidade da ED, possvel represent-la
implicitamente, caso no seja necessrio atribu-la alguma informao. Deste modo, a
exibilidade permite o consumo menor de memria.
Por armazenar uma informao em uma nica instncia de aresta, tambm
possvel reduzir o consumo de memria. Almdo mais atribuir uma informao a uma
nica aresta consome menos tempo que atribu-la as representaes implcitas em duas
ou mais clulas. De certo modo, nesses casos, representar uma aresta explicitamente
41
Mate Face
to necessrio quanto representar um vrtice unicamente.
Diferentemente do vrtice, nesta ED no sero tratadas arestas singulares ou faces
singulares.
4.2.3 Face
Assim como a aresta, a face representada explicitamente, podendo tambm
ser representada implicitamente caso no seja necessrio atribuir informao a este
componente de malha. A componente face tem como classe base a mfFace. Esta classe
s est presente na representao de malhas volumtricas. Na estrutura, a face assume
a forma ou de um tringulo ou de um quadriltero.
4.2.4 Clula
Em cada clula, so armazenadas referncias aos seus vrtices, arestas e faces (estas
no caso de malhas 3D), e tambm so armazenadas as referncias s clulas vizinhas
determinadas atravs de arestas ou faces incidentes. A classe base para denio da
clula a mfCell.
Dependendo do tipo de malha, a clula pode representar no caso 2D: um tringulo
e um quadriltero (atravs das classes mfTriCell e mfQuadCell respectivamente); e no
caso 3D: um tetraedro, um hexaedro, um prisma e uma pirmide (atravs das classes
mfTetraCell, mfHexaCell, mfPrismCell e mfPiramidCell respectivamente). As Figuras 4.4 e
4.5 ilustram respectivamente exemplos da composio bsica das clulas triangulares
e tetradricas.
Figura 4.4: Composio bsica da clula triangular.
A ordem de indexao dos componentes desta clula um fator muito importante
para simplicar e padronizar a concepo das operaes da ED. Para isso, resolveu-
se adotar o modelo do formato VTK - Visualization ToolKit [34] como padro desta
estrutura. A Figura 4.6 ilustra o modelo para os variados tipos de clulas.
42
Mate Face
Figura 4.5: Composio bsica da clula tetradrica.
Figura 4.6: Tipos de clulas e indexao de seus vrtices baseados no modelo padro
do formato VTK.
43
Mate Face
Nocasodas clulas 2D, a indexao simples, pois noh necessidade de referenciar
a face (j que a prpria clula a face) e o nmero dos vrtices da clula igual
ao nmero das suas arestas e vizinhos. Ento, a partir da, a indexao dos dois
componentes segue a orientao da clula (sentido anti-horrio) e, no caso da aresta, a
sua indexao igual ao ndice do seu primeiro vrtice. No caso da clula vizinha, o
problema de sua indexao ser tratado na Seo 4.3.
J as clulas 3D so mais complexas que as 2D, devido aos seguintes fatores:
A presena de face e, como a vizinhana entre essas clulas determinada atravs
de faces incidentes, o fato do nmero de vrtices no ser igual ao nmero de
faces torna invivel a operao de vizinhana por vrtice oposto (com exceo do
tetraedro);
Onmero de arestas diferente do nmero de vrtices (tambmimpossibilitando
a representao de arestas por um nico vrtice);
No caso dos prismas e das pirmides, h a presena de dois tipos de faces nas
suas clulas.
Com estes fatores em mente, foi proposto que, alm dos atributos que compem a
clula (vetores dos vrtices, das arestas, das faces e dos vizinhos), sejamimplementadas
funes especiais para mapear/identicar elementos a partir de um conjunto de outros
elementos.
4.2.5 Malha
Todas as malhas suportadas pela MF so representadas pela classe base mfMesh. A
especicao do tipo de malha denida pelo tipo de vrtice, aresta, face e clula que
sero alocados em seus respectivos vetores da malha.
O tipo de malha alocada s pode ser alterado pela mudana no perl atribudo
classe mfMesh; por isso, foi necessrio denir uma classe responsvel por manuteno
e manipulao da malha. Este tipo de classe tem como classe base a mfOper e tem como
funo principal executar as rotinas necessrias quando se adiciona e remove algum
vrtice, aresta, face ou clula.
Com a representao explcita das arestas e faces, as operaes de adio e remoo
de clulas presentes na ED OF foram modicadas. Essas mudanas foram feitas
para tratar a adio/remoo destes componentes medida que as clulas forem
adicionadas/removidas.
44
Mate Face
O cdigo exemplo A.4 demonstra a construo de uma malha. Neste exemplo,
cada vrtice primeiro adicionado ao vetor de vrtices da malha e referenciado s
suas respectivas clulas. Quando uma clula obtm as referncias de todos os seus
vrtices, ela ento adicionada ao vetor de clulas da malha. Por padro da estrutura,
para o caso de malha 2D, a funo de adio da clula na malha tambm executa a
determinao de clulas vizinhas e a alocao de arestas pertencentes a esta clula e
suas vizinhas.
4.2.6 Estruturas auxiliares
As estruturas auxiliares presentes na MF so estruturas simples que seguem o
mesmo padro de programao, onde precisam ser instanciadas com o tipo de objeto
que ser armazenado.
Atualmente, so trs as estruturas disponveis: lista de elementos (mfList), vetor
de elementos (a classe mfVector que foi detalhada na Subseo 4.1.2) e rvore binria
kd-tree (mfKdTree).
4.2.7 Iteradores
Seguindo o requisito de se ter uma interface simples, uma classe base de iteradores
(mfIterator) foi criada no s para simplicar o acesso a dados que possuem alguma
relao entre si, como tambm para padronizar tal acesso. Os iteradores percorrem os
elementos da malha de acordo com a necessidade especca do seu tipo, podendo ser
um simples iterador para percorrer clulas da malha, como tambm, um que percorre
as clulas do bordo da malha. Na MF foram implementados os seguintes iteradores:
mfVerticesIterator, mfCellsIterator, mfEdgesIterator e mfFacesIterator: percorrem
respectivamente todos os vrtices, clulas, arestas e faces da malha;
mfVertexStarIterator: percorre todas as clulas que contmumdeterminado vrtice
(estrela do vrtice). Os nomes das classes deste tipo de iterador terminam com o
suxo relacionado ao tipo de clula da malha;
mfEdgeStarIterator: percorre todas as clulas que contm uma determinada aresta
(estrela da aresta). Os nomes das classes deste tipo de iterador terminam com o
suxo relacionado ao tipo de clula da malha 3D;
mfMateCellIteratorTri, mfMateCellIteratorQuad, mfMateCellIteratorHybrid2D:
percorre todas as clulas vizinhas de uma determinada clula (vizinhas por
vrtice(s) comuns e no apenas por aresta ou face comuns);
45
Mate Face
mfBoundaryCellIterator: percorre todas as clulas que possuem ao menos um
vrtice no bordo. Os nomes das classes deste iterador terminam com o suxo
relacionado ao tipo de clula da malha 2D.
Estes iteradores exigem na sua declarao apenas o perl de tipos como parmetro
template. No construtor, necessrio informar o endereo da malha que ter seus
elementos percorridos. Nos iteradores de vetor de elementos necessrio iniciar a
iterao com a posio inicial do iterador no vetor, por padro esta posio inicial
a do primeiro item do vetor. Nos casos de iteradores que envolvem vizinhana,
necessrio iniciar a iterao com o identicador do elemento cuja vizinhana se deseja
percorrer.
O cdigo exemplo A.5 demonstra o uso de trs tipos de iteradores: de lista vrtices,
de estrela de um vrtice (neste caso, o vrtice 10 da malha) e de bordo de malha.
4.2.8 Suporte a formatos de arquivos
Em certas aplicaes, se deseja carregar malhas a partir de arquivos e, tambm,
salvar os resultados em outros arquivos. Com isso em mente, as classes de leitura
presentes na OF foram adaptadas para a MF us-las alm de serem acrescentadas
outras classes. Atualmente, a MF d suporte leitura de arquivo dos formatos VTK
[34], OFF
1
, VRML [1], PLY
2
e HEX
3
. O cdigo A.6 apresenta um exemplo onde uma
malha carregada a partir de um arquivo no formato VTK, e depois salva em outro
arquivo no formato VRML (com extenso WRL).
4.2.9 Clculos geomtricos
A MF concentra todas as suas operaes de clculos geomtricos na classe
mfGeometric. O propsito desta classe de disponibilizar operaes geomtricas
bsicas, alm de tornar exvel as alteraes destas operaes realizadas pela ED e
seus algoritmos. Para acessar suas operaes, necessrio especic-la no perl de
tipos da malha, podendo at ser substituda por outra classe com a mesma interface.
Vale ressaltar que a grande maioria das operaes realizadas pela mfGeometric exige
que as malhas tenham suas clulas orientadas.
Dentre as operaes disponveis na mfGeometric esto:
dist: Calcula a distncia entre dois pontos (no espao 2D ou 3D);
1
Geomview Site: http://www.geom.uiuc.edu/software/geomview
2
PLY - Polygon File Format Site: http://local.wasp.uwa.edu.au/pbourke/dataformats/ply/
3
Unstructured Hexahedral Meshes Site: http://www.cc.gatech.edu/lindstro/data/hexzip/
46
Mate Face
orientation2D: Verica a orientao de clulas 2D no espao bidimensional;
orientation3D: Verica a orientao de clulas tetradricas;
inCircle: Verica se um ponto est dentro ou fora de um crculo denido pelo
vrtices de um tringulo;
getCircuncircle: Retorna as coordenadas do centro do circuncrculo de um
tringulo;
inDiametralCircle: Verica se um ponto est dentro ou fora do crculo diametral
de uma aresta;
inTetrahedron: Verica se um ponto est dentro ou fora de um tetraedro.
4.2.10 Operaes topolgicas
A MF disponibiliza duas classes para realizao de operaes topolgicas: a mfOper
e a mfTopology. Comofoi ditona Seo4.2.5, a mfOper e suas sub-classes soresponsveis
pelas operaes de adio e remoo de clulas. O objetivo da classe mfTopology de
permitir a fcil substituio destes tipos de algoritmos na estrutura, visto que a classe
um dos parmetros (representado por sTopology) do perl de malhas.
Dentre as operaes disponveis na mfTopology esto:
ip2D: Realiza a operao de ip em uma malha triangular;
addOnEdge: Adiciona uma aresta diagonal em um par de tringulos adjacentes.
Substituindo os dois tringulos originais por quatro novos tringulos;
collapseEdge: Executa um colapso em uma aresta ao fundir seus dois vrtice
incidentes em um s.
4.3 Adaptao da OF
Para tornar possvel a representao dos variados tipos propostos pelo projeto,
alm da OF ser estendida, parte de sua estruturao teve que ser adaptada. Entre as
adaptaes necessrias se destacam:
Representao de vizinhana de clulas
Como foi dito na Seo 4.2.4, a presena de novos elementos na malha e o fator
de meios de indexaes diferentes destes, tornou necessrio uma adaptao quanto
ao meio de representar vizinhos de clulas. Assim, o mtodo de uso de corners
opostos utilizado na OF no conveniente como mostra a Figura 4.7 para os casos
de quadrilteros (a) e hexaedros (b).
47
Mate Face
(a) (b)
Figura 4.7: Problema de indexao de vizinhana usando a idia de corners opostos em
clulas quadrilteras (a) e hexadricas (b).
A abordagem escolhida para solucionar tal problema a que utiliza half-edges em
malhas superciais e half-faces em malhas volumtricas. Neste caso, as arestas ou
faces incidentes comuns so os elementos que indicam tal vizinhana. A Figura 4.8
demonstra essa nova representao para o caso de malhas formadas por quadrilteros
e tetraedros.
(a) (b)
Figura 4.8: Abordagem de vizinhana por half-edge (he) em clulas quadrilteras (a) e
por half-face (hf) em clulas tetradricas (b).
Mapeamento de elementos de malha
Devido a maior complexidade na representao de componentes de malhas
volumtricas, foram propostos mtodos de mapeamento de elementos. Estes mtodos
utilizam relaes de vizinhana entre vrtices e orientao para melhor acessar os seus
elementos incidentes. Entre os mtodos implementados, destacam-se:
getEdgeIndex: determina o ndice de uma aresta a partir dos vrtices incidentes;
48
Mate Face
getFaceIndex: determina o ndice de uma face representada por trs de seus
vrtices. evidente que, mesmo que uma face seja quadrangular, possvel
determinar seu ndice com apenas trs de seus vrtices, j que a MF s representa
complexos celulares;
getRightFaceIndex, getLeftFaceIndex: que obtm respectivamente as faces a direita
e a esquerda de uma aresta denida pelos seus vrtices extremos, alm disso a
orientao da aresta denida pela ordem dos vrtices.
Estes mtodos de mapeamento foram implementados seguindo a estrutura de suas
respectivas classes de clula: mfTetraCell, mfHexaCell, mfPrismCell e mfPiramidCell.
Estrela de vrtices em malhas superciais
Como foi dito anteriormente, esta operao percorre todas as clulas incidentes
a um dado vrtice, para isso usa-se a referncia de vizinhana entre as clulas. A
seguir, sero apresentadas duas abordagens para a execuo das estrelas. A primeira
utilizada na OF e a segunda foi proposta para melhorar o desempenho de execuo da
operao.
A operao na estrutura OF
A operao estrela de um vrtice executada a partir de uma clula inicial, desta
clula as duas clulas vizinhas que contm o vrtice so buscadas e armazenadas
em uma lista de busca e uma lista ag. A lista de busca serve para indicar quais
clulas podem ter vizinhos que ainda no foram visitados, e a lista ag verica se
uma nova clula j foi achada e, caso no seja, adiciona esta clula nas duas listas.
A operao na estrutura MF
A operao proposta na MF faz uma abordagem diferente da OF. O acesso a
clula vizinha ainda feito pela referncia de vizinhos, porm, a operao de
estrela inicialmente faz o acesso seguindo umciclo comorientao no sentido anti-
horrio, como mostra a Figura 4.9(a). Esta gura apresenta o clculo de estrela de
um vrtice de interior. No caso de vrtice de bordo (ilustrado nas Figuras 4.9(b)
e 4.9(c)), uma vez que uma referncia vazia for achada (ou seja, uma vez que
uma das clulas no tenha vizinho quando se percorre no sentido anti-horrio),
a busca volta para a clula inicial e faz a busca no sentido horrio at achar a
referncia vazia indicando que todas as clulas da estrela foram determinadas.
49
Mate Face
Figura 4.9: Operao de estrela de um vrtice na MF, onde a clula 0 a clula inicial
da busca da operao.
A comparao de desempenho de execuo das duas abordagens ser apresentada
na Seo 4.5.4.
As adaptaes permitiram que a implementao da representao de malhas
quadrilteras seja semelhante representao de malhas triangulares. Tal semelhana
levou a possibilidade de se implementar representaes para malhas mistas, neste caso,
formadas por tringulos e quadrilteros. A Figura 4.10 demonstra a operao estrela
de um vrtice de uma malha mista, onde a transio de uma clula para outra feita a
partir da operao de transio da clula de origem.
Figura 4.10: Operao de estrela de um vrtice de interior em uma malha supercial
mista.
4.4 MF 2D
Como foi dito anteriormente, a representao das malhas bidimensionais mais
simples que a tridimensionais. Nesta seo, sero apresentadas alguns detalhes de
50
Mate Face
indexao de elementos de malhas 2D.
AFigura 4.11 representa a composiobsica da MF2D, onde sTrait2D, sVertex, sEdge
e sCell3D so respectivamente os tipos perl, vrtices, arestas e clulas da malha 3D, i
a dimenso no espao e j a quantidade de vrtices, aresta e vizinhos pertencentes a
clula do tipo sCell3D.
Figura 4.11: Ilustrao da MF 2D bsica.
A seguir, sero apresentados os tipos de malhas 2D de acordo com a clula que as
compem que so suportados pela MF.
4.4.1 Malhas triangulares
As clulas triangulares apresentama indexao de seus elementos bastante simples,
como mostra a Figura 4.12.
Figura 4.12: Indexao de elementos de uma clula triangular.
A determinao e indexao das clulas vizinhas feita a partir de arestas em
comum. A classe de operaes de manipulao da malha triangulares (mfMeshTri)
determina as clulas vizinhas medida que clulas so adicionadas malha.
51
Mate Face
Assim como na Corner-Table, dado um elemento da clula indexado por i e a
orientao da clula no sentido anti-horrio, pode-se obter os ndices do prximo
elemento (prox(i)) e do elemento anterior (ante(i)) usando as equaes:
prox(i) = (i + 1)%3
ante(i) = (i + 2)%3
Essas equaes serviram de base determinao de clulas vizinhas, como
mostrado no Algoritmo 4.1.
Algoritmo 4.1
Entrada: Seja V o vetor de vrtices de uma clula c
n
1. para i 1 at 3 faa
2. para j 1 at nmero_de_singulares[i] faa
3. c
aux
V[i]->singular[j]
4. indice
aux
c
aux
->indice_do_vertice(V[i])
5. se c
n
->id_do_vrtice(prox(i)) = c
aux
->id_do_vrtice(ante(indice
aux
)) ento
6. c
n
->Vizinho[i] c
aux
7. c
aux
->Vizinho[indice
aux
] c
n
8. se nmero_de_singulares[i] > 1
9. delete V[i]->singular[j]
10. v para linha 1.
A operao de estrela de um vrtice de uma malha triangular foi tratada na Seo
4.3, a operao ante(i) serviu de base para obteno de clulas vizinhas no sentido
anti-horrio.
Um exemplo de representao de uma malha triangular ilustrado na Figura 4.13
que mostra a visualizao da malha do modelo Olivier Hand composto por 53054
vrtices e 105860 tringulos.
Outro exemplo ilustrado na gura 4.14, onde visualizada em wireframe uma
malha de um elefante (composta por 2688 vrtice e 5384 tringulos) cujos vrtices tem
associado a eles um valor equivalente a temperatura obtido por uma simulao de
equao de calor. Cada valor representado por uma cor de acordo com a escala
apresentada ao lado da malha. Esta simulao foi realizada pela aluna de mestrado do
LCAD,amor Larissa Alves Petri.
52
Mate Face
Figura 4.13: Representao da malha do modelo Olivier Hand. Este modelo foi obtido
do repositrio Aim@Shape.
Figura 4.14: Representao em wireframe da malha de um elefante onde foi atribudo a
cada vrtice um valor de acordo com uma simulao de equao de calor.
4.4.2 Malhas quadrilteras
A representao de malhas quadrilteras segue analogamente representao de
malhas triangulares. Os ndices que representam os vrtices, as arestas e os vizinhos
53
Mate Face
seguem a orientao da face. Alm disso, o ndice da aresta (e consequentemente do
vizinho) obtido pelo primeiro vrtice que segue da sua orientao.
Semelhante s clulas triangulares, a obteno do prximo elemento (prox(i)) e do
elemento anterior (ante(i)) de um elemento i so feitas a partir das equaes:
prox(i) = (i + 1)%4
ante(i) = (i + 3)%4
A classe de operaes de manipulao da malha de quadrilteros a mfMeshQuad.
Nela so determinadas as relaes de vizinhana entre clulas usando um algoritmo
anlogo ao Algoritmo 1.
A Figura 4.15 ilustra dois modos de visualizao da malha do modelo de um busto
composto 196761 vrtices e 183552 quadrilteros. A malha composta por mltiplos
componentes. esquerda, demonstrada a capacidade de atribuir valores s clulas
da malha, onde todas as clulas pertencentes a um mesmo componente tem atribuda
a mesma cor. direita, apresentada uma visualizao normal da malha com suas
arestas em preto.
4.4.3 Malhas mistas
Assim como as malhas triangulares e quadrilteras, a indexao dos componentes
das malhas mistas segue a orientao da clula. A diferena que nas malhas mistas
so representados os dois tipos de clulas 2D. A classe base de clulas mistas 2D a
classe mfHybrid2DCell e a classe de operaes de manipulao de malhas superciais
mistas a mfMeshHybridSurface.
Para poder representar ambas as clulas da malha na classe mfHybrid2DCell, foi
escolhido manter o vetor de ndices de vrtices, arestas e vizinhos com o tamanho 4,
podendo assim armazenar todos os componentes de ambas as clulas. No caso da
clula triangular, o quarto elemento de cada vetor de ndice recebe o valor de 1, a
partir desse valor possvel determinar que tipo de clula representada e quais tipos
de equaes prox(i) e ante(i) devem ser escolhidas.
A Figura 4.10 ilustra os tipos de equaes a serem usadas para percorrer o ciclo (no
sentido anti-horrio) de uma estrela de um vrtice de interior.
Um exemplo de representao de malha supercial mista ilustrado na Figura
4.16, a malha em questo um modelo CAD (Computer Aided Design) de uma pea
de automvel composto por 5215 vrtices e 8432 clulas (sendo 6418 tringulos e 2014
54
Mate Face
Figura 4.15: Duas visualizaes da malha do modelo de um busto, que foi obtido do
repositrio Aim@Shape.
quadrilteros). Na visualizao deste modelo foi destacada (em vermelho) a estrela de
um determinado vrtice.
4.5 MF 3D
Como foi dito anteriormente, possvel determinar o ndice de arestas e faces de
uma clula a partir de um mtodo que as determina usando seus vrtices incidentes.
Assim, no necessrio que o usurio tenha conhecimento da ordem de indexao
estabelecida para cada tipo de clula.
A Figura 4.17 representa a composio bsica da MF 3D, onde sTrait3D, sVertex,
sEdge, sFace e sCell3D so respectivamente os tipos perl, vrtices, arestas, faces e
clulas da malha 3D, e i, j e k so respectivamente a quantidade de vrtices, aresta e
faces/vizinhos pertencentes clula do tipo sCell3D.
Em malhas volumtricas a operao de estrela de arestas pode ser feita de modo
anlogo operao de estrela de vrtices em malhas 2D. Pois, como a relao de
55
Mate Face
Figura 4.16: Representao da malha supercial mista de um modelo CAD obtido do
repositrio Aim@Shape.
Figura 4.17: Ilustrao da MF 3D bsica.
vizinhana feita por faces em comum, a busca de clulas incidentes aresta em
questo tambm pode ser feita atravs de um ciclo (como ilustrado na Figura 4.18).
Por outro lado, a operao da estrela de um vrtice em malhas 3D mais complexa,
pois no possvel criar um nico percurso que seja suciente para percorrer todos
os tipos de casos de estrela de vrtices. Com isso em mente foi proposto utilizar a
mesma abordagem implementada na OF. Esta abordagem se caracteriza pelo uso de
dois tipos de lista: lista de clulas obtidas pela iterao e lista de ags que indica se
56
Mate Face
Figura 4.18: Ilustrao das clulas resultantes da operao estrela da aresta em
vermelho.
uma clula j foi visitada. O primeiro passo do iterador obter a clula presente
na lista de singularidades do vrtice. Ao passo de cada iterao, uma clula da lista
de clulas retornada pelo iterador e tambm deletada dessa lista, alm disso, suas
clulas vizinhas, que contm o vrtice da iterao e que no esto na lista de ags, so
adicionadas s duas listas. Se o vrtice for uma singularidade, o passos se repetem
para todos os componentes que o contm.
A seguir, sero apresentados os tipos de malhas volumtricas suportados pela MF
de acordo com a clula que os compem.
4.5.1 Malhas tetradricas
Dentre os tipos de malhas volumtricas a serem detalhados, as malhas tetradricas
so as mais simples. Isto evidente quando se analisa que somente as arestas da clula
no podem ser indexadas por um nico ndice de vrtice. Como ilustrado na Figura
4.19, a indexao das faces igual ao ndice de seu vrtice oposto (consequentemente,
a indexao dos vizinhos tambm igual).
A classe de operaes de manipulao de malhas tetradricas a mfMeshTetra.
Assim como nas malhas 2D, durante a operao de adio de clulas, esta classe, por
meio de uso da lista de singularidade dos vrtices da clula sendo adicionada, verica
se j foi adicionada alguma clula que compartilha uma de suas faces.
A Figura 4.20 ilustra a representao do modelo Stanford Bunny atravs de seus
vrtices de bordo (em vermelho) e seus vrtices internos (em amarelo). Esta malha
foi gerada pelo mtodo a ser apresentado no Captulo 5, a nuvem de pontos usada foi
57
Mate Face
Figura 4.19: Indexao de elementos de uma clula tetradrica.
obtida do repositrio da Universidade de Stanford
4
. composta por 49918 vrtices e
198607 tetraedros.
Figura 4.20: Visualizao dos vrtices internos (em amarelo) e de bordo (em vermelho)
do modelo Stanford Bunny.
A Figura 4.21 ilustra o resultado de uma simulao numrica em uma malha
tetradrica que representa parte de um reator nuclear. Este modelo composto por
2896 vrtices e 12936 tetraedros. Foram atribudos valores aos vrtices da malha que
representam o resultado obtido da simulao.
4
The Stanford 3D Scanning Repository Site: http://graphics.stanford.edu/data/3Dscanrep/
58
Mate Face
Figura 4.21: Visualizao do resultado de uma simulao numrica de um modelo que
representa parte de um reator nuclear. Este modelo em conjunto com os dados da
simulao foi obtido do repositrio Aim@Shape.
4.5.2 Malhas hexadricas
Para representar as malhas formadas por hexaedros, foi necessria a implementao
de uma srie de mtodos de mapeamento de elementos da malha. Como foi dito na
Seo 4.3, devido diferena de nmeros de elementos de malha, os ndices de faces
e arestas de uma clula precisaram ser obtidos a partir da relao entre dois ou mais
elementos.
A classe de operaes de manipulao da malha hexadrica a mfMeshHexa.
Os modelos de malhas visualizados nas Figuras 4.22 e 4.23 foram obtidos do
repositrio de malhas hexadricas do Instituto de Tecnologia de Georgia - EUA
5
.
Tratam-se de dois modelos CAD: o Bump (Figura 4.22) composto por 1665 vrtices
e 1189 hexaedros, e o Fru (Figura 4.23) composto por 5124 vrtices e 4360 hexaedros.
4.5.3 Malhas prismticas e malhas piramidais
Assimcomoemmalhas hexadricas, para representar malhas prismticas oumalhas
piramidais foi necessria a implementao de uma srie de mtodos de mapeamento de
elementos da malha. Porm, para esses dois tipos de malhas, as suas clulas apresentam
dois tipos de faces: triangulares e quadrilteras.
Levando isso em conta e o fato que a MF somente representa complexos celulares,
foi proposto que o mtodo que obtm o ndice de uma dada face da clula s precise
de trs vrtices como parmetro.
5
Unstructured Hexahedral Meshes Site: http://www.cc.gatech.edu/ lindstro/data/hexzip/
59
Mate Face
Figura 4.22: Visualizao dos vrtices internos (em amarelo) e de bordo (em vermelho)
do modelo Bump.
Figura 4.23: Visualizao das arestas internas (em amarelo) e externas (em vermelho)
do modelo Fru.
As classes de manipulao de malha prismticas e piramidais so respectivamente
a mfMeshPrism e a mfMeshPyramid.
4.5.4 Resultados
Alm das aplicaes de visualizao apresentados anteriormente e das aplicaes a
serem apresentadas no Captulo 6, foram feitos alguns testes comparativos de tempo
entre a MF e a OF. Outro fator importante que foi analisado o consumo de memria
60
Mate Face
da MF.
Testes comparativos de tempos com relao a OF
Durante o desenvolvimento da ED, foram executados vrios testes de desempenho
e ecincia, entre os que se destacam foram os testes de comparao de tempo entre a
OF e a MF. Estes testes foram executados na plataforma linux Gentoo numa mquina
com processador Intel Core 2 Quad de 2.4GHz e 4 GB de memria RAM. Para cada
teste, as operaes sendo comparadas foram executadas 200 vezes e posteriormente foi
calculada a mdia dos tempos resultantes ( x) e seu desvio padro ().
Para realizar esses testes, foram utilizadas as malha triangulares superciais do
elefante (Figura 4.14) e Olivier Hand (Figura 4.13), e as malhas tetradricas que
representa o reator nuclear (Figura 4.21) e Stanford Bunny (Figura 4.20). A composio
dessas malhas relacionada na Tabela 4.1.
Tabela 4.1: Relao de malhas usadas nos testes.
Malha Numro de vrtices Nmero de clulas
Elefante 2688 5384
Olivier Hand 53054 105860
Reator Nuclear 2896 12936
Stanford Bunny 49918 198607
Os primeiros testes de comparao de tempo executados foram os de carga de
malha, alm de comparar a OF e a MF foi feita uma outra comparao de tempo de
carga usando uma verso da MF Implcita (MF sem representao explcita de arestas
em malhas 2D e sem representao explcita de arestas e faces em malhas 3D). Os
resultados obtidos nesses testes so apresentados na Tabela 4.2.
Os outros testes de comparao de tempo executados foram quanto a execuo da
estrela dos vrtices de toda a malha. Seus resultados so apresentados na Tabela 4.3.
Vale salientar que a adio da representao explcita da aresta no inuenciou no
desempenho desta operao. Quanto a malhas triangulares, a melhora de desempenho
foi devido simplicao da operao estrela. Como foi citado na Seo 4.3, pelo
fato do operador estrela (presente na MF) acessar clulas seguindo um ciclo, torna-se
desnecessria a execuo de operaes de vericao e adio de clulas em uma lista
(como ocorre na OF). Isto reduziu o custo de tempo em mais de 50% em comparao
com o tempo de execuo da operao na OF.
61
Mate Face
Tabela 4.2: Comparao de tempo (emsegundos) da execuo de carga de malhas pelas
EDs OF, MF e MF Implcita.
OF MF MF Implcita
Malha x x x
Elefante 0,07097 0,003426 0,071715 0,004144 0,069658 0,001779
segundos segundos segundos
Olivier 1,459645 0,0384160 1,47818 0,040295 1,426528 0,017883
Hand segundos segundos segundos
Reator 0,851 0,012008 0,81935 0,012643 0,84534 0,011533
Nuclear segundos segundos segundos
Stanford 16,33042 0,201527 17,08989 0,208193 16,31104 0,201145
Bunny segundos segundos segundos
Tabela 4.3: Comparao de tempo (em segundos) da execuo da estrela dos vrtices
das malhas pelas EDs OF e MF.
OF MF
Malha x x
Elefante 0,007805 0,005441 0,003595 0,000522
segundos segundos
Olivier 0,154575 0,111022 0,07361 0,000895
Hand segundos segundos
Reator 0,04903 0,001104 0,04845 0,001069
Nuclear segundos segundos
Stanford 0,060719 0,008114 0,60675 0,007488
Bunny segundos segundos
62
Mate Face
Consumo de memria
Alm de comparar o desempenho da MF em comparao com a OF, importante
tambm tratar o consumo de memria da ED.
Considerando que os identicadores so do tipo integer (32 bits) e que cada
coordenada do tipo double (64 bits) e dada a composio dos tipos de elementos
da malha, tem-se, para uma malha de n vrtices, m clulas e p arestas, a seguinte
relao de consumo de memria:
Vrtice: um vrtice emR
k
consome 8 k + 12 bytes;
Aresta: a aresta base (mfEdge) denida na MF consome 8 bytes;
Face: a face base (mfFace) denida na MF consome 8 bytes;
Clula 2D: a clula 2D formada por i vrtices, i arestas e i referncias aos seus
vizinhos consome 12 i + 8 bytes;
Clula 3D: a clula 3D formada por i vrtices, j arestas, l faces e l referncias aos
seus vizinhos consome 4 i + 4 j + 8 l + 8 bytes;
Uma malha 2D no espao R
k
consome (8 k +12) n +8 (3 m)/2 +(12 i +8) m
bytes;
Uma malha 3D consome 36 n +8 p +8 (l m)/2 +(4 i +4 j +8 l +8) m bytes.
Vale lembrar que a adio de oito bytes extras nos elementos devido herana
da classe mfBase (veja Seo 4.1.2). Alm disso, para calcular esses consumos, levou-se
em conta que as malhas no apresentam vrtices singulares, ou seja, os vrtices s
armazenam um identicador de clula incidente.
Exemplicando o consumo de memria para representao de uma malha
supercial (no espao R
3
) com 2 milhes de tringulos e 1 milho de vrtices seriam
necessrios aproximadamente 88 MB.
4.6 Consideraes Finais
As adaptaes feitas nos conceitos implementados na ED OF permitiram que a
MF pudesse estend-la para poder representar mais tipos de malhas e elementos.
Os resultados obtidos demonstraram que, mesmo com a extenso de representao
explcita de arestas e faces, a MF ainda apresentou um bom desempenho de tempo em
comparao com a OF.
As adaptaes aumentaram o consumo de memria da malha, mas, devido MF
ser exvel, possvel diminu-lo caso no seja necessrio atribuir valores a arestas em
63
Mate Face
malhas 2D ou arestas e faces em malhas 3D. Alm disso, a Tabela 4.2 mostra que o
desempenho de carga de malhas tambm melhora.
Com exceo da representao de malhas 3D mistas, todas as propostas feitas com
relao MF foram cumpridas. A representao de malhas 3D mistas apresenta alguns
problemas quanto incorporao de operaes especcas para cada tipo de clula.
possvel identicar cada umdesses tipos, pormuma maneira eciente de trat-lo ainda
um desao. Prope-se como atividade futura a implementao desta representao,
pois seu uso ser bastante til para dar sequncia a outros trabalhos propostos que
envolve malhas volumtricas mistas.
64
Cap

itulo
5
Gerao Algbrica de Malhas
Adaptativas a partir de Funes
Implcitas
Gerao de malhas um problema complexo de se resolver. Esse fato se mostra
mais evidente se desejar criar uma malha a partir de um modelo geometricamente
complexo. A complexidade do problema se torna maior quando se tenta gerar uma
malha que precise de pouca ou nenhuma etapa de melhoramento aps sua gerao.
Ao longo dos anos, algoritmos de gerao de malhas tetradricas tem sido proposto
com alguma garantia terica de qualidade de ngulos diedrais. Em [37], um algoritmo
inovador chamado Isosurface Stung foi apresentado. Ele capaz de gerar malhas com
delimitao signicativa de ngulos diedrais e, ao mesmo tempo, capaz de gerar
malhas tetradricas a partir de domnios geometricamente complexos.
Neste captulo ser apresentado um mtodo de gerao de malhas baseado no
uso de estnceis tetradricos e de uma regra de warping (deslocamento) de pontos
apresentados em [37] para gerar malhas com qualidade de ngulos diedrais. Para isso,
prope-se usar a triangulao J
a
1
proposta por Castelo et al. [14] em conjunto com o
algoritmo Partio da Unidade Implcita em Multi-nvel (PUI) proposto por Gois et al.
[30] para gerar uma grade tetradrica base e tambm gerar a aproximao da funo
implcita (a partir de uma nuvem de pontos). Porm, caso a superfcie j tenha uma
65
Gerao Algbrica de Malhas Adaptativas a partir de Funes Implcitas
funo implcita para represent-la, s ser necessria a triangulao J
a
1
.
O algoritmo PUI capaz de aproximar uma funo implcita a partir de uma nuvem
de pontos. Esta funo providenciar a posio relativa dos pontos da grade com
relao superfcie e permitir obter os pontos de corte das arestas transversais (arestas
com um ponto incidente dentro da superfcie e o outro ponto fora). A grade ento ser
utilizada junto com as idias de [37] para gerar a malha tetradrica nal.
Aounir as idias de ambos os trabalhos, deseja-se nosomente melhorar a qualidade
das faces superciais das malhas produzidas por Gois et al. [30], mas tambm permitir
que o mtodo gere malhas tetradricas. Ao usar a triangulao J
a
1
, o mtodo gera
malhas com o interior adaptativo sem necessidade de uma estrutura auxiliar para
torn-la adaptativa. Isto uma vantagem em comparao com a malha inicial usada
no algoritmo Isosurface Stung. Outra vantagem de se utilizar a triangulao J
a
1
est
no fato dela usar regras algbricas, pois ela permite que regras mais simples (em
comparao com as propostas em [37]) sejam utilizadas para gerar a malha nal.
A Figura 5.1 apresenta uma das malhas resultantes do gerador de malhas proposto.
Neste trabalho tem-se o interesse em gerar malhas com tetraedros superciais com
mesmo nvel de renamento. J que a prova de garantia de qualidade dos ngulos
diedrais dessa abordagem menos complexa que em uma malha com supercie
adaptativa. Infelizmente, devido falta de tempo, esta prova no foi nalizada.
Porm, o detalhamento desta proposta ser apresentado na Seo 5.4. A prova
para garantia de qualidade em superfcies adaptativas tambm foi proposta como
continuao deste trabalho. Como ser mostrado na Seo 5.4, esta prova se mostrou
bastante complexa devido diferena de tamanho entre arestas de tetraedros vizinhos
de nvel de renamento diferente.
Outras caractersticas deste mtodo so herdadas de [30], tais como:
Reconstruo com garantia topolgica: com o uso da triangulao J
a
1
para subdividir o
domnio durante a etapa da aproximao da funo implcita, os seus tetraedros podem
tambm ser usados para gerar a malha nal, evitando assim casos ambguos;
Estabilidade numrica: geralmente, a base polinomial cannica usada para resolver
os mtodos de soluo por mnimos-quadrados. Essa abordagem tende a gerar um
sistema mal-condicionado. Ao utilizar uma base de polinmios ortogonais para
resolver as aproximaes, evitado o uso de sistemas de equaes, isto melhora a
estabilidade alm de evitar a execuo de clculos custosos;
Aproximao adaptativa das funes locais: com o uso de polinmios ortogonais, o
grau dos polinmios de aproximao local pode ser ecientemente aumentado. Por
66
Gerao Algbrica de Malhas Adaptativas a partir de Funes Implcitas
Figura 5.1: Visualizao da malha do Stanford Bunny.
esta razo, o mtodo tambm adaptativo em relao s aproximaes locais;
Superfcies esprias so evitadas: em[30] foramsugeridos alguns critrios de robustez
no computacionalmente custoso que evitam a gerao de grande parte de superfcies
esprias e de artefatos.
5.1 Trabalhos Relacionados
Garantir a gerao de uma malha tetradrica comboa qualidade de ngulos diedrais
uma tarefa difcil. A necessidade de boa qualidade de ngulo se evidencia quando se
analisa o sucesso do uso de malhas tetradricas emmtodos numricos, tais como os de
elementos nitos que dependemdos tamanhos desses ngulos. ngulos muito grandes
(prximos de 180

) causam erros de interpolao e fazem com que as simulaes


numricas percam sua exatido, j ngulos muito pequenos (prximos de 0

), tornam
as matrizes de rigidez associadas com o mtodo de elemento nito fatalmente mal-
condicionadas [57].
Trabalhos anteriores que envolveram o uso de octrees [45] ou o uso da triangulao
de Delaunay [18, 56, 15, 40, 16, 53, 17] ofereceram algumas garantias tericas na
qualidade dos menores ngulos diedrais de suas malhas. Porm, como mencionado
por Labelle e Shewchuk [37], o problema desses trabalhos envolve o fato que no
oferecem uma prova para delimitao de ngulos diedrais bons e s vezes apresentam
67
Gerao Algbrica de Malhas Adaptativas a partir de Funes Implcitas
tetraedros de m qualidade na fronteira do domnio.
O algoritmo Isosurface Stung (preenchimento de isosuperfcies) proposto por
Labelle e Shewchuk [37] apresenta garantia de qualidade de malha teoricamente
provada. Duas de suas caractersticas principais so que todos os seus ngulos diedrais
so delimitados entre 8.9

e 164.8

(dependendo da escolha de parmetros), e os


tetraedros superciais tem tamanhos uniformes. Este algoritmo ser melhor detalhado
na seo 5.1.1.
Em [30], um algoritmo robusto e adaptativo de reconstruo de superfcie foi
proposto. Neste trabalho, a triangulao J
a
1
foi empregada para construir uma malha
inicial adaptativa em conjunto com o algoritmo PUI para executar a aproximao da
superfcie implcita. Mesmo que a qualidade dos resultados da malha supercial no
tenha sido muito atraente, seus resultados mostraram que o uso da triangulao J
a
1

uma alternativa promissora em comparao com a malha usada na Isosurface Stung.
A razo para isto est no fato que a triangulao J
a
1
oferece algumas vantagens, tais
como: a capacidade de gerar uma malha adaptativa sem a necessidade de uso de
estrutura auxiliar; e suas regras algbricas (que so usadas para criar os tetraedros
da triangulao) permitem a criao de uma regra de paridade mais simples que ser
detalhada na Seo 5.3.2.
Em [31, 54], foi feita uma extenso do algoritmo que aumentou signicativamente a
qualidade dos tringulos de superfcie em comparao com o trabalho anterior. Antes
da extrao da superfcie, empregado um mtodo de deslocamento de alguns dos
vrtices da malha inicial afastando-os da superfcie.
5.1.1 Isosurface Stufng
Oalgoritmo de Isosurface Stung adota algumas idias do algoritmo Marching Cubes
[44], alm disso, ele emprega o uso de estnceis para gerar a triangulao a partir da
malha inicial. Para gerar essa malha inicial, o algoritmo usa a grade Body Centered
Cubic (BCC), que proposta por Fuchs [28] e Naylor [47], junto com o algoritmo octree
(proposto por Yerry e Shephard [63]). O uso da octree permite tornar adaptativa a
malha inicial mantendo ainda a alta qualidade de malha. Uma caracterstica muito
importante da Isosurface Stung que permite a gerao de uma malha nal com boa
qualidade o uso da regra de warping (adotada do trabalho de Bern et al. [5]) e do uso
estnceis tetradricos.
Assimcomo o algoritmo de Marching Cubes, a Isosurface Stung emprega uma grade
de fundo para guiar a criao da malha. A grade BCC formada pela unio de dois
68
Gerao Algbrica de Malhas Adaptativas a partir de Funes Implcitas
pontos de grade:
BCC = Z
3

Z
3
+

1
2
,
1
2
,
1
2

,
onde Z
3
so os vrtices cubos da grade com coordenadas inteiras e Z
3
+

1
2
,
1
2
,
1
2

so
pontos localizados no centro destes cubos.
Atriangulaoresultante desses pontos dotipoDelaunay, onde todos os tetraedros
que compema malha inicial so idnticos. As arestas destes tetraedros tmtamanho 1
e

3/2, alm disso, os seus ngulos diedrais so de 60

e de 90

. Esse tipo de tetraedro


foi notado por Sommerville [60]. O fato que todos os tetraedros so iguais simplica
tanto a implementao quanto a prova de qualidade do algoritmo.
A Isosurface Stung executada em quatro etapas: avaliao de pontos, obteno
de pontos de corte, aplicao da regra de warping, e aplicao dos estnceis. Porm,
devido semelhana entre este algoritmo e o mtodo apresentado aqui neste captulo, a
explicao destas etapas foi omitida. Na Seo 5.3.2 ser apresentada uma comparao
da etapa de uso de estnceis para executar a triangulao da malha nal.
5.2 Aproximao de Superfcie Implcita a Partir de
Nuvem de Pontos e a Triangulao J
a
1
Nesta seo sero apresentados os trabalhos que serviram de base do gerador de
malhas apresentado neste captulo. Ser descrito um mtodo de aproximao de
superfcies implcitas baseado no algoritmo PUI proposto por Gois et al. [30]. E
ser apresentada tambm, a triangulao J
a
1
para melhor explicar a gerao da malha
tetradrica inicial.
5.2.1 Partio da Unidade Implcita em Multinvel
Caso o objeto a ser reconstrudo seja denido por uma nuvem de pontos, pode-se
obter uma aproximao de sua funo implcita utilizando o algoritmo PUI.
Assim como os outros mtodos de aproximao de funes implcitas, o algoritmo
PUI denido como o conjunto de nvel zero de uma funo F. Esta funo (global)
denida em um domnio e obtida atravs de uma somatria das aproximaes
locais. Para este propsito, um conjunto de funes-peso no-negativas com suporte
compacto denido: = {
1
, . . . ,
n
}, onde

n
i=0

i
(x) 1, x . Alm disso,
denido o conjunto F = { f
1
, . . . , f
n
} de funes distncia locais (com sinal) f
i
em .
Dados os conjuntos F e , a funo F : R
3
R denida como:
69
Gerao Algbrica de Malhas Adaptativas a partir de Funes Implcitas
F(x)
n

i=0
f
i
(x)
i
(x), x .
A funo de partio da unidade pode ser obtida a partir de um conjunto de um
suporte compacto no-negativo e expressa como:

i
(x) =

i
(x)

n
k=1

k
(x)
,
onde
i
(x) a funo peso de suporte compacto. Diferentemente de [52], onde o
domnio subdividido usando uma octree, o algoritmo em [30] subdivide o domnio
usando a grade da triangulao J
a
1
e dene um suporte esfrico em cada bloco desta
grade.
A funo implcita aproximada F avaliar os pontos da grade informando assim,
a posio relativa de cada ponto com respeito superfcie. Para um dado ponto p da
grade, diz-se que p est contido na regio de interesse da malha a ser gerada quando
F(p) 0.
A Figura 5.2 ilustra um exemplo bidimensional de um domnio coberto por um
conjunto de crculos, que suportam as funes peso
i
, no qual o conjunto de nvel zero
da funo apresentado em vermelho. Posteriormente, na Seo 5.3, ser detalhado
como se d o comportamento dos blocos da triangulao J
a
1
(ilustrados em preto na
Figura 5.2).
Vale a pena mencionar que este mtodo requer pontos equipados consistentemente
com vetores normais orientados. Para maiores detalhes sobre o algoritmo PUI, veja
[30, 29].
5.2.2 A Triangulao J
a
1
Proposta por Castelo et al. [12, 14], a triangulao J
a
1
uma estrutura algebricamente
denida que capaz de ser construda em qualquer dimenso. Para acomodar
aspectos locais, a triangulao J
a
1
lida com renamentos naturalmente. Duas de suas
caractersticas principais so a existncia de um mecanismo capaz de representar
unicamente cada simplexo da triangulao e a existncia de regras algbricas para
percorrer a estrutura. O uso dessas regras previne a estrutura de necessitar armazenar
informaes de conectividade dos simplexos, logo, capacitando um armazenamento
mais eciente.
A triangulao J
a
1
consiste em uma grade computacional formada por hipercubos
(blocos) n-dimensionais no domnio R
n
. Cada bloco dividido por 2
n
n! n-simplexos
70
Gerao Algbrica de Malhas Adaptativas a partir de Funes Implcitas
Figura 5.2: Ilustrao bidimensional do comportamento do renamento dos blocos de
uma triangulao J
a
1
induzidos pelo critrio de erro da aproximao.
que podem ser descritos algebricamente usando a sxtupla:
S = (g, r, , s, t, h).
Os dois primeiros elementos de S denem em que bloco o simplexo est contido,
sendo g um vetor n-dimensional que indica as coordenadas do bloco em um nvel
de renamento particular r da grade. A Figura 5.3 ilustra, esquerda, uma grade
bidimensional da J
a
1
e, direita, um bloco destacado desta grade com nvel de
renamento r = 0 (0-bloco) e g = (3, 2). Tambm na gura 5.3, pode ser notado
que os blocos da grade mais escuros so de nvel r = 1 (assim chamado de 1-bloco) e,
por isso, fazem parte de uma regio da grade de maior resoluo.
Para lidar com diferentes nveis de renamento, a triangulao J
a
1
divide o bloco
(que deve ser renado) em 2
n
blocos e aplica mudanas aos seus blocos vizinhos de tal
modo para poder acomodar os novos blocos menores que foram criados. Ento, um
novo tipo de bloco criado que ser referido como bloco de transio. Por ter este bloco
de transio, a triangulao J
a
1
obriga que no h nenhuma situao em que dois blocos
71
Gerao Algbrica de Malhas Adaptativas a partir de Funes Implcitas
Figura 5.3: Exemplo 2D de uma grade da triangulao J
a
1
(esquerda) e detalhes do
bloco g = (3, 2), r = 0 onde mostrado dois percursos para traar os simplexos do bloco
(direita). Esta gura foi adaptada do trabalho [19].
vizinhos tem diferena de nvel de renamento maior que um. O nvel de renamento
de um bloco de transio determinado pelo menor nvel de renamento entre seus
blocos vizinhos.
O bloco de transio tem algumas de suas faces k-dimensionais (onde 0 < k < n)
renadas para que possa acomodar seus blocos vizinhos renados. Isto ilustrado na
Figura 5.3, onde o bloco de transio destacado somente tem sua aresta da esquerda
renada. Os blocos que no so de transio (representado pelas cores mais claras e
mais escuras na gura) so referidos como sendo blocos bsicos.
Para representar cada n-simplexo de um bloco, o primeiro fato a ser notado que
todos compartilham entre si no mnimo um mesmo vrtice (o vrtice central rotulado
por v
0
na Figura 5.3). A partir de v
0
, o prximo passo tomado na direo positiva ou
negativa de um eixo escolhido. Resultando no vrtice v
1
(que est localizado no centro
de uma face de dimenso (n1)), o processo continua para os vrtices v
2
, . . . , v
n
(que so
respectivamente os centros das faces de dimenso (n 2), . . . , 0). Ento, por ter obtido
os vrtices do simplexo, este pode ser representado pelo caminho percorrido de v
0
at
v
n
. Os vetores e s so responsveis pela codicao deste percurso, armazena uma
permutao de n inteiros de 1 a n que representam o eixo de coordenada (onde 1 se
refere ao eixo x, 2 ao y, e assim por diante). O vetor s representa a direo (por valores
positivos ou negativos) a ser tomada no seu respectivo eixo. Na Figura 5.3, o simplexo
1 no bloco destacado representado por = (2, 1) e s = (1, 1), que signica que o
primeiro caminho a ser percorrido ao longo do eixo y (
1
= 2) na direo negativa
(s

1
= 1), e depois ao longo do eixo x (
2
= 1) na direo positiva (s

2
= 1).
72
Gerao Algbrica de Malhas Adaptativas a partir de Funes Implcitas
Os vetores e s armazenam informaes sucientes para representar os simplexos
de blocos bsicos e simplexos de bloco de transio que no intersectam uma face
renada. Para os casos restantes deve-se notar que quando uma face k-dimensional
atingida existe mais de um centro. Por causa disto, outras informaes devem
ser armazenadas para representar esses simplexos. O escalar h usado para informar
quantos passos foramnecessrios para se atingir uma face renada, e o vetor t armazena
sinais extras para os eixos
h+1
. . .
n
que so usados para escolher um centro de todos
as possibilidades de uma face renada. Ento, novamente na Figura 5.3, o simplexo 2
representado por = (1, 2), s = (1, 1), h = 1 e t = (0, 1); h igual a 1 porque somente
foi necessrio um passo antes de se atingir a aresta renada e o centro escolhido para
posicionar v
1
est na direo positiva do eixo
h+1
.
Uma maneira formal de descrever a representao de um simplexo dentro de um
hipercubo(centradona origem(0, . . . , 0) e comaresta de tamanho2) dada pela seguinte
expresso:

v
0
= (0, . . . , 0)
v
i
= v
i1
+ e

i
s

i
, for 1 i < h
v
h
= v
h1
+ e

h
s

h
+
1
2

n
k=h+1
e

k
t

k
v
i
= v
i1
+
1
2
e

i
s

i
, for h < i n
Onde e
i
o vetor com valor igual a 1 na posio i e igual a 0 nas demais.
Outro mecanismo importante da triangulao J
a
1
so as suas regra de pivotamento
para percorrer a triangulao sem utilizar uma estrutura de dados topolgica auxiliar.
Na Figura 5.3, duas operaes de pivotamento so ilustradas, onde o simplexo 1
pivotado em relao ao vrtice v
2
resultando no simplexo 3, e o simplexo 2 pivotado
em relao ao vrtice v
1
resultando no simplexo 4. Todas as regras de pivotamento da
triangulao J
a
1
podem ser achadas no trabalho de Castelo et al. [12, 14].
Para uma descrio mais detalhada do funcionamento da triangulao J
a
1
ver [54].
5.3 Gerao de Malhas Adaptativas Algbricas
Como mencionado anteriormente, o mtodo de gerao de malhas, aqui
apresentado, emprega um conjunto de estnceis na malha inicial gerada pela
triangulao J
a
1
junto com a regra de warping am de gerar uma malha tetradrica
com adaptatividade interna e com ngulos diedrais de boa qualidade.
Desconsiderando a simetria e escala de tetraedros, a triangulao J
a
1
tridimensional
composta por sete tipos de tetraedros (ilustrados na Figura 5.5): os tetraedros que
73
Gerao Algbrica de Malhas Adaptativas a partir de Funes Implcitas
formamo bloco bsico e os tetraedros que formamo bloco de transio que no atingem
uma face renada so todos do mesmo tipo (tetraedro rotulado como (1) nas Figuras 5.4
e 5.5), o resto do bloco de transio formado pelos seis tetraedros restantes de acordo
com o rtulo: os tetraedros (2) e (3) so do tipo de transio que atingem uma aresta
renada e os tetraedros (4), (5), (6) e (7) so do tipo que atingem uma face renada.
Figura 5.4: Ilustrao do bloco de transio 3Donde so rotulados os tipos de tetraedros
destacados na Figura 5.5.
Omtodo divididoemduas etapas principais: na primeira etapa a funoimplcita
aproximada em conjunto com a gerao da malha tetradrica inicial resultante da
triangulao J
a
1
; e a segunda etapa obtm a malha nal usando os estnceis e a regra de
warping.
Quando a funo implcita est sendo aproximada, a triangulao J
a
1
subdivide
o domnio em um conjunto de blocos. Para todo bloco, uma aproximao local
gerada para ajustar os dados internos ao raio de suporte circundante a este bloco. Se
o critrio de erro no for atingido para o bloco em questo, este bloco ento renado
ao subdividi-lo em oito blocos novos. Cada bloco novo ter sua nova aproximao
calculada. Isto se repetir at que todos os blocos satisfaam as condies de erro e
robustez ou at o nvel de renamento mximo predenido seja atingido. Para maiores
detalhes ver [29, 54].
Ao longo do processo de aproximao, a malha tetradrica inicial que subdivide o
domnio criada. Depois disso, cada ponto desta malha (vrtice dos tetraedros) so
74
Gerao Algbrica de Malhas Adaptativas a partir de Funes Implcitas
Figura 5.5: Ilustrao dos 7 tipos de tetraedros existentes na triangulao J
a
1
3D.
O tetraedro do canto superior esquerdo pertence ao bloco bsico e os seis restantes
pertencem ao bloco de transio.
avaliados usando a funo implcita para determinar sua posio relativa superfcie.
Posteriormente, para cada aresta transversal da grade calculado um ponto de corte,
que indica onde a aresta cruza a superfcie. Devido ao requisito de se ter qualidade
de ngulos, o mtodo verica se cada vrtice vizinho tem um ou mais pontos de corte
prximos demais dele, e, se for o caso, o vrtice warped (movido) para a posio de
um desses pontos de corte. Finalmente, o conjunto de estnceis baseado no conjunto
empregado em [37] usado para preencher os tetraedros da grade.
A seguir, a segunda etapa descrita com maior detalhamento. Primeiro sero
apresentadas as trs primeiras sub-etapas, e posteriormente a sub-etapa nal.
5.3.1 Avaliao de vrtices, pontos de corte e Warping
Dada uma malha tetradrica formada pela triangulao J
a
1
e uma funo implcita, o
mtodo primeiro avalia cada vrtice dos tetraedros para determinar sua posio relativa
e armazena esse valor. Neste estgio, os tetraedros que no contm pelo menos um
vrtice com valor menor que zero so descartados. Posteriormente, para cada aresta
transversal, o seu ponto de corte calculado usando o mtodo de regula-falsi [10].
Depois de seremobtidos todos os pontos de corte, todos os vrtices v da malha inicial
devem ser checados para determinar se um ou mais pontos de corte c esto prximos
demais. Para determinar se isso acontece, o mtodo verica se a razo entre a distncia
75
Gerao Algbrica de Malhas Adaptativas a partir de Funes Implcitas
de c para v e o tamanho da aresta onde c est localizado menor que o parmetro
preestabelecido para aquela aresta. Caso seja verdade, ento c est prximo demais de
v. Nestas condies, v passa a ocupar a posio do ponto de corte mais prximo e
reavaliado. Obviamente, por v ocupar a posio de um dos pontos de corte sua posio
relativa superfcie ser zero e seus pontos de corte adjacentes so descartados.
Foram denidos um parmetro para cada tipo de aresta. Como a superfcie das
malhas geradas tem o mesmo nvel de renamento, isto implica que a superfcie
gerada a partir do tetraedro bsico (de rtulo (1) na Figura 5.5), ou seja, so trs os tipos
de arestas diferentes. O parmetro de proporo
1
foi denido para a menor aresta de
comprimento l, o parmetro
2
para a aresta do meio de comprimento l

2 e
3
para a
maior aresta de comprimento l

3.
A execuo de warping neste mtodo ordenada de tal modo que primeiro so
vericados os vrtices de valor positivo para depois serem vericados os vrtices de
valor negativo.
5.3.2 Triangulao por estncil
Assim como o algoritmo Isosurface Stung, este mtodo emprega estnceis para
preencher os tetraedros da malha inicial. A Figura 5.6 ilustra os doze estnceis
empregados, onde os menores destes representam os tetraedros da malha que no tem
vrtices rotulados pelo sinal +, signicando que sero preenchidos por completo por
um s tetraedro. Os demais oito representam situaes em que tetraedros transversais
sero triangulados resultando de um a trs novos tetraedros.
Vale a pena mencionar que, devido ao fato de alguns estnceis resultarem em uma
ou mais faces quadrilteras (os cinco estnceis inferiores da Figura 5.6), uma ateno
especial deve ser dada quando for cortar essas faces. Como estas faces quadrilteras
tm que ser cortadas (diagonalmente) para formar dois tringulos, as diagonais que
cortam duas faces incidentes tem que ser iguais (terem os mesmos pontos extremos).
A Figura 5.7 ilustra um exemplo de faces quadrilteras que precisam ter a mesma
diagonal de corte.
Para escolher qual diagonal deve ser usada para corta este tipo de face, Labelle
e Shewchuk [37] propuseram uma regra de paridade. Esta regra envolve rotular os
dois tipos de arestas do tetraedro: arestas paralelas aos eixos de coordenadas e arestas
diagonais, e os valores das coordenadas dos vrtices so comparados para decidir como
cortar a face quadrilateral (para maiores detalhes ver [37]).
Para o caso do mtodo aqui apresentado, foi criada uma regra de paridade adaptada.
76
Gerao Algbrica de Malhas Adaptativas a partir de Funes Implcitas
Figura 5.6: Conjunto de estnceis para gerar a triangulao dos tetraedros. Os vrtices
dos tetraedros so rotulados com os sinais (0, +, ), os pontos de corte esto em branco
e a triangulao resultante est em azul. fcil notar que os cinco estnceis de baixo
geram de dois a trs tetraedros. Mesmo que a triangulao J
a
1
apresente sete tipos de
tetraedros, o tetraedro de bloco bsico foi escolhido para representar o estncil sem
qualquer perda de generalidade. Esta gura foi adaptada do trabalho [19].
Vale notar que, a aresta que forma a diagonal composta por um vrtice do tetraedro
e um ponto de corte. Alm disso os tetraedros provindos de blocos bsicos da
triangulao J
a
1
tem trs arestas paralelas aos eixos de coordenadas, ento foram
escolhidas a aresta formada pelos vrtices v
0
e v
1
e a aresta formada pelos vrtices
v
2
e v
3
para serem rotuladas como arestas pretas (como ilustrado na Figura 5.7). A
primeira parte da regra de paridade verica se um dos pontos de corte pertencentes
face quadriltera est localizado em uma aresta preta. Caso armativo, este ponto e
o seu ponto oposto (com relao face) so escolhidos para formar a diagonal. Caso
contrrio, deve-se vericar os vrtices do tetraedro original.
Devido s caractersticas dos tetraedros da triangulao J
a
1
, nem sempre a regra
de comparao das coordenadas de vrtices proposta em [37] funciona. Foi notado,
em muitos casos, que o uso dessa regra no foi suciente para garantir que as
diagonais de faces incidentes se encontrem. Este problema ocorre porque algumas
77
Gerao Algbrica de Malhas Adaptativas a partir de Funes Implcitas
Figura 5.7: Exemplo de duas faces quadrilteras vizinhas que precisam ser cortadas
por uma mesma diagonal (em amarelo). Os tetraedros esquerda (formado por v
0
, v
1
,
v
2
e v
3
) e direita (formado por v
0
, v
1
, v
2
e v
3
) foram rotacionados em sentidos opostos
em relao a aresta formada por v
0
e v
1
para melhor visualizar as faces vizinhas.
faces dos tetraedros so paralelas aos planos cartesianos, isto implica que a anlise por
comparao de coordenadas no gera o mesmo critrio para denio da diagonal para
faces paralelas e no-paralelas.
Para solucionar esse problema, foi utilizada usar a ordem de percurso de vrtices
usadas na criao de tetraedros da triangulao J
a
1
[19]. Pela Figura 5.8 pode-se notar
que para umdado vrtice da malha inicial o seu ndice emqualquer tetraedro incidente
sempre ser o mesmo. Ento, o uso desses ndices possibilita a escolha dos vrtices
para formarem a diagonal que corta faces incidentes sem a necessidade de comparao
de suas coordenadas.
5.4 Prova de Qualidade dos ngulos Diedrais
Nesta seo ser apresentada a proposta da prova para analisar a qualidade dos
ngulos diedrais das malhas geradas. Esta prova dividida em duas etapas: anlise de
qualidade dos tetraedros da triangulao J
a
1
3D e a prova de qualidade dos tetraedros
gerados aps o warping (utilizando os parmetros alpha) e a triangulao por estncil.
Anlise de qualidade dos tetraedros da triangulao J
a
1
Seguindo os rtulos dos tetraedros na Figura 5.5, a Tabela 5.1 apresenta uma relao
de qualidade de ngulos diedrais e da razo de aspecto dos tetraedros que compem a
triangulao J
a
1
3D. A razo de aspecto (
ra
) foi obtida seguindo a seguinte frmula:
78
Gerao Algbrica de Malhas Adaptativas a partir de Funes Implcitas
Figura 5.8: Ordem de construo dos vrtices do tetraedro da triangulao J
a
1
. Como
ilustrado, o primeiro vrtice localiza-se no centro do bloco; o segundo o centro de
face do bloco; o terceiro o centro de uma aresta; e o quarto um vrtice do bloco. Esta
gura foi obtida do trabalho [19].

ra
=
e
max
2

6R
onde e
max
a medida da maior aresta, R = 3V/A, V o volume do tetraedro e A a rea
de sua superfcie. Amedida de
ra
= 1 refere-se a umtetraedro regular e evidentemente
a melhor medida possvel.
Tabela 5.1: Relao de ngulos diedrais mnimos e mximos dos tetraedros
(apresentados na Figura 5.5) que compem a triangulao J
a
1
.
Tetraedro ngulo mnimo ngulo mximo Razo de aspecto
1 45

90

1,70711
2 26, 57

90

2,03622
3 18, 43

108, 43

2,64412
4 45

90

2,01612
5 39, 23

116, 56

2,51152
6 35, 26

125, 26

2,91752
7 45

116, 56

3,14412
Com esta relao de ngulos diedrais dos tetraedros, provada a qualidade dos
tetraedros internos das malhas geradas.
79
Gerao Algbrica de Malhas Adaptativas a partir de Funes Implcitas
Qualidade de tetraedros superciais com mesmo nvel de renamento
A prova de qualidade dos ngulos diedrais dos tetraedros localizados na superfcie
da malha foi obtida atravs de uma simulao computacional das possveis posies de
pontos de corte emrelao aos vrtices da malha. Mesmo que s seja usado umnmero
nito de estnceis, as possveis posies dos pontos de corte podem ser innitas. Por
isso, foi implementadoumprograma que quebra os espaos das possveis conguraes
de tetraedros em um nmero nito de subespaos que podem ser vericados atravs
de um intervalo aritmtico.
A anlise de qualidade aqui realizada referente aos valores dos parmetros
atribudos aos trs tipos de arestas pertencentes aos tetraedros bsicos da triangulao
J
a
1
.
De modo anlogo [37], para executar a anlise, deve-se levar em considerao
que cada aresta da malha inicial gerada pela triangulao J
a
1
tem um segmento central
(frao entre l e (1 )l) onde no ocorre warping e dois segmentos extremos onde
ocorre. A gura 5.9, ilustra um asterstico que a unio dos segmentos incidentes a
um dos vrtices do tetraedro onde ocorre warping. Os vrtices v
0
e v
3
tem astristicos
compostos por 26 segmentos e os astersticos dos vrtices v
1
e v
2
so compostos por 10
segmentos.
O asterstico mostra que para um dado tetraedro t
j
cujo vrtice v
i
sofrer warping, a
posio onde v
i
ser deslocado no depende somente dos pontos de corte contidos nas
arestas incidentes a v
i
pertencentes t
j
. Devido possibilidade de v
i
ser deslocado ao
longo de uma aresta no pertencente a t
j
, a anlise de qualidade deve considerar todos
os possveis segmentos dos astersticos dos vrtices de t
j
.
A anlise de qualidade tambm depende dos seguintes fatos:
Um vrtice que sofreu warping est localizado no seu asterstico e seu valor (para
a escolha do estncil) zero;
Umponto de corte no pode estar localizado emuma aresta incidente a umvrtice
que sofreu warping;
Dois vrtices pertencentes a uma mesma aresta no podem ambos serem
deslocados ao longo dessa aresta. O primeiro vrtice deslocado elimina o ponto
de corte;
Um vrtice no pode ser deslocado ao longo de uma aresta cujo outro vrtice
sofreu warping.
80
Gerao Algbrica de Malhas Adaptativas a partir de Funes Implcitas
Figura 5.9: Ilustrao de um asterstico do vrtice v
0
.
A anlise de qualidade proposta segue a partir de uma congurao inicial de
tetraedro bsico da J
a
1
. Para vericar a qualidade de todos os possveis tetraedros
gerados pelo conjunto de estnceis, os vrtices do tetraedro inicial so deslocados ao
longo de seus astersticos e a cada deslocamento de cada vrtice so calculados os
ngulos diedrais dos tetraedros resultantes. So vericadas tambm as propores das
novas posies dos vrtices em relao aresta onde ocorreu o warping para calcular
os parmetros e relacion-los com a qualidade dos ngulos obtidos.
Qualidade de superfcies adaptativas
A prova de qualidade para superfcies adaptativas complexa devido a uma srie
de obstculos:
Durante a execuode warping umtetraedropequenopode ter umde seus vrtices
deslocado uma distncia muito grande devido a um tetraedro vizinho maior;
Segundo Labelle e Shewchuk [37], a presena de ngulos diedrais superiores a
120

um problema, pois aps a execuo de warping pode produzir tetraedros


de pssima qualidade;
Novos parmetros devem ser calculados para as diferentes novas arestas
81
Gerao Algbrica de Malhas Adaptativas a partir de Funes Implcitas
presentes em tetraedros de blocos de transio.
Devido nova regra de paridade, um obstculo presente na Isosurface Stung no
ocorre neste mtodo. Este obstculo justamente devido ao fato dos tetraedros de
transio em [37] terem faces paralelas aos planos cartesianos.
5.5 Resultados
Nesta seo sero apresentados os resultados obtidos, alm de uma anlise de
qualidade das malhas resultantes e do consumo de tempo para ger-las. Os testes de
qualidade realizados levam em considerao os ngulos diedrais e a razo de aspecto
de cada tetraedro das malhas.
A Figura 5.10 apresenta uma comparao das malhas de um modelo de um vaso
geradas respectivamente sem e com uso da regra de warping. Para executar a segunda
etapa apresentada na Seo 5.3 para gerar a malha ilustrada na gura 5.10 foi necessrio
um tempo de 42,699 segundos, onde 11,089 segundos foi o tempo necessrio para
executar a sub-etapa de triangulao por estncil. A malha gerada usando warping
composta por 683k tetraedros. A Figura 5.11 ilustra uma aproximao de uma
regio das malhas para melhor demonstrar a diferena de qualidade. Alm disso, os
histogramas das Figuras 5.14 e 5.15 fazem uma anlise mais qualitativa.
A Figura 5.12 ilustra a malha do modelo do Drago Chins com trs visualizaes
diferentes, a Figura 5.12(d) representa a malha completa e as Figuras 5.12(a), (b) e (c)
representa a malha seccionada para mostrar a adaptatividade interna.
As Figuras 5.13(a), (b), (c) e (d) tem os tetraedros das malhas coloridos seguindo o
critrio de qualidade: tetraedros vermelhos apresentam ngulos diedrais abaixo de 10

ou acima de 164

, os laranjas apresentam ngulos entre 10

e 18

, os amarelos entre 140

e 164

, os verdes entre 126

e 140

e os demais so transparentes. Este ltimo critrio de


cor teve este intervalo escolhido pois representa os limites inferiores e superiores dos
tetraedros da triangulao J
a
1
3D e facilitaria a visualizao de tetraedros de qualidades
inferiores. Note que para essas malhas geradas no foi gerado nenhumtetraedro de m
qualidade (ngulo abaixo de 10

ou acima de 164

). Com exceo da malha do corao


(Figura 5.13(c)), todas as malhas apresentadas tiveram sua funo implcita obtida a
partir de uma nuvem de pontos. A funo implcita F utilizada para gerar a malha do
corao foi:
F(x) = (2 x
2
1
+ x
2
2
+ x
2
3
1)
3
0.2 x
2
1
x
3
3
x
2
2
x
3
3
82
Gerao Algbrica de Malhas Adaptativas a partir de Funes Implcitas
Figura 5.10: Malhas do modelo de vaso, a primeira mala foi gerada sem o uso da regra
de warping e a segunda foi gerada com o uso da regra de warping.
83
Gerao Algbrica de Malhas Adaptativas a partir de Funes Implcitas
Figura 5.11: Aproximao de regies das malhas do vaso para melhor demonstrar a
diferena do resultado sem o uso de warping ( esquerda) e com o uso de warping (
direita).
onde x o vetor de coordenadas do ponto a ser avaliado por F.
Tempo de gerao de malha
A Tabela 5.2 apresenta o tempo necessrio para gerar as malhas ilustradas na Figura
5.13 de acordo com cada etapa do mtodo proposto neste captulo. A primeira se
refere etapa de aproximao da funo implcita, da gerao da triangulao J
a
1
com
tetraedros superciais de mesmo nvel. A segunda etapa referente gerao da
malha nal usando os estnceis e a regra de warping, na tabela tambm foi apresentado
consumo de tempo da sub-etapa de triangulao por estncil desta etapa. O tempo da
execuo da primeira etapa da gerao da malha do corao nulo pois esta etapa no
foi necessria j que o corao j representado por uma funo implcita.
Tabela 5.2: Tempo de gerao das malhas ilustradas na Figura 5.13 de acordo com a
etapa. A unidade de tempo dada em segundos.
Malha 1
a
Etapa 2
a
Etapa Triangulao por estncil
Duas Esferas 48,451 s 1,799 s 0,293 s
Elipse 30,592 s 1,368 s 0,277 s
Corao 0,206 s 0,001 s
Witch Hat 1914,61 s 11,935 s 2,817 s
84
Gerao Algbrica de Malhas Adaptativas a partir de Funes Implcitas
Figura 5.12: Malha do Drago Chins composta por 1053k tetraedros.
85
Gerao Algbrica de Malhas Adaptativas a partir de Funes Implcitas
(a) Duas Esferas 29k tetraedros (b) Elipse 25k tetraedros
(c) Corao 8k tetraedros (d) Witch Hat 54k tetraedros
Figura 5.13: Ilustrao da relao de qualidade de tetraedros de algumas malhas
geradas pelo mtodo proposto.
Anlise de qualidade
As Figuras 5.14, 5.15, 5.16, 5.17, 5.18, 5.19, 5.20 and 5.21 ilustram os histogramas dos
ngulos diedrais e das razes de aspecto das malhas geradas. As colunas em laranja
nos histogramas de ngulos diedrais e as colunas em vermelho nos histogramas de
razo de aspecto tiveram seus tamanhos diminudos para melhor visualizar as colunas
em azul.
5.6 Consideraes Finais
Neste captulo foi apresentado um mtodo de gerao de malhas baseado no uso
de estnceis tetradricos e de uma regra de warping de pontos com objetivo de gerar
86
Gerao Algbrica de Malhas Adaptativas a partir de Funes Implcitas
(a) ngulo diedral (b) Razo de aspecto
Figura 5.14: Vaso sem warping, esta malha apresentou razo de aspecto mdio de 3,61
com desvio padro de 4,1706 e pior elemento com valor acima de 20.
(a) ngulo diedral (b) Razo de aspecto
Figura 5.15: Vaso com warping, esta malha apresentou razo de aspecto mdio de 1,77
com desvio padro de 0,2904 e pior elemento com valor de 15,5.
(a) ngulo diedral (b) Razo de aspecto
Figura 5.16: Drago chins, esta malha apresentou razo de aspecto mdio de 1,84 com
desvio padro de 0,36899 e pior elemento com valor de 19,9.
87
Gerao Algbrica de Malhas Adaptativas a partir de Funes Implcitas
(a) ngulo diedral (b) Razo de aspecto
Figura 5.17: Stanford Bunny, esta malha apresentou razo de aspecto mdio de 1,86 com
desvio padro de 0,4032 e pior elemento com valor de 19,9.
(a) ngulo diedral (b) Razo de aspecto
Figura 5.18: Duas Esferas, esta malha apresentou razo de aspecto mdio de 1,8197
com desvio padro de 0,3544 e pior elemento com valor de 4,9.
(a) ngulo diedral (b) Razo de aspecto
Figura 5.19: Elipse, esta malha apresentourazo de aspecto mdio de 1,8019 comdesvio
padro de 0,3277 e pior elemento com valor de 4,3.
88
Gerao Algbrica de Malhas Adaptativas a partir de Funes Implcitas
(a) ngulo diedral (b) Razo de aspecto
Figura 5.20: Corao, esta malha apresentou razo de aspecto mdio de 1,7293 com
desvio padro de 0,2272 e pior elemento com valor de 4,2.
(a) ngulo diedral (b) Razo de aspecto
Figura 5.21: Witch Hat, esta malha apresentou razo de aspecto mdio de 1,807 com
desvio padro de 0,33128 e pior elemento com valor de 5,1.
malhas com boa qualidade de ngulos diedrais. O uso da triangulao J
a
1
permitiu
uma nova abordagem com relao ao algoritmo de Isosurface Stung. A partir dela foi
possvel gerar uma malha adaptativa inicial sem necessitar de uma estrutura auxiliar.
Alm disso, a triangulao J
a
1
permitiu o uso de regras mais simples para gerar a malha
nal.
Os resultados obtidos so de boa qualidade, mesmo que em alguns casos ainda
existam ngulos diedrais muito grandes ou muito pequenos. Isso ocorre porque ainda
no foi possvel concluir a prova da garantia de qualidade dos ngulos. Como foi dito
anteriormente, a partir desta prova possvel determinar os valores dos parmetros
responsveis pela qualidade desses ngulos.
Quanto ao tempo necessrio para gerar as malhas nota-se que o tempo para executar
a segunda etapa bem inferior ao tempo necessrio para executar a primeira. Esse fato
89
Gerao Algbrica de Malhas Adaptativas a partir de Funes Implcitas
ocorre devido execuo de duas operaes durante a primeira etapa: renar todos os
tetraedros superciais da malha para que estes quem no mesmo nvel de renamento
e obteno dos vrtices de tetraedros para gerar a malha nal. Vale salientar que este
ltimo fator no uma decincia da triangulao J
a
1
e sim uma decincia originada
durante a expanso do trabalho de proposto por Gois et al. [30]. Uma soluo j foi
proposta e ser implementada em trabalhos futuros.
Alm de solucionar o problema de custo de tempo da primeira etapa do mtodo,
prope-se como atividade futura mais duas atividades: a nalizao da prova da
garantia de qualidade para tetraedros superciais de mesmo nvel e realizar a prova da
garantia de qualidade para superfcies adaptativas. Aps nalizar a primeira prova,
sero propostas novas regras para realizar a segunda prova. A primeira regra prioriza
a execuo da regra de warping em tetraedros menores e a segunda servir para evitar
a presena de tetraedros de pssima qualidade. Alm disso os novos parmetros
devem ser calculados.
90
Cap

itulo
6
Aplicaes
Neste captulo so apresentadas as aplicaes de movimento de malhas elsticas
que foram implementadas usando a estrutura MF. Essas malhas seguem a estratgia
de analogia com molas para malhas.
Primeiramente ser apresentada a abordagem adotada para resolver o sistema de
equaes que regem a malha elstica. Este tipo de abordagem foi baseado no trabalho
de Soares [58]. Posteriormente sero apresentadas as duas aplicaes implementadas
e seus resultados.
Nestas aplicaes foi utilizada a mola do tipo semi-torcional para movimentar os
vrtices de tal forma que se conformem nova descrio da malha sempre que for
alterado o domnio onde a malha est denida, mantendo ou melhorando a qualidade
da malha.
A primeira aplicao envolve o movimento de uma malha triangular plana que
representa a parte externa do aeroflio (corte da asa de umavio). Asegunda aplicao
envolve o movimento de uma malha mista plana que representa uma mo com buraco
circular nela.
6.1 Execuo de malha dinmica
O sistema de equaes lineares que rege a malha elstica pode ser resolvido de
vrias maneiras. Para as aplicaes apresentadas neste captulo foi considerada a
soluo iterativa pelo mtodo de Gauss-Seidel modicado onde o novo deslocamento
91
Aplicaes
do vrtice v
i
(
new
i
) depende dos deslocamentos calculados anteriormente (
old
). Por
exemplo, no caso de uso de molas semi-torcionais, o valor de
new
i
obtido por:

new
i
=

v
w
L(v
i
)

iw

old
w

v
w
L(v
i
)

iw
(6.1)
onde w so os ndices dos vrtices obtidos de acordo com a conectividade da malha.
Pode-se observar que
new
i
obtido pela mdia dos deslocamentos vizinhos ponderada
pelos coecientes de rigidez das molas. Vale lembrar que, uma vez que os vrtices
so deslocados, os coecientes de molas torcionais que compem o coeciente de mola
semi-torcional () devemser atualizados aps cada iterao. Esta atualizao diferencia
o mtodo aqui proposto do mtodo de Gauss-Seidel.
O Algoritmo 6.1 descreve os passos da execuo de movimento de malha onde
foram usadas molas semi-torcionais e a soluo do sistema pelo mtodo de Gauss-Seidel
modicado. Vale notar que o algoritmo no desloca de fato os vrtices, e sim atualiza
os vetores de deslocamento que lhes foram atribudos. O critrio de parada escolhido
identica se ainda existe algum deslocamento de vrtice maior que a tolerncia de
convergncia pr-estabelecida.
Algoritmo 6.1
Entrada: SejamMa malha a ser deslocada, Mo conjunto de vrtices na fronteira de M,
C
e
1
e C
e
2
os coecientes de molas torcionais da aresta e M que compem o coeciente
semi-torcional
e
e a tolerncia de convergncia do mtodo numrico.
1.
w
0 para todo v
w
M tal que v
w
M
2. faa
3. para cada v
i
M tal que v
i
M faa
4. calcule
new
i
/ por meio da Equao 6.1 /
5. para cada e
i
M faa
6. atualize C
e
i
1
e C
e
i
2
7. enquanto max
v
w
M
(
new
i
)
6.1.1 Vrtices ativos
Pelo Algoritmo 6.1 pode-se notar que os vrtice internos so processados em
um lao aninhado. Consequentemente, pode ocorrer desperdcio de processamento,
principalmente nonal daexecuoonde poucos vrtices ainda estosendodeslocados.
Segundo Soares [58], a sequncia em que os vrtices so visitados tambm inuencia
92
Aplicaes
na convergncia do mtodo numrico utilizado, por isso, foi proposta uma ordem de
processamento em que os vrtices so iterados em camadas (de forma semelhante a
cascas de cebola) comeando da fronteira at o interior da malha.
Outra contribuio de [58] foi o uso de um mecanismo baseado em vrtices ativos
para melhorar o desempenho computacional, controlar a sequncia de processamento
dos vrtices e tambm controlar o critrio de parada. Este mecanismo rotula os vrtices
da seguinte maneira:
ativo: o vrtice pode ser processado;
inativo: o vrtice no est sendo processado;
xo: o vrtice no pode ser processado.
Cada vrtice s pode possuir um nico rtulo. Os conjuntos de vrtices ativos e
inativos tm seus elementos dispostos em uma sequncia dada pela ordem de entrada
dos elementos.
Em uma etapa de pr-processamento, todos os vrtices da malha so rotulados de
acordo com o seguinte procedimento:
1. Rotular todos os vrtices que tero o deslocamento inicial no nulo e os vrtices
que no devem ser deslocados como xos;
2. Rotular todos os vrtices que so vizinhos aos vrtices xos como ativos;
3. Rotular como inativos todos os vrtices que ainda no foram rotulados.
Apenas os vrtices ativos podem ser iterados. Durante a execuo vrtices ativos
e inativos tem seus rtulos alternados. Um vrtice ativo se torna inativo quando
seu deslocamento for insignicante (menor que uma tolerncia ). Porm, se seu
movimento for signicativo, alm de permanecer ativo, todos os vrtices inativos
vizinhos se tornam ativos. Aps um vrtice ativo ser processado, ele removido do
incio da sequncia de processamento dos vrtices ativos.
6.1.2 Passos de iterao
As Aplicaes I e II utilizam o mecanismo de vrtices ativos adaptando assim o
Algoritmo 6.1 para torn-lo mais eciente. A execuo dessas aplicaes segue os
passos do Algoritmo 6.2.
93
Aplicaes
Algoritmo 6.2
Entrada: Seja V o conjunto de vrtices rotulados como xos da malha M, n o nmero
de passos de deslocamento de v
i
V e dx
i
o deslocamento desse vrtice v
i
para cada
passo.
1.
i
0 para todo v
i
V
2. para j 1 at n faa
3. para todo v
i
V faa
4.
i

i
+ dx
i
5. execute o Algoritmo 6.1 utilizando o mecanismo de vrtices ativos
6.2 Aplicao I - Movimento de malha triangular plana
Nesta aplicao, a malha em questo representa a regio externa de um aeroflio
(Figura 6.1). Esta malha composta por 8323 vrtices e 16232 tringulos.
Figura 6.1: Malha que representa a parte externa do aeroflio. O bordo interno da
malha (que representa o aeroflio) est localizado no centro da malha.
O deslocamento dos vrtices pertencentes ao bordo interno da malha igual para
todos os vrtices e incrementado a cada passo da aplicao.
A Figura 6.2(a) ilustra uma aproximao da regio do aeroflio onde o movimento
de malha causa mais efeito. As Figuras 6.2(b) a (e) ilustram os resultados da execuo
do movimento de malha e a Figura 6.2(f) ilustra a comparao da malha original com
o resultado obtido no 60

passo.
94
Aplicaes
(a) Malha original (b) Passo 10
(c) Passo 20 (d) Passo 40
(e) Passo 60 (f) Comparao com a malha original
Figura 6.2: Execuo do passos da Aplicao I e comparao entre a malha original e o
resultado nal.
95
Aplicaes
Para mostrar a qualidade da malha resultante aps o ltimo passo, as Figuras 6.3(a)
e (b) apresentam uma aproximao das regies da malha consideradas mais crticas
por poderem produzir tringulos de qualidade ruins.
(a) Aproximao da regio esquerda (b) Aproximao da regio direita
Figura 6.3: Aproximao das regies consideradas mais crticas aps 60 passos.
6.3 Aplicao II - Movimento de malha mista plana
A segunda aplicao envolve movimento de uma malha mista plana que representa
uma mo com um crculo retirado dela (Figura 6.4). O movimento desta malha
executado em 60 passos e os vrtices do bordo internos (o crculo) so deslocados
conforme o raio do crculo aumentado.
A Figura 6.5(a) ilustra uma aproximao da regio do crculo onde o movimento de
malha causa mais efeito. As Figuras 6.5(b) a (e) ilustram os resultados da execuo do
movimento de malha e a Figura 6.5(f) ilustra a comparao da malha original com o
resultado obtido no 60

passo.
96
Aplicaes
Figura 6.4: Malha da mo original formada por 6207 vrtices e 4345 clulas. Esta malha
foi gerada pelo algoritmo de gerao de malhas proposto por Mario Augusto de Souza
Lizir.
97
Aplicaes
(a) Malha original (b) Passo 10
(c) Passo 20 (d) Passo 40
(e) Passo 60 (f) Comparao com a malha original
Figura 6.5: Execuo do passos da Aplicao II e comparao entre a malha original e
o resultado nal.
98
Cap

itulo
7
Concluso
Nesta dissertao foramapresentados dois trabalhos que serviramde foco principal
neste projeto de mestrado: o desenvolvimento de uma ED topolgica para a
representao de malhas 2D e 3D e o desenvolvimento de um mtodo de gerao
de malhas tetradricas.
A ED desenvolvida foi a estrutura Mate Face (MF). Esta capaz de representar
implicitamente malhas bidimensionais (triangulares, quadrilteras ou mistas) e malhas
tridimensionais (tetradricas, hexadricas, prismticas ou piramidais). Os focos
principais deste trabalho foram tornar essa ED exvel quanto aos tipos de malhas
que ela representa e torn-la fcil de se utilizar sem que o usurio precise de um
conhecimento aprofundado sobre o funcionamento interno da estrutura.
A estrutura MF estende a estrutura OF, porm foi necessria uma srie de
adaptaes para possibilitar a representao de clulas no-simpliciais e permitir a
representao explcita das arestas e faces (sendo esta ltima somente em malhas
3D). Esta ltima caracterstica permite a atribuio de valores a esses componentes
de maneira mais simples. Em aplicaes onde no necessria atribuio de valores
a esses componentes, possvel reduzir o consumo de memria nas representaes
implcitas. Isto possvel devido exibilidade da estrutura MF.
Foram implementadas algumas aplicaes para testar a funcionalidade e ecincia
da estrutura MF, entre elas se destacam as aplicaes de movimento de malhas
elsticas. Estas aplicaes demonstraram um bom comportamento da estrutura tanto
99
Concluso
na aplicao envolvendo malhas triangulares quanto na aplicao envolvendo malhas
mistas.
O mtodo de gerao de malhas implementado foi baseado no algoritmo de
Isosurface Stung proposto por Labelle e Shewchuk [37]. O principal objetivo desse
mtodo gerar malhas tetradricas com adaptatividade interna que apresentam boa
qualidade de ngulos diedrais.
Os resultados obtidos apresentam a grande maioria dos tetraedros com boa
qualidade, pormdevido ao fato que ainda no foi possvel nalizar a prova da garantia
de qualidade dos ngulos diedrais, existem alguns casos de tetraedros com ngulos
muito pequenos ou muito grandes. Acredita-se que aps a nalizao desta prova
podero ser obtidos os parmetros necessrios para a garantia de qualidade. Alm
disso, ser proposta a prova de garantia de qualidade para malhas com superfcies
adaptativas.
Vale mencionar que a estrutura MF utilizada durante a segunda etapa do gerador
de malhas. O uso dessa estrutura serviu para facilitar a implementao das operaes
executadas durante a segunda etapa. Alm disso serviu tambm para novamente
testar a funcionalidade da estrutura, j que foram necessrias operaes envolvendo
vizinhanas de elementos (estrelas de vrtices) e atribuio de valores a arestas.
7.1 Trabalhos Futuros
Prope-se como trabalhos futuros as seguintes atividades:
Substituio da ED OF pela estrutura MF no sistema CyberMed para apoiar
a expanso desse sistema. A estrutura OF foi usada nesse sistema para
representao de malhas triangulares [20]. Com a expanso do CyberMed, ser
necessrio o uso de outros tipos de malhas alm das triangulares, para isso
pretende-se empregar a estrutura MF;
Resolver o problema de representao de malhas volumtricas mistas. A
possibilidade de representar malhas volumtricas ser til para dar sequncia
a outros trabalhos que envolvem malhas 3D mistas;
Desenvolvimento de aplicaes envolvendo movimento de malhas volumtricas
elsticas. Para tal propsito, pretende-se seguir a estratgia de analogia commolas
altura [58] para evitar que as clulas presentes na malha se tornem invlidas;
Alm de nalizar a prova da garantia de qualidade da gerao de malhas com
100
Concluso
tetraedros superciais de mesmo nvel de renamento, desenvolver uma prova de
qualidade envolvendo malhas tetradrica com superfcie adaptativas. Esta prova
mais complexa devido ao fato que os tetraedros so de tamanhos diferentes,
logo o clculo dos parmetros exige um maior cuidado.
101
Concluso
102
Referncias Bibliogrcas
[1] Andrea L. Ames, David R. Nadeau, and John L. Moreland. VRML 2.0 Sourcebook.
Wiley, segunda edio, 1996.
[2] J. T. Batina. Unsteady euler airfoil solutions using unstructured dynamic meshes.
AIAA Journal, 28(8):13811388, 1990.
[3] B. G. Baumgart. Apolyhedronrepresentationfor computer vision. InAFISNational
Computer Conference, volume 44, pages 589596, 1975.
[4] M. W. Bealland and M. Shephard. A general topology-based mesh data structure.
In Int. J. for Numerical Methods in Engineering, volume 40, pages 15731596, 1997.
[5] M. Bern, D. Eppstein, and J. Gilbert. Provably good mesh generation. J. Comput.
Syst. Sci., 48(3):384409, 1994.
[6] F. J. Blom. Considerations on the spring analogy. International Journal for Numerical
Methods in Fluids, 32(6), 2000.
[7] J. D. Boissonnat, O. Devillers, M. Teillaud, and M. Yvinec. Triangulations in cgal.
In In 16th Annu. ACM Sympos. Comput. Geom. ACM, 2000.
[8] F. J. Bossen and P. S. Heckbert. A pliant method for anisotropic mesh generation.
In In 5th Intl. Meshing Roundtable, pages 6374, 1996.
[9] C. L. Bottasso, O. Klass, and M. S. Shephard. Data structures and mesh
modication tools for unstructured multigrid adaptive techniques. In Engineering
with Computers, volume 14, pages 234247. Springer London, 1998.
[10] R. L. Burden and J. D. Faires. Numerical Analysis. PWS Publishing Co, USA, quarta
edio, 1989.
103
Referncias Bibliogrcas
[11] S. Campagna, L. Kobbelt, and H. Seidel. Directed edges: A scalable representation
for triangle meshes. In Journal of Graphics Tools, volume 3, pages 111, 1998.
[12] A. Castelo. Aproximao adaptativa de variedades implcias com aplicaes na
modelagemimplcita e emequaes algbrico-diferenciais. Tese de doutorado, Pontcia
Universidade Catlica do Rio de Janeiro - PUC-RIO, 1992.
[13] A. Castelo, H. Lopes, and G. Tavares. Handlebody representation for surfaces and
morse operations. In Curves and Surfaces in Computer Vision and Graphics III, pages
270283, 1992.
[14] A. Castelo, L. G. Nonato, M. Siqueira, R. Minghim, and G. Tavares. The j1a
triangulation: An adaptive triangulation in any dimension. Computer & Graphics,
30(5):737753, 2006.
[15] S.-W. Cheng, T. K. Dey, H. Edelsbrunner, M. A. Facello, and S.-H. Teng. Sliver
exudation. J. ACM, 47(5):883904, 2000.
[16] S.-W. Cheng and T. K. Dey. Quality meshing with weighted delaunay renement.
In SODA 02: Proceedings of the thirteenth annual ACM-SIAM symposium on Discrete
algorithms, pages 137146. Society for Industrial and Applied Mathematics, 2002.
[17] S.-W. Cheng, T. K. Dey., E.A. Ramos, and T. Ray. Quality meshing for polyhedra
with small angles. In Proceedings of the twentieth annual symposiumon Computational
geometry, pages 290299. ACM, 2004.
[18] L. P. Chew. Guaranteed-quality delaunay meshing in 3d (short version). In
Proceedings of the thirteenth annual symposium on Computational geometry, pages
391393. ACM, 1997.
[19] I. L. L. da Cunha, A. De Lacassa, V. Polizelli-Junior, J. P. Gois, L. G. Nonato, and
A. C. Filho. Adaptive algebraic mesh generation fromimplicit functions. In Iberian
Latin American Congress On Computational Methods in Engineering, 2008.
[20] I. L. L. da Cunha, R. M. Moraes, and L. dos S. Machado. Cybview - uma classe
para visualizao interativa e estereoscpica para sistemas de realidade virtual.
In Workshop de Iniciao Cientca - WIC-SIBGRAPI 2006, 2006.
[21] C. Degand and C. Farhat. A three-dimensional torsional spring analogy method
for unstructured dynamic meshes. Computers and Structures, 80:305316, 2002.
104
Referncias Bibliogrcas
[22] D. P. DobkinandM. J. Laszlo. Primitives for the manipulationof three-dimensional
subdivisions. Algorithmica, 4:332, 1989.
[23] H Doi and J. J. Alonso. Fluid/structure coupled aeroelastic computations for
transonic ows in turbomachinery. In ASME Turbo Expo 2002, 2002.
[24] L. dos S. Machado, S. F. Campos, I. L. L. da Cunha, and R. M. Moraes. Cybermed:
realidade virtual para ensino mdico. IFMBE Proceedings, 5:573576, 2004.
[25] L. dos S. Machado, R. M. Moraes, D. F. L. Souza, L. C. Souza, and I. L. L. da Cunha.
A framework for development of virtual reality-based training simulator. Studies
in Health Technology and Informatics, 142:174176, 2009.
[26] C. Farhat, C. Degand, B. Koobus, and M. Lesoinne. An improved method of spring
analogy dynamic unstructured uid meshes. AIAA Paper, 1998.
[27] L. De Floriani and A. Hui. A scalable data structure for three-dimensional non-
manifold objects. In Symposium on Geometry Processing, pages 7282. ACM, 2003.
[28] A. Fuchs. Automatic grid generation with almost regular delaunay tetrahedra. In
Seventh International Meshing Roundtable, pages 133148, 1998.
[29] J. P. Gois. Mnimos-quadrados e aproximao de superfcie de pontos: novas perspectivas
e aplicaes. Tese de doutorado, Universidade de So Paulo, 2008.
[30] J. P. Gois, V. Polizelli-Junior, T. Etiene, E. Tejada, A. Castelo, T. Ertl, and L. G.
Nonato. Robust and adaptive surface reconstruction using partition of unity
implicits. In SIBGRAPI 07: Proceedings of the XX Brazilian Symposium on Computer
Graphics and Image Processing, pages 95104. IEEE Computer Society, 2007.
[31] J. P. Gois, V. Polizelli-Junior, T. Etiene, E. Tejada, A. Castelo, T. Ertl, and L. G.
Nonato. Two-fold adaptive partition of unity implicits. The Visual Computer,
24(12):10131023, 2008.
[32] L. J. Guibas and J. Stol. Primitives for the manipulation of general subdivisions
and the computation of voronoi diagrams. Transactions On Graphics, 4:74123,
1985.
[33] L. Kettner. Using generic programming for designing a data structure for
polyhedral surfaces. Computational Geometry - Theory and Applications, 13:6590,
1999.
105
Referncias Bibliogrcas
[34] Kitware Inc. The VTK Users Guide - Version 4.4. Kitware Inc., 2004.
[35] W. R. Kruger, R. Heinrich, and M. Spieck. Fluid-structure coupling using cfd and
multibody simulation methods. In ICAS 2002 Congress, 2002, 2002.
[36] W. Kwok, K. Haghighi, and E. Kang. An ecient data structure for the advancing-
front triangular mesh generation technique. In Communications in Numerical
Methods in Engineering, volume 11, pages 465473, 1995.
[37] F. Labelle and J. R. Shewchuk. Isosurface stung: fast tetrahedral meshes with
good dihedral angles. ACM Trans. Graph., 26(3):57, 2007.
[38] M. Lage, T. Lewiner, H. Lopes, and L. Velho. CHF: A scalable topological
data-structure for tetrahedral meshes. In SIBGRAPI 05: Proceedings of the XVIII
Brazilian Symposium on Computer Graphics and Image Processing, pages 349356.
IEEE Computer Society, 2005.
[39] M. Lage. Scalable topological data structures for 2 and 3-manifolds. Dissertao
de mestrado, Pontcia Universidade Catlica do Rio de Janeiro - PUC-RIO, 2006.
[40] X.-Y. Li and S.-H. Teng. Generating well-shaped delaunay meshes in 3d. In SODA
01: Proceedings of the twelfth annual ACM-SIAM symposium on Discrete algorithms,
pages 2837. Society for Industrial and Applied Mathematics, 2001.
[41] M. Lizir. Gerao de malhas a partir de imagens com textura. Qualicao de
doutorado, Universidade de So Paulo, 2006.
[42] H. Lopes. Algorithms to Build and Unbuild 2 and 3 dimensional manifolds. Tese de
doutorado, Pontcia Universidade Catlica do Rio de Janeiro - PUC-RIO, 1996.
[43] H. Lopes and G. Tavares. Structural operators for modeling 3-manifolds. In Solid
modeling and applications, pages 1018. ACM, 1997.
[44] W. E. Lorensen and H. E. Cline. Marching cubes: A high resolution 3d surface
construction algorithm. SIGGRAPH Comput. Graph., 21(4):163169, 1987.
[45] S. A. Mitchell and S. A. Vavasis. Quality mesh generation in higher dimensions.
SIAM J. Comput., 29(4):13341370, 2000.
[46] M. Mntyl. An Introduction to Solid Modeling. Computer Science Press, 1988.
106
Referncias Bibliogrcas
[47] D. J. Naylor. Filling space with tetrahedra. International Journal for Numerical
Methods in Engineering, 44(10):13831395, 1999.
[48] G. M. Nielson. Volume modeling. In Volume Graphics, pages 2948. Springer-
Verlag, 2000.
[49] L. G. Nonato, A. Castelo, M. Oliveira, and M. A. S. Lizir. Topological approach
for detecting objects from images. volume 5300, pages 6273. SPIE, 2004.
[50] L. G. Nonato, A. Castelo, J. E. P. P. de Campos, H. H. Biscaro, and
R. Minghim. Topological tetrahedron characterization with application in volume
reconstruction. International Journal of Shape Modeling, 11(2):189215, 2005.
[51] L. G. Nonato, M. A. S. Lizir, J. Batista, M. Oliveira, and A. Castelo Filho.
Topological triangle characterization with application to object detection from
images. Image and Vision Computing, 26:10811093, 2008.
[52] Y. Ohtake, A. Belyaev, M. Alexa, G. Turk, and H.-P. Seidel. Multi-level partition of
unity implicits. ACM Trans. Graph., 22(3):463470, 2003.
[53] S. E. Pav and N. J. Walkington. Robust Three Dimensional Delaunay. In In 13th
International Meshing Roundtable, pages 145156, 2004.
[54] V. Polizelli-Junior. Mtodos implcitos para a reconstruo de superfcie a partir
de nuvens de pontos. Dissertao de mestrado, Universidade de So Paulo, 2008.
[55] J. Rossignac, A. Safonova, and A. Szymczak. 3d compression made simple:
Edgebreaker on a corner table. In Shape Modeling International Conference, pages
278283, 2001.
[56] J. R. Shewchuk. Tetrahedral mesh generation by Delaunay renement. In
Proceedings of the fourteenth annual symposium on Computational geometry, pages
8695. ACM, 1998.
[57] J. R. Shewchuk. What is a good linear element? interpolation, conditioning, and
quality measures. In In 11th International Meshing Roundtable, pages 115126, 2002.
[58] I. P. Soares. Movimento de malhas e remalhamento de malhas superciais. Tese de
doutorado, Instituto de Cincias Matemticas e de Computao - ICMC/USP-So
Carlos, 2007.
107
Referncias Bibliogrcas
[59] I. P. Soares, L. G. Nonato, A. Castelo Filho, and J. A. Cuminato. Malha elstica
restrita forma. InInProceedings of XXVCILAMCE- IberianLatinAmericanCongress
on Computational Methods, 2004.
[60] D. M. Y. Sommerville. Space-lling tetrahedra in euclidean space. In Proceedings
of the Edinburgh Mathematical Society, volume 41, pages 4657, 1923.
[61] D. F. Souza, I. L. L. da Cunha, L. C. Souza, R. M. Moraes, and L. dos S. Machado.
Development of a VR simulator using free tools: A case study. In Proceedings of IX
Symposium on Virtual and Augmented Reality, 2007.
[62] A. Vieira, L. Velho, H. Lopes, G. Tavares, and T. Lewiner. Fast stellar mesh
simplication. In Proceedings of the XVI Brazilian Symposium on Computer Graphics
and Image Processing, pages 2734. IEEE Press, 2003.
[63] M. A. Yerry and M. S. Shephard. Automatic three-dimensional mesh generation
by the modied-octree technique. International Journal for Numerical Methods in
Engineering, 20(11):19651990, 1984.
[64] D. Zeng and C. R. Ethier. A semi-torcional spring analogy model for updating
unstructured meshes. In 9th Anual Conference of the CFD Sopciety of Canada, page
113, 2001.
108
Ap

endice
A
Cdigos Exemplos
Neste apndice, so apresentados os trechos de cdigos exemplos que auxiliaram
no entendimento do funcionamento da MF.
A.1 - Perl padro de malha 2D
struct mfDefaultTriSurface
{
typedef mfDefaultTriSurface sTraits;
typedef double space;
typedef int ids;
typedef mfVertex2D<sTraits> sVertex;
typedef mfEdge<sTraits> sEdge;
typedef mfTriCell<sTraits> sCell;
typedef mfMesh<sTraits> sMesh;
typedef mfMeshTriSurface<sTraits> sOper;
typedef mfGeometric<sTraits> sGeometric;
typedef mfTopology<sTraits> sTopology;
}
109
Cdigos Exemplos
A.2 - Perl padro de malha 3D
struct mfDefault3D
{
typedef mfDefault3D sTraits;
typedef double space;
typedef int ids;
typedef mfVertex3D<sTraits> sVertex;
typedef mfEdge<sTraits> sEdge;
typedef mfFace<sTraits> sFace;
typedef mfTetraCell<sTraits> sCell;
typedef mfMesh<sTraits> sMesh;
typedef mfMesh3D<sTraits> sOper;
typedef mfGeometric<sTraits> sGeometric;
typedef mfTopology<sTraits> sTopology;
}
A.3 - Flexibilidade de perl
class MyCell2D : public mfTriCell<MyTraits2D>
{
public:
oat normal[3];
};
struct MyTraits2D
{
typedef MyTraits2D sTraits;
typedef double space;
typedef int ids;
typedef mfVertex3D<sTraits> sVertex;
typedef mfEdge<sTraits> sEdge;
typedef Mycell2D sCell;
typedef mfMesh<sTraits> sMesh;
typedef mfMeshTriSurface<sTraits> sOper;
typedef mfGeometric<sTraits> sGeometric;
typedef mfTopology<sTraits> sTopology;
}
110
Cdigos Exemplos
A.4 - Malha
mfMesh<mfDefaultTriSurface> malha;
mfDefaultTri::space coords[3];
mfDefaultTri::ids cell[3];
coords[0] = 0.0; coords[1] = 0.0; coords[2] = 0.0;
cell[0] = malha.addVertex(coords); //adio do primeiro vrtice
coords[0] = 1.0; coords[1] = 0.0; coords[2] = 0.0;
cell[1] = malha.addVertex(coords); //adio do segundo vrtice
coords[0] = 0.0; coords[1] = 1.0; coords[2] = 0.0;
cell[2] = malha.addVertex(coords); //adio do terceiro vrtice
malha.addCell(cell); //adio do primeiro tringulo
cell[1] = cell[2];
coords[0] = -1.0; coords[1] = 0.0; coords[2] = 0.0;
cell[2] = malha.addVertex(coords);
malha.addCell(cell);
cell[1] = cell[2];
coords[0] = -1.0; coords[1] = -1.0; coords[2] = 0.0;
cell[2] = malha.addVertex(coords);
malha.addCell(cell);
cell[1] = cell[2];
coords[0] = 1.0; coords[1] = -1.0; coords[2] = 0.0;
cell[2] = malha.addVertex(coords);
malha.addCell(cell);
cell[1] = cell[2];
cell[2] = 1;
malha.addCell(cell);
111
Cdigos Exemplos
A.5 - Iteradores
...
//iterador de vrtices
mfVerticesIterator<mfMeshTriSurface> itv(&mesh);
for( itv.initialize(); itv.notFinish(); ++itv) //percorre todos os vrtices
cout << Vrtice: << &itv << endl;
...
//iterador da estrela do vrtice
mfVertexStarIteratorTriSurf<mfMeshTriSurface> itvs(&mesh);
cout << Vrtice 10: << endl;
//Percorre todas as clulas incidente ao vrtice 10
for( itvs.initialize(10); itvs.notFinish(); ++itvs)
cout << Clula: << &itvs << endl;
...
//iterador de bordo
mfBoundaryCellIterator2D<mfMeshTriSurface> itb(&mesh);
//Percorre todas as clulas do bordo da clula 25
for( itb.initialize(25); itb.notFinish(); ++itb)
cout << Clula: << &itb << endl;
...
A.6 - Leitura e escrita de arquivos
...
mfVtkReader<mfDefault3D> entrada;
entrada.read(&mesh, malha.vtk);
...
mfOfWriter<mfDefault3D> saida
saida.write(&mesh, malha.wrl);
...
112

Você também pode gostar