SlideShare uma empresa Scribd logo
1 de 6
Baixar para ler offline
Geometria Computacional - Winged Edge
Michel Alves dos Santos ∗
Outubro de 2011
Resumo
O uso de estruturas de dados avançadas para
representação de objetos poligonais é impor-
tante em muitos casos, por exemplo: durante a
simplificação da malha poligonal de um modelo
tridimensional (figura 3). É necessário o conhe-
cimento das adjacências entre os componentes
da malha, como faces e vértices. Tais estruturas
são conhecidas como boundary representations
(“representações de bordas”) ou simplesmente
b-reps, que armazenam os dados de um objeto
poligonal (vértices, arestas e faces), além de in-
formações adicionais sobre adjacências (Glass-
ner, 1991). Neste pequeno artigo iremos falar
sobre a estrutura de dados Winged-Edge pro-
posta por (Baumgart, 1975) para representação
de modelos poligonais e exibir alguns trechos al-
gorítmicos relativos a consultas que podem ser
realizadas nessa estrutura com o intuito de des-
cobrir relações de adjacência e incidência envol-
vendo vértices, arestas e faces. As consultas se-
rão apresentadas em formato de pseudo-código.
1 Introdução
Uma das estruturas de dados baseada em
aresta é a Winged-Edge, introduzida por (Baum-
gart, 1975; Hanks, 2005). Esta estrutura associa
a cada aresta identificadores das arestas imedi-
atamente anterior e posterior. Para cada sen-
tido da aresta temos, portanto, uma aresta an-
terior e posterior, ou seja, anterior horária (pcw
ou egde-head-right), posterior horária (ncw ou
egde-tail-right), anterior anti-horária (pccw ou
egde-tail-left) e posterior anti-horária (nccw ou
egde-head-left). As relações de adjacência e in-
cidência podem ser observadas nas figuras 1, 2,
4, 5 e 6.
∗Bacharelando em Ciência da Computação, Univer-
sidade Federal do Estado de Alagoas (UFAL). E-mail:
michel.mas@gmail.com. Disciplina: Geometria Compu-
tacional. Docente Responsável: Thales Vieira.
Figura 1: Visualização da estrutura de dados
Winged-Egde. Observe que existe uma orien-
tação entre os vértices inicial e final da aresta
e que esta mesma ainda mantêm apontadores
para as arestas posteriores e anteriores, ocor-
rendo o mesmo com as faces adjacentes. A face
denotada pelo apontador face_right possui sen-
tido horário de navegação em relação a orienta-
ção v0v1 enquanto a face face_left possui sen-
tido anti-horário.
Figura 2: Visualização da estrutura de dados
Winged-Egde em relação a um polígono. Ob-
serve como a estrutura e sua semântica de ori-
entação facilitam a navegação em relação a dis-
posição de elementos: vértices, arestas e faces.
1
Explorando esta representação das arestas,
as faces incluem somente o identificador de
uma aresta arbitrária e sua orientação na face.
Partindo-se desta aresta, todas as demais ares-
tas da face podem ser acessadas utilizando os
identificadores de aresta anterior ou posterior.
Uma variação desta estrutura adiciona os iden-
tificadores das faces incidentes nos dois sentidos
(Farin et al., 2003).
A estrutura de dados Winged-Egde é um po-
deroso mecanismo para manipulação de mode-
los poligonais, onde a idéia básica é baseada em
uma aresta e seus polígonos adjacentes. O nome
dessa estrutura é proveniente do corpo de uma
borboleta, imaginando os dois polígonos como
suas asas e a aresta como o seu corpo, separando
suas asas.
2 Estrutura
Uma listagem em pseudo-código da estrutura
Winged-Edge pode ser visualizada logo abaixo.
Podemos observar que o receptáculo que repre-
senta uma aresta através da abordagem Winged-
Edge armazena oito apontadores: dois para os
vértices inicial e final (tail e head), dois para as
faces incidentes da esquerda e da direita (left e
right) e quatro para as arestas adjacentes.
/∗ Data s t r u c t u r e − Vertex ∗/
c l a s s WE_Vertex
{
WE_Edge ∗ incident_edge ;
WE_VertexDataObject data ;
}
/∗ Data s t r u c t u r e − Edge∗/
c l a s s WE_Edge
{
// V e r t i c e s
WE_Vertex ∗ v e r t e x _ t a i l ;
WE_Vertex ∗ vertex_head ;
// Faces
WE_Face ∗ f a c e _ l e f t , ∗ f a c e _ r i g h t ;
// Edges
WE_Edge ∗ egde_head_left ;
WE_Edge ∗ egde_head_right ;
WE_Edge ∗ e g d e _ t a i l _ l e f t ;
WE_Edge ∗ e g d e _ t a i l _ r i g h t ;
// A data
WE_EdgeDataObject data ;
}
/∗ Data s t r u c t u r e − Face ∗/
c l a s s WE_Face
{
WE_Edge ∗ incident_edge ;
WE_FaceDataObject data ;
}
O receptáculo que representa vértices arma-
zena apenas um apontador para a aresta no qual
o mesmo incide. O receptáculo que representa
uma face armazena, da mesma maneira, ape-
nas um apontador para uma aresta arbitrária
na qual a face incide.
3 Consultas Suportadas
A escolha de uma estrutura de dados é deter-
minada pelo conjunto de operações elementares
que são suportadas eficientemente. A estrutura
Winged-Edge possui um conjunto de operações
básicas decorrentes de sua prototipação e um
conjunto de operações extendidas de baixa com-
plexidade. Alguns exemplos de consulta podem
ser visualizados logo abaixo:
• (FV) Todos os vértices de uma face;
• (EV) Vértices de uma aresta (extremos);
• (VF) Todas as faces que compartilham um
vértice;
• (EF) Todas as faces que compartilham uma
aresta;
• (FE) Todas as arestas de uma face;
• (VE) Todas as arestas que compartilham
um vértice;
Para a estrutura Winged-Edge as operações EV
e EF são consideradas básicas ou trivias (Nepe-
rud et al., 2007).
3.1 Consultas Básicas
Como dito antes, a estrutura Winged-Edge
possui um conjunto de operações básicas decor-
rentes de sua prototipação. Algumas dessas ope-
rações são listadas logo abaixo:
• Dado um vértice, retornar a aresta imedi-
tamente incidente ao vértice;
• Dada uma aresta, retornar os vértices de
suas extremidades (EV);
• Dada uma aresta, retornar as faces que o
compartilham;
• Dada uma aresta, retornar as arestas adja-
centes;
• Dada uma face, retornar a aresta imediata-
mente incidente.
2
/∗ I n c i d e n t Edge∗/
WE_Edge E = v−>incident_edge ;
/∗ Extreme V e r t i c e s ∗/
WE_Vertex t a i l = e−>v e r t e x _ t a i l ;
WE_Vertex head = e−>vertex_head ;
/∗ A l l f a c e s s h a r i n g an edge ∗/
WE_Face l e f t = e−>f a c e _ l e f t ;
WE_Face r i g h t = e−>f a c e _ r i g h t ;
// Adjacent Edges
WE_Edge h l = e−>egde_head_left ;
WE_Edge hr = e−>egde_head_right ;
WE_Edge t l = e−>e g d e _ t a i l _ l e f t ;
WE_Edge t r = e−>e g d e _ t a i l _ r i g h t ;
// I n c i d e n t Edge
WE_Edge E = f −>incident_edge ;
3.2 Consultas Extendidas
Como dito antes, a estrutura Winged-Edge
possui um conjunto de operações extendidas de
baixa complexidade. Alguns exemplos são apre-
sentados a seguir:
• Dada uma face retornar todas as arestas;
/∗ A l l edges o f a f a c e ∗/
WE_Edge_List FE (WE_Face f )
{
WE_Edge_List l i s t ;
WE_Edge e0 = f −>incident_edge ;
WE_Edge e = e0 ;
do
{
l i s t . put ( e ) ;
i f ( e−>f a c e _ l e f t == f )
{
e = e−>egde_head_left ;
}
e l s e
{
e = e−>e g d e _ t a i l _ r i g h t ;
}
} w h i l e ( e != e0 ) ;
r e t u r n l i s t ;
}
As operações FV e VF são similares.
• Dado um vértice retornar todas as arestas
que o compartilham;
/∗ A l l edges s h a r i n g a v e r t e x ∗/
WE_Edge_List VE (WE_Vertex v )
{
WE_Edge_List l i s t ;
WE_Edge e0 = v−>incident_edge ;
WE_Edge e = e0 ;
do
{
l i s t . put ( e ) ;
i f ( e−>vertex_head == v )
{
e = e−>egde_head_right ;
}
e l s e
{
e = e−>e g d e _ t a i l _ l e f t ;
}
} w h i l e ( e != e0 ) ;
r e t u r n l i s t ;
}
• Dado um vértice retornar todas as faces in-
cidentes;
WE_Face_List VFL (WE_Vertex v )
{
WE_Face_List l i s t ;
WE_Edge e0 = v−>incident_edge ;
WE_Edge e = e0 ;
WE_Face f = e−>f a c e _ l e f t ;
do
{
l i s t . put ( f ) ;
i f ( e−>vertex_head == v )
{
e = e−>egde_head_right ;
f = e−>f a c e _ l e f t ;
}
e l s e
{
e = edge−>e g d e _ t a i l _ l e f t ;
f = e−>f a c e _ r i g h t ;
}
} w h i l e ( e != e0 ) ;
r e t u r n l i s t ;
}
• Dado um vértice retornar todos os demais
vértices vizinhos;
WE_Vertex_List VVL (WE_Vertex v )
{
WE_Vertex_List l i s t ;
WE_Edge e0 = v−>incident_edge ;
WE_Edge e = e0 ;
WE_Vertex v = e−>vertex_head ;
do
{
l i s t . put ( v ) ;
i f ( e−>vertex_head == v )
{
e = e−>egde_head_right ;
v = e−>vertex_head ;
}
e l s e
{
e = edge−>e g d e _ t a i l _ l e f t ;
v = e−>v e r t e x _ t a i l ;
}
} w h i l e ( e != e0 ) ;
r e t u r n l i s t ;
}
• Dado uma aresta retornar todos as demais
arestas vizinhas;
WE_Edge_List EEL (WE_Edge E)
{
WE_Edge_List l 1 = VEL(E−> v e r t e x _ t a i l ) ;
WE_Edge_List l 2 = VEL(E−>vertex_head ) ;
3
// Remove edge E from the l i s t s
l 1 . remove (E) ;
l 2 . remove (E) ;
// Combine l i s t s
r e t u r n l 1 + l 2 ;
}
• Dada uma face retornar as demais faces in-
cidentes;
WE_Face_List FFL (WE_Face F)
{
WE_Edge_List l 1 = FE(F) ;
WE_Face_List l i s t ;
WE_Edge e ;
f o r each ( e i n l 1 )
{
i f ( e−>f a c e _ l e f t == F)
{
l i s t . put ( e−>f a c e _ r i g h t ) ;
}
e l s e
{
l i s t . put ( e−>f a c e _ l e f t ) ;
}
}
r e t u r n l i s t ;
}
• Calcular a K-ésima vizinhança estrelada,
dado K e um vértice;
/∗ KStarryNeighborhood − Neighbourhood s t a r ∗/
//K − s i z e o f neighborhood
// v l − v e r t e x l i s t with one v e r t e x i n i t i a l l y
// b l − l i s t t h a t c h e c k s i f v e r t e x l a b e l e d
WE_Vertex_List KSN( I n t K,
WE_Vertex_List vl ,
B o o l L i s t& b l )
{
i f (K == 1 )
{
r e t u r n Neighbors ( vl , b l ) ;
}
e l s e
{
r e t u r n Neighbors (KSN(K−1 , vl , b l ) , b l ) ;
}
}
/∗ Returns l i s t o f a l l n e i g h b o r s ∗/
WE_Vertex_List Neighbors ( WE_Vertex_List vl ,
B o o l L i s t& b l )
{
WE_Vertex v ;
WE_Vertex_List l i s t
f o r each ( v i n v l )
{
l i s t = l i s t + VVL( v , b l ) ;
}
r e t u r n l i s t ;
}
/∗ Returns a l l marked n e i g h b o r s ∗/
WE_Vertex_List VVL( WE_Vertex v , B o o l L i s t& b l )
{
WE_Vertex_List l i s t ;
WE_Edge e0 = v−>i n c i d e n t _ e d g e ;
WE_Edge e = e0 ;
WE_Vertex v = e−>vertex_head ;
do
{
// c h e c k s i f t he v e r t e x i s marked
i f ( ! b l [ v−>i d ] )
{
l i s t . put ( v ) ;
b l [ v−>i d ] = t r u e ;
}
i f ( e−>vertex_head == v )
{
e = e−>egde_head_right ;
v = e−>vertex_head ;
}
e l s e
{
e = edge −> e g d e _ t a i l _ l e f t ;
v = e−> v e r t e x _ t a i l ;
}
} w h i l e ( e != e0 ) ;
r e t u r n l i s t ;
}
4 Conclusões
A estrutura de dados Winged-Edge foi intro-
duzida por (Baumgart, 1975) para simplificar
a manipulação de modelos poligonais pois man-
têm tanto informação geométrica quanto topoló-
gica (figura 6), o que facilita ainda mais o trata-
mento de alguns modelos. Além disso Winged-
Edge possui um conjunto de operações triviais
que facilitam a execução de consultas de adja-
cência e incidência sem proporcionar demasiada
sobrecarga.
A estrutura de dados Winged-Edge permite
a passagem rápida entre faces, arestas e vér-
tices, devido à sua estrutura explicitamente li-
gada em rede (figura 4). Esta forma de especifi-
car uma grade desestruturada está em contraste
com especificações mais simples de malhas de
polígonos, tais como nó e lista de elementos, ou
a conectividade implícita de uma grade regular
(de Berg et al., 2008).
Figura 3: A estrutura Winged-Egde é uma re-
presentação de dados utilizada para descrever
modelos poligonais em computação gráfica. Ex-
plicitamente descreve a geometria e a topologia
de faces, arestas e vértices quando três ou mais
superfícies se reúnem e se encontram em uma
aresta comum.
O principal incômodo da estrutura Winged-
Egde é sua grande demanda de armazenamento
o que ocasiona maior complexidade devido à
manutenção dos vários índices pertencentes as
listas de vértices, arestas e faces. Um exemplo
dessa demanda pode ser observado através da
figura 5.
4
Figura 4: A estrutura Winged-Egde permite a pas-
sagem rápida entre faces, arestas e vértices, devido
à estrutura explicitamente ligada em rede. Esta re-
presentação é amplamente utilizada em programas
de modelagem para fornecer maior flexibilidade na
alteração dinâmica da geometria da malha, com isso
operações de divisão e mesclagem podem ser execu-
tadas rapidamente (Foley, 1996).
Referências
Baumgart, B. G. (1975), ‘Winged-edge polyhe-
dron representation for computer vision’, Na-
tional Computer Conference.
Beall, M. W. & Shephard, M. S. (1997), ‘A ge-
neral topology-based mesh data structures’,
International Journal for Numerical Methods
in Engineering 40(9), 1573–1596.
Braid, I., Hillyard, R. & Stroud, I. (1980),
‘Stepwise construction of polyhedra in geo-
metric modelling’, Mathematical Methods in
Computer Graphics and Design pp. 123–141.
de Berg, M., Cheong, O. & van Kreveld, M.
(2008), Computational geometry: algorithms
and applications, 3 ed., Springer.
Farin, G., Hamann, B. & Hagen, H. (2003), Hie-
rarchical and geometrical methods in scientific
visualization, Mathematics and visualization,
Springer.
Fischer, R. (1991), Genesys - um sistema hí-
brido de modelagem de sólidos, Master’s the-
sis, Departamento de Informática - Pontifícia
Universidade Católica - PUC-Rio - Rio de Ja-
neiro.
Foley, J. D. (1996), Computer graphics: princi-
ples and practice, 2 ed., Addison-Wesley Pro-
fessional.
Glassner, A. S. (1991), ‘Maintaining winged-
edge models’, Graphics Gems II - Academic
Press 2, 191–201.
Gois, J. & Piteri, M. (2002), ‘Geração automá-
tica de malhas de elementos finitos e a estru-
tura de dados winged-edge modificada’, Ten-
dências em Matemática Aplicada e Computa-
cional 3(1), 121–130.
Hanks, B. W. (2005), Proceedings of the 14th
International Meshing Roundtable, Springer.
Leondes, C. T. (2002), Database and data com-
munication network systems: techniques and
applications, Vol. 2, Elsevier Science - Acade-
mic Press.
Neperud, B., Lowther, J. & Shene, C.-K. (2007),
‘Visualizing and animating the winged-edge
data structure’, Elsevier.
O’Rourke, J. (1998), Computational geometry in
C, 2 ed., Cambridge University Press.
Piteri, M. (1999), Geração Automática de Ma-
lhas Hierárquico-Adaptativas em Domínios
Bidimensionais e Tridimensionais, PhD the-
sis, Universidade Técnica de Lisboa.
Piteri, M. & Almeida, J. (1995), ‘Hierarchical 2d
mesh generation using topological data struc-
tures’, Education, Practice and Promotion of
Computational Methods in Engineering Using
Small Computers 2, 981–986.
Vince, J. A. (2000), Essential computer anima-
tion fast: how to understand the techniques
and potential of computer animation, Sprin-
ger.
Conteúdo
1 Introdução 1
2 Estrutura 2
3 Consultas Suportadas 2
3.1 Consultas Básicas . . . . . . . . . . . 2
3.2 Consultas Extendidas . . . . . . . . 3
4 Conclusões 4
Referências 5
5
Figura 5: A principal desvantagem da estrutura Winged-Egde é a sua grande demanda de armazenamento
o que acarreta maior complexidade devido à manutenção de muitos índices. Uma boa discussão das
questões de implementação da estrutura Winged-Egde para malhas pode ser encontrada no livro Graphics
Gems II.
Figura 6: Uma estrutura de dados topológica representa a completa topologia de um objeto em estudo
(Gois & Piteri, 2002; Beall & Shephard, 1997; Piteri & Almeida, 1995; Piteri, 1999). Uma característica
fundamental associada a essas estruturas é que qualquer informação relativa à topologia pode ser obtida
em tempo constante ou proporcional ao número de entidades envolvidas, independentemente da dimensão
do problema, quer a malha possua 1 milhão de elementos triangulares ou 100 mil elementos, já que estas
informações são de natureza local. A estrutura de dados topológica Winged-Egde concentra a maior parte
de suas informações na entidade aresta (O’Rourke, 1998). Isto acontece em função do fato de que em
qualquer modelo poliedral manifold, uma aresta pertence a exatamente duas faces, ou seja, este número
é invariante (Baumgart, 1975). Da forma como foi concebida originariamente, esta estrutura não permite
representar diretamente uma face com mais de uma componente conexa, ou seja, buracos em seu interior
(Vince, 2000). Com a introdução da entidade ciclo (Braid et al., 1980), pode-se representar faces com mais
de uma componente conexa, e assim, a estrutura passa a ser referenciada como winged-edged modificada
(Fischer, 1991; Leondes, 2002).
6

Mais conteúdo relacionado

Mais de Michel Alves

Intelligent Transfer of Thematic Harmonic Color Palettes
Intelligent Transfer of Thematic Harmonic Color PalettesIntelligent Transfer of Thematic Harmonic Color Palettes
Intelligent Transfer of Thematic Harmonic Color PalettesMichel Alves
 
A Framework for Harmonic Color Measures
A Framework for Harmonic Color MeasuresA Framework for Harmonic Color Measures
A Framework for Harmonic Color MeasuresMichel Alves
 
Effectiveness of Image Quality Assessment Indexes
Effectiveness of Image Quality Assessment IndexesEffectiveness of Image Quality Assessment Indexes
Effectiveness of Image Quality Assessment IndexesMichel Alves
 
Introduction to Kernel Functions
Introduction to Kernel FunctionsIntroduction to Kernel Functions
Introduction to Kernel FunctionsMichel Alves
 
About Perception and Hue Histograms in HSV Space
About Perception and Hue Histograms in HSV SpaceAbout Perception and Hue Histograms in HSV Space
About Perception and Hue Histograms in HSV SpaceMichel Alves
 
Color Harmonization - Results
Color Harmonization - ResultsColor Harmonization - Results
Color Harmonization - ResultsMichel Alves
 
Wave Simulation Using Perlin Noise
Wave Simulation Using Perlin NoiseWave Simulation Using Perlin Noise
Wave Simulation Using Perlin NoiseMichel Alves
 
Similarity Maps Using SSIM Index
Similarity Maps Using SSIM IndexSimilarity Maps Using SSIM Index
Similarity Maps Using SSIM IndexMichel Alves
 
Qualifying Exam - Image-Based Reconstruction With Color Harmonization
Qualifying Exam - Image-Based Reconstruction With Color HarmonizationQualifying Exam - Image-Based Reconstruction With Color Harmonization
Qualifying Exam - Image-Based Reconstruction With Color HarmonizationMichel Alves
 
TMS - Schedule of Presentations and Reports
TMS - Schedule of Presentations and ReportsTMS - Schedule of Presentations and Reports
TMS - Schedule of Presentations and ReportsMichel Alves
 
Month Presentations Schedule - March/2015 - LCG/UFRJ
Month Presentations Schedule - March/2015 - LCG/UFRJMonth Presentations Schedule - March/2015 - LCG/UFRJ
Month Presentations Schedule - March/2015 - LCG/UFRJMichel Alves
 
Color Palettes in R
Color Palettes in RColor Palettes in R
Color Palettes in RMichel Alves
 
Hue Wheel Prototype
Hue Wheel PrototypeHue Wheel Prototype
Hue Wheel PrototypeMichel Alves
 
Triangle Mesh Plot
Triangle Mesh PlotTriangle Mesh Plot
Triangle Mesh PlotMichel Alves
 
Capacity-Constrained Point Distributions :: Video Slides
Capacity-Constrained Point Distributions :: Video SlidesCapacity-Constrained Point Distributions :: Video Slides
Capacity-Constrained Point Distributions :: Video SlidesMichel Alves
 
Capacity-Constrained Point Distributions :: Density Function Catalog
Capacity-Constrained Point Distributions :: Density Function CatalogCapacity-Constrained Point Distributions :: Density Function Catalog
Capacity-Constrained Point Distributions :: Density Function CatalogMichel Alves
 
Capacity-Constrained Point Distributions :: Complementary Results
Capacity-Constrained Point Distributions :: Complementary ResultsCapacity-Constrained Point Distributions :: Complementary Results
Capacity-Constrained Point Distributions :: Complementary ResultsMichel Alves
 

Mais de Michel Alves (20)

Intelligent Transfer of Thematic Harmonic Color Palettes
Intelligent Transfer of Thematic Harmonic Color PalettesIntelligent Transfer of Thematic Harmonic Color Palettes
Intelligent Transfer of Thematic Harmonic Color Palettes
 
A Framework for Harmonic Color Measures
A Framework for Harmonic Color MeasuresA Framework for Harmonic Color Measures
A Framework for Harmonic Color Measures
 
Effectiveness of Image Quality Assessment Indexes
Effectiveness of Image Quality Assessment IndexesEffectiveness of Image Quality Assessment Indexes
Effectiveness of Image Quality Assessment Indexes
 
Introduction to Kernel Functions
Introduction to Kernel FunctionsIntroduction to Kernel Functions
Introduction to Kernel Functions
 
About Perception and Hue Histograms in HSV Space
About Perception and Hue Histograms in HSV SpaceAbout Perception and Hue Histograms in HSV Space
About Perception and Hue Histograms in HSV Space
 
Color Harmonization - Results
Color Harmonization - ResultsColor Harmonization - Results
Color Harmonization - Results
 
Wave Simulation Using Perlin Noise
Wave Simulation Using Perlin NoiseWave Simulation Using Perlin Noise
Wave Simulation Using Perlin Noise
 
Similarity Maps Using SSIM Index
Similarity Maps Using SSIM IndexSimilarity Maps Using SSIM Index
Similarity Maps Using SSIM Index
 
Qualifying Exam - Image-Based Reconstruction With Color Harmonization
Qualifying Exam - Image-Based Reconstruction With Color HarmonizationQualifying Exam - Image-Based Reconstruction With Color Harmonization
Qualifying Exam - Image-Based Reconstruction With Color Harmonization
 
TMS - Schedule of Presentations and Reports
TMS - Schedule of Presentations and ReportsTMS - Schedule of Presentations and Reports
TMS - Schedule of Presentations and Reports
 
Month Presentations Schedule - March/2015 - LCG/UFRJ
Month Presentations Schedule - March/2015 - LCG/UFRJMonth Presentations Schedule - March/2015 - LCG/UFRJ
Month Presentations Schedule - March/2015 - LCG/UFRJ
 
Color Palettes in R
Color Palettes in RColor Palettes in R
Color Palettes in R
 
Sigmoid Curve Erf
Sigmoid Curve ErfSigmoid Curve Erf
Sigmoid Curve Erf
 
Hue Wheel Prototype
Hue Wheel PrototypeHue Wheel Prototype
Hue Wheel Prototype
 
Cosine Curve
Cosine CurveCosine Curve
Cosine Curve
 
Triangle Mesh Plot
Triangle Mesh PlotTriangle Mesh Plot
Triangle Mesh Plot
 
Triangle Plot
Triangle PlotTriangle Plot
Triangle Plot
 
Capacity-Constrained Point Distributions :: Video Slides
Capacity-Constrained Point Distributions :: Video SlidesCapacity-Constrained Point Distributions :: Video Slides
Capacity-Constrained Point Distributions :: Video Slides
 
Capacity-Constrained Point Distributions :: Density Function Catalog
Capacity-Constrained Point Distributions :: Density Function CatalogCapacity-Constrained Point Distributions :: Density Function Catalog
Capacity-Constrained Point Distributions :: Density Function Catalog
 
Capacity-Constrained Point Distributions :: Complementary Results
Capacity-Constrained Point Distributions :: Complementary ResultsCapacity-Constrained Point Distributions :: Complementary Results
Capacity-Constrained Point Distributions :: Complementary Results
 

Último

Programa de Intervenção com Habilidades Motoras
Programa de Intervenção com Habilidades MotorasPrograma de Intervenção com Habilidades Motoras
Programa de Intervenção com Habilidades MotorasCassio Meira Jr.
 
D9 RECONHECER GENERO DISCURSIVO SPA.pptx
D9 RECONHECER GENERO DISCURSIVO SPA.pptxD9 RECONHECER GENERO DISCURSIVO SPA.pptx
D9 RECONHECER GENERO DISCURSIVO SPA.pptxRonys4
 
Cultura e Literatura indígenas: uma análise do poema “O silêncio”, de Kent Ne...
Cultura e Literatura indígenas: uma análise do poema “O silêncio”, de Kent Ne...Cultura e Literatura indígenas: uma análise do poema “O silêncio”, de Kent Ne...
Cultura e Literatura indígenas: uma análise do poema “O silêncio”, de Kent Ne...ArianeLima50
 
GÊNERO TEXTUAL - TIRINHAS - Charges - Cartum
GÊNERO TEXTUAL - TIRINHAS - Charges - CartumGÊNERO TEXTUAL - TIRINHAS - Charges - Cartum
GÊNERO TEXTUAL - TIRINHAS - Charges - CartumAugusto Costa
 
Slides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptx
Slides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptxSlides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptx
Slides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptxLuizHenriquedeAlmeid6
 
A Arte de Escrever Poemas - Dia das Mães
A Arte de Escrever Poemas - Dia das MãesA Arte de Escrever Poemas - Dia das Mães
A Arte de Escrever Poemas - Dia das MãesMary Alvarenga
 
Música Meu Abrigo - Texto e atividade
Música   Meu   Abrigo  -   Texto e atividadeMúsica   Meu   Abrigo  -   Texto e atividade
Música Meu Abrigo - Texto e atividadeMary Alvarenga
 
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptx
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptxAD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptx
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptxkarinedarozabatista
 
trabalho wanda rocha ditadura
trabalho wanda rocha ditaduratrabalho wanda rocha ditadura
trabalho wanda rocha ditaduraAdryan Luiz
 
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)Mary Alvarenga
 
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptxATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptxOsnilReis1
 
“Sobrou pra mim” - Conto de Ruth Rocha.pptx
“Sobrou pra mim” - Conto de Ruth Rocha.pptx“Sobrou pra mim” - Conto de Ruth Rocha.pptx
“Sobrou pra mim” - Conto de Ruth Rocha.pptxthaisamaral9365923
 
E agora?! Já não avalio as atitudes e valores?
E agora?! Já não avalio as atitudes e valores?E agora?! Já não avalio as atitudes e valores?
E agora?! Já não avalio as atitudes e valores?Rosalina Simão Nunes
 
Gerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem OrganizacionalGerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem OrganizacionalJacqueline Cerqueira
 
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃOLEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃOColégio Santa Teresinha
 
Modelos de Desenvolvimento Motor - Gallahue, Newell e Tani
Modelos de Desenvolvimento Motor - Gallahue, Newell e TaniModelos de Desenvolvimento Motor - Gallahue, Newell e Tani
Modelos de Desenvolvimento Motor - Gallahue, Newell e TaniCassio Meira Jr.
 
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptxSlides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptxLuizHenriquedeAlmeid6
 
Habilidades Motoras Básicas e Específicas
Habilidades Motoras Básicas e EspecíficasHabilidades Motoras Básicas e Específicas
Habilidades Motoras Básicas e EspecíficasCassio Meira Jr.
 

Último (20)

Programa de Intervenção com Habilidades Motoras
Programa de Intervenção com Habilidades MotorasPrograma de Intervenção com Habilidades Motoras
Programa de Intervenção com Habilidades Motoras
 
D9 RECONHECER GENERO DISCURSIVO SPA.pptx
D9 RECONHECER GENERO DISCURSIVO SPA.pptxD9 RECONHECER GENERO DISCURSIVO SPA.pptx
D9 RECONHECER GENERO DISCURSIVO SPA.pptx
 
Cultura e Literatura indígenas: uma análise do poema “O silêncio”, de Kent Ne...
Cultura e Literatura indígenas: uma análise do poema “O silêncio”, de Kent Ne...Cultura e Literatura indígenas: uma análise do poema “O silêncio”, de Kent Ne...
Cultura e Literatura indígenas: uma análise do poema “O silêncio”, de Kent Ne...
 
GÊNERO TEXTUAL - TIRINHAS - Charges - Cartum
GÊNERO TEXTUAL - TIRINHAS - Charges - CartumGÊNERO TEXTUAL - TIRINHAS - Charges - Cartum
GÊNERO TEXTUAL - TIRINHAS - Charges - Cartum
 
Slides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptx
Slides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptxSlides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptx
Slides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptx
 
A Arte de Escrever Poemas - Dia das Mães
A Arte de Escrever Poemas - Dia das MãesA Arte de Escrever Poemas - Dia das Mães
A Arte de Escrever Poemas - Dia das Mães
 
Música Meu Abrigo - Texto e atividade
Música   Meu   Abrigo  -   Texto e atividadeMúsica   Meu   Abrigo  -   Texto e atividade
Música Meu Abrigo - Texto e atividade
 
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptx
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptxAD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptx
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptx
 
trabalho wanda rocha ditadura
trabalho wanda rocha ditaduratrabalho wanda rocha ditadura
trabalho wanda rocha ditadura
 
Bullying, sai pra lá
Bullying,  sai pra láBullying,  sai pra lá
Bullying, sai pra lá
 
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
 
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptxATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
 
“Sobrou pra mim” - Conto de Ruth Rocha.pptx
“Sobrou pra mim” - Conto de Ruth Rocha.pptx“Sobrou pra mim” - Conto de Ruth Rocha.pptx
“Sobrou pra mim” - Conto de Ruth Rocha.pptx
 
E agora?! Já não avalio as atitudes e valores?
E agora?! Já não avalio as atitudes e valores?E agora?! Já não avalio as atitudes e valores?
E agora?! Já não avalio as atitudes e valores?
 
Gerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem OrganizacionalGerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem Organizacional
 
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃOLEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
 
CINEMATICA DE LOS MATERIALES Y PARTICULA
CINEMATICA DE LOS MATERIALES Y PARTICULACINEMATICA DE LOS MATERIALES Y PARTICULA
CINEMATICA DE LOS MATERIALES Y PARTICULA
 
Modelos de Desenvolvimento Motor - Gallahue, Newell e Tani
Modelos de Desenvolvimento Motor - Gallahue, Newell e TaniModelos de Desenvolvimento Motor - Gallahue, Newell e Tani
Modelos de Desenvolvimento Motor - Gallahue, Newell e Tani
 
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptxSlides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
 
Habilidades Motoras Básicas e Específicas
Habilidades Motoras Básicas e EspecíficasHabilidades Motoras Básicas e Específicas
Habilidades Motoras Básicas e Específicas
 

Winged-Edge Report

  • 1. Geometria Computacional - Winged Edge Michel Alves dos Santos ∗ Outubro de 2011 Resumo O uso de estruturas de dados avançadas para representação de objetos poligonais é impor- tante em muitos casos, por exemplo: durante a simplificação da malha poligonal de um modelo tridimensional (figura 3). É necessário o conhe- cimento das adjacências entre os componentes da malha, como faces e vértices. Tais estruturas são conhecidas como boundary representations (“representações de bordas”) ou simplesmente b-reps, que armazenam os dados de um objeto poligonal (vértices, arestas e faces), além de in- formações adicionais sobre adjacências (Glass- ner, 1991). Neste pequeno artigo iremos falar sobre a estrutura de dados Winged-Edge pro- posta por (Baumgart, 1975) para representação de modelos poligonais e exibir alguns trechos al- gorítmicos relativos a consultas que podem ser realizadas nessa estrutura com o intuito de des- cobrir relações de adjacência e incidência envol- vendo vértices, arestas e faces. As consultas se- rão apresentadas em formato de pseudo-código. 1 Introdução Uma das estruturas de dados baseada em aresta é a Winged-Edge, introduzida por (Baum- gart, 1975; Hanks, 2005). Esta estrutura associa a cada aresta identificadores das arestas imedi- atamente anterior e posterior. Para cada sen- tido da aresta temos, portanto, uma aresta an- terior e posterior, ou seja, anterior horária (pcw ou egde-head-right), posterior horária (ncw ou egde-tail-right), anterior anti-horária (pccw ou egde-tail-left) e posterior anti-horária (nccw ou egde-head-left). As relações de adjacência e in- cidência podem ser observadas nas figuras 1, 2, 4, 5 e 6. ∗Bacharelando em Ciência da Computação, Univer- sidade Federal do Estado de Alagoas (UFAL). E-mail: michel.mas@gmail.com. Disciplina: Geometria Compu- tacional. Docente Responsável: Thales Vieira. Figura 1: Visualização da estrutura de dados Winged-Egde. Observe que existe uma orien- tação entre os vértices inicial e final da aresta e que esta mesma ainda mantêm apontadores para as arestas posteriores e anteriores, ocor- rendo o mesmo com as faces adjacentes. A face denotada pelo apontador face_right possui sen- tido horário de navegação em relação a orienta- ção v0v1 enquanto a face face_left possui sen- tido anti-horário. Figura 2: Visualização da estrutura de dados Winged-Egde em relação a um polígono. Ob- serve como a estrutura e sua semântica de ori- entação facilitam a navegação em relação a dis- posição de elementos: vértices, arestas e faces. 1
  • 2. Explorando esta representação das arestas, as faces incluem somente o identificador de uma aresta arbitrária e sua orientação na face. Partindo-se desta aresta, todas as demais ares- tas da face podem ser acessadas utilizando os identificadores de aresta anterior ou posterior. Uma variação desta estrutura adiciona os iden- tificadores das faces incidentes nos dois sentidos (Farin et al., 2003). A estrutura de dados Winged-Egde é um po- deroso mecanismo para manipulação de mode- los poligonais, onde a idéia básica é baseada em uma aresta e seus polígonos adjacentes. O nome dessa estrutura é proveniente do corpo de uma borboleta, imaginando os dois polígonos como suas asas e a aresta como o seu corpo, separando suas asas. 2 Estrutura Uma listagem em pseudo-código da estrutura Winged-Edge pode ser visualizada logo abaixo. Podemos observar que o receptáculo que repre- senta uma aresta através da abordagem Winged- Edge armazena oito apontadores: dois para os vértices inicial e final (tail e head), dois para as faces incidentes da esquerda e da direita (left e right) e quatro para as arestas adjacentes. /∗ Data s t r u c t u r e − Vertex ∗/ c l a s s WE_Vertex { WE_Edge ∗ incident_edge ; WE_VertexDataObject data ; } /∗ Data s t r u c t u r e − Edge∗/ c l a s s WE_Edge { // V e r t i c e s WE_Vertex ∗ v e r t e x _ t a i l ; WE_Vertex ∗ vertex_head ; // Faces WE_Face ∗ f a c e _ l e f t , ∗ f a c e _ r i g h t ; // Edges WE_Edge ∗ egde_head_left ; WE_Edge ∗ egde_head_right ; WE_Edge ∗ e g d e _ t a i l _ l e f t ; WE_Edge ∗ e g d e _ t a i l _ r i g h t ; // A data WE_EdgeDataObject data ; } /∗ Data s t r u c t u r e − Face ∗/ c l a s s WE_Face { WE_Edge ∗ incident_edge ; WE_FaceDataObject data ; } O receptáculo que representa vértices arma- zena apenas um apontador para a aresta no qual o mesmo incide. O receptáculo que representa uma face armazena, da mesma maneira, ape- nas um apontador para uma aresta arbitrária na qual a face incide. 3 Consultas Suportadas A escolha de uma estrutura de dados é deter- minada pelo conjunto de operações elementares que são suportadas eficientemente. A estrutura Winged-Edge possui um conjunto de operações básicas decorrentes de sua prototipação e um conjunto de operações extendidas de baixa com- plexidade. Alguns exemplos de consulta podem ser visualizados logo abaixo: • (FV) Todos os vértices de uma face; • (EV) Vértices de uma aresta (extremos); • (VF) Todas as faces que compartilham um vértice; • (EF) Todas as faces que compartilham uma aresta; • (FE) Todas as arestas de uma face; • (VE) Todas as arestas que compartilham um vértice; Para a estrutura Winged-Edge as operações EV e EF são consideradas básicas ou trivias (Nepe- rud et al., 2007). 3.1 Consultas Básicas Como dito antes, a estrutura Winged-Edge possui um conjunto de operações básicas decor- rentes de sua prototipação. Algumas dessas ope- rações são listadas logo abaixo: • Dado um vértice, retornar a aresta imedi- tamente incidente ao vértice; • Dada uma aresta, retornar os vértices de suas extremidades (EV); • Dada uma aresta, retornar as faces que o compartilham; • Dada uma aresta, retornar as arestas adja- centes; • Dada uma face, retornar a aresta imediata- mente incidente. 2
  • 3. /∗ I n c i d e n t Edge∗/ WE_Edge E = v−>incident_edge ; /∗ Extreme V e r t i c e s ∗/ WE_Vertex t a i l = e−>v e r t e x _ t a i l ; WE_Vertex head = e−>vertex_head ; /∗ A l l f a c e s s h a r i n g an edge ∗/ WE_Face l e f t = e−>f a c e _ l e f t ; WE_Face r i g h t = e−>f a c e _ r i g h t ; // Adjacent Edges WE_Edge h l = e−>egde_head_left ; WE_Edge hr = e−>egde_head_right ; WE_Edge t l = e−>e g d e _ t a i l _ l e f t ; WE_Edge t r = e−>e g d e _ t a i l _ r i g h t ; // I n c i d e n t Edge WE_Edge E = f −>incident_edge ; 3.2 Consultas Extendidas Como dito antes, a estrutura Winged-Edge possui um conjunto de operações extendidas de baixa complexidade. Alguns exemplos são apre- sentados a seguir: • Dada uma face retornar todas as arestas; /∗ A l l edges o f a f a c e ∗/ WE_Edge_List FE (WE_Face f ) { WE_Edge_List l i s t ; WE_Edge e0 = f −>incident_edge ; WE_Edge e = e0 ; do { l i s t . put ( e ) ; i f ( e−>f a c e _ l e f t == f ) { e = e−>egde_head_left ; } e l s e { e = e−>e g d e _ t a i l _ r i g h t ; } } w h i l e ( e != e0 ) ; r e t u r n l i s t ; } As operações FV e VF são similares. • Dado um vértice retornar todas as arestas que o compartilham; /∗ A l l edges s h a r i n g a v e r t e x ∗/ WE_Edge_List VE (WE_Vertex v ) { WE_Edge_List l i s t ; WE_Edge e0 = v−>incident_edge ; WE_Edge e = e0 ; do { l i s t . put ( e ) ; i f ( e−>vertex_head == v ) { e = e−>egde_head_right ; } e l s e { e = e−>e g d e _ t a i l _ l e f t ; } } w h i l e ( e != e0 ) ; r e t u r n l i s t ; } • Dado um vértice retornar todas as faces in- cidentes; WE_Face_List VFL (WE_Vertex v ) { WE_Face_List l i s t ; WE_Edge e0 = v−>incident_edge ; WE_Edge e = e0 ; WE_Face f = e−>f a c e _ l e f t ; do { l i s t . put ( f ) ; i f ( e−>vertex_head == v ) { e = e−>egde_head_right ; f = e−>f a c e _ l e f t ; } e l s e { e = edge−>e g d e _ t a i l _ l e f t ; f = e−>f a c e _ r i g h t ; } } w h i l e ( e != e0 ) ; r e t u r n l i s t ; } • Dado um vértice retornar todos os demais vértices vizinhos; WE_Vertex_List VVL (WE_Vertex v ) { WE_Vertex_List l i s t ; WE_Edge e0 = v−>incident_edge ; WE_Edge e = e0 ; WE_Vertex v = e−>vertex_head ; do { l i s t . put ( v ) ; i f ( e−>vertex_head == v ) { e = e−>egde_head_right ; v = e−>vertex_head ; } e l s e { e = edge−>e g d e _ t a i l _ l e f t ; v = e−>v e r t e x _ t a i l ; } } w h i l e ( e != e0 ) ; r e t u r n l i s t ; } • Dado uma aresta retornar todos as demais arestas vizinhas; WE_Edge_List EEL (WE_Edge E) { WE_Edge_List l 1 = VEL(E−> v e r t e x _ t a i l ) ; WE_Edge_List l 2 = VEL(E−>vertex_head ) ; 3
  • 4. // Remove edge E from the l i s t s l 1 . remove (E) ; l 2 . remove (E) ; // Combine l i s t s r e t u r n l 1 + l 2 ; } • Dada uma face retornar as demais faces in- cidentes; WE_Face_List FFL (WE_Face F) { WE_Edge_List l 1 = FE(F) ; WE_Face_List l i s t ; WE_Edge e ; f o r each ( e i n l 1 ) { i f ( e−>f a c e _ l e f t == F) { l i s t . put ( e−>f a c e _ r i g h t ) ; } e l s e { l i s t . put ( e−>f a c e _ l e f t ) ; } } r e t u r n l i s t ; } • Calcular a K-ésima vizinhança estrelada, dado K e um vértice; /∗ KStarryNeighborhood − Neighbourhood s t a r ∗/ //K − s i z e o f neighborhood // v l − v e r t e x l i s t with one v e r t e x i n i t i a l l y // b l − l i s t t h a t c h e c k s i f v e r t e x l a b e l e d WE_Vertex_List KSN( I n t K, WE_Vertex_List vl , B o o l L i s t& b l ) { i f (K == 1 ) { r e t u r n Neighbors ( vl , b l ) ; } e l s e { r e t u r n Neighbors (KSN(K−1 , vl , b l ) , b l ) ; } } /∗ Returns l i s t o f a l l n e i g h b o r s ∗/ WE_Vertex_List Neighbors ( WE_Vertex_List vl , B o o l L i s t& b l ) { WE_Vertex v ; WE_Vertex_List l i s t f o r each ( v i n v l ) { l i s t = l i s t + VVL( v , b l ) ; } r e t u r n l i s t ; } /∗ Returns a l l marked n e i g h b o r s ∗/ WE_Vertex_List VVL( WE_Vertex v , B o o l L i s t& b l ) { WE_Vertex_List l i s t ; WE_Edge e0 = v−>i n c i d e n t _ e d g e ; WE_Edge e = e0 ; WE_Vertex v = e−>vertex_head ; do { // c h e c k s i f t he v e r t e x i s marked i f ( ! b l [ v−>i d ] ) { l i s t . put ( v ) ; b l [ v−>i d ] = t r u e ; } i f ( e−>vertex_head == v ) { e = e−>egde_head_right ; v = e−>vertex_head ; } e l s e { e = edge −> e g d e _ t a i l _ l e f t ; v = e−> v e r t e x _ t a i l ; } } w h i l e ( e != e0 ) ; r e t u r n l i s t ; } 4 Conclusões A estrutura de dados Winged-Edge foi intro- duzida por (Baumgart, 1975) para simplificar a manipulação de modelos poligonais pois man- têm tanto informação geométrica quanto topoló- gica (figura 6), o que facilita ainda mais o trata- mento de alguns modelos. Além disso Winged- Edge possui um conjunto de operações triviais que facilitam a execução de consultas de adja- cência e incidência sem proporcionar demasiada sobrecarga. A estrutura de dados Winged-Edge permite a passagem rápida entre faces, arestas e vér- tices, devido à sua estrutura explicitamente li- gada em rede (figura 4). Esta forma de especifi- car uma grade desestruturada está em contraste com especificações mais simples de malhas de polígonos, tais como nó e lista de elementos, ou a conectividade implícita de uma grade regular (de Berg et al., 2008). Figura 3: A estrutura Winged-Egde é uma re- presentação de dados utilizada para descrever modelos poligonais em computação gráfica. Ex- plicitamente descreve a geometria e a topologia de faces, arestas e vértices quando três ou mais superfícies se reúnem e se encontram em uma aresta comum. O principal incômodo da estrutura Winged- Egde é sua grande demanda de armazenamento o que ocasiona maior complexidade devido à manutenção dos vários índices pertencentes as listas de vértices, arestas e faces. Um exemplo dessa demanda pode ser observado através da figura 5. 4
  • 5. Figura 4: A estrutura Winged-Egde permite a pas- sagem rápida entre faces, arestas e vértices, devido à estrutura explicitamente ligada em rede. Esta re- presentação é amplamente utilizada em programas de modelagem para fornecer maior flexibilidade na alteração dinâmica da geometria da malha, com isso operações de divisão e mesclagem podem ser execu- tadas rapidamente (Foley, 1996). Referências Baumgart, B. G. (1975), ‘Winged-edge polyhe- dron representation for computer vision’, Na- tional Computer Conference. Beall, M. W. & Shephard, M. S. (1997), ‘A ge- neral topology-based mesh data structures’, International Journal for Numerical Methods in Engineering 40(9), 1573–1596. Braid, I., Hillyard, R. & Stroud, I. (1980), ‘Stepwise construction of polyhedra in geo- metric modelling’, Mathematical Methods in Computer Graphics and Design pp. 123–141. de Berg, M., Cheong, O. & van Kreveld, M. (2008), Computational geometry: algorithms and applications, 3 ed., Springer. Farin, G., Hamann, B. & Hagen, H. (2003), Hie- rarchical and geometrical methods in scientific visualization, Mathematics and visualization, Springer. Fischer, R. (1991), Genesys - um sistema hí- brido de modelagem de sólidos, Master’s the- sis, Departamento de Informática - Pontifícia Universidade Católica - PUC-Rio - Rio de Ja- neiro. Foley, J. D. (1996), Computer graphics: princi- ples and practice, 2 ed., Addison-Wesley Pro- fessional. Glassner, A. S. (1991), ‘Maintaining winged- edge models’, Graphics Gems II - Academic Press 2, 191–201. Gois, J. & Piteri, M. (2002), ‘Geração automá- tica de malhas de elementos finitos e a estru- tura de dados winged-edge modificada’, Ten- dências em Matemática Aplicada e Computa- cional 3(1), 121–130. Hanks, B. W. (2005), Proceedings of the 14th International Meshing Roundtable, Springer. Leondes, C. T. (2002), Database and data com- munication network systems: techniques and applications, Vol. 2, Elsevier Science - Acade- mic Press. Neperud, B., Lowther, J. & Shene, C.-K. (2007), ‘Visualizing and animating the winged-edge data structure’, Elsevier. O’Rourke, J. (1998), Computational geometry in C, 2 ed., Cambridge University Press. Piteri, M. (1999), Geração Automática de Ma- lhas Hierárquico-Adaptativas em Domínios Bidimensionais e Tridimensionais, PhD the- sis, Universidade Técnica de Lisboa. Piteri, M. & Almeida, J. (1995), ‘Hierarchical 2d mesh generation using topological data struc- tures’, Education, Practice and Promotion of Computational Methods in Engineering Using Small Computers 2, 981–986. Vince, J. A. (2000), Essential computer anima- tion fast: how to understand the techniques and potential of computer animation, Sprin- ger. Conteúdo 1 Introdução 1 2 Estrutura 2 3 Consultas Suportadas 2 3.1 Consultas Básicas . . . . . . . . . . . 2 3.2 Consultas Extendidas . . . . . . . . 3 4 Conclusões 4 Referências 5 5
  • 6. Figura 5: A principal desvantagem da estrutura Winged-Egde é a sua grande demanda de armazenamento o que acarreta maior complexidade devido à manutenção de muitos índices. Uma boa discussão das questões de implementação da estrutura Winged-Egde para malhas pode ser encontrada no livro Graphics Gems II. Figura 6: Uma estrutura de dados topológica representa a completa topologia de um objeto em estudo (Gois & Piteri, 2002; Beall & Shephard, 1997; Piteri & Almeida, 1995; Piteri, 1999). Uma característica fundamental associada a essas estruturas é que qualquer informação relativa à topologia pode ser obtida em tempo constante ou proporcional ao número de entidades envolvidas, independentemente da dimensão do problema, quer a malha possua 1 milhão de elementos triangulares ou 100 mil elementos, já que estas informações são de natureza local. A estrutura de dados topológica Winged-Egde concentra a maior parte de suas informações na entidade aresta (O’Rourke, 1998). Isto acontece em função do fato de que em qualquer modelo poliedral manifold, uma aresta pertence a exatamente duas faces, ou seja, este número é invariante (Baumgart, 1975). Da forma como foi concebida originariamente, esta estrutura não permite representar diretamente uma face com mais de uma componente conexa, ou seja, buracos em seu interior (Vince, 2000). Com a introdução da entidade ciclo (Braid et al., 1980), pode-se representar faces com mais de uma componente conexa, e assim, a estrutura passa a ser referenciada como winged-edged modificada (Fischer, 1991; Leondes, 2002). 6