Boundary Representations and Topology

Download Report

Transcript Boundary Representations and Topology

Boundary Representations
and Topology
Dr. Scott Schaefer
1
Boundary Representations

Stores the boundary of a solid
 Geometry: vertex locations
 Topology: connectivity information
 Vertices
 Edges
 Faces
2/38
Boundary Representations

Constant time adjacency information
 For each vertex,
 Find edges/faces touching vertex
 For each edge,
 Find vertices/faces touching edge
 For each face,
 Find vertices/edges touching face
3/38
Boundary Representations

Typically assume the surface is manifold

A surface is manifold if, for every point,
locally the surface is equivalent to an open
disk
4/38
Boundary Representations

Typically assume the surface is manifold

A surface is manifold if, for every point,
locally the surface is equivalent to an open
disk
Locally manifold
5/38
Boundary Representations

Typically assume the surface is manifold

A surface is manifold if, for every point,
locally the surface is equivalent to an open
disk
Non-manifold edge
6/38
Boundary Representations

Typically assume the surface is manifold

A surface is manifold if, for every point,
locally the surface is equivalent to an open
disk
Non-manifold vertex
7/38
Winged Edge Data Structure
NL
NR
N
Left face
Right face
E
P
PL
PR
8/38
Winged Edge Data Structure
WingedEdge {
WingedEdge nextLeft, nextRight,
prevLeft, prevRight;
Face leftFace, rightFace;
Vertex prevVert, nextVert;
}
Face {
WingedEdge edge;
}
Vertex {
WingedEdge edge;
}
NL
NR
N
Left face
Right face
E
P
PL
PR
9/38
Winged Edge Data Structure
Given a face, find all vertices touching that
face
 Given a vertex, find all edge-adjacent
vertices
 Given a face, find all
NL
NR
N
adjacent faces

Left face
Right face
E
P
PL
PR
10/38
Half Edge Data Structure
NHE
face
HE E Flip
PHE
V
11/38
Half Edge Data Structure
HalfEdge {
HalfEdge next, prev, flip;
Face face;
Vertex origin;
Edge edge;
}
Face {
HalfEdge edge; // part of this face
}
Vertex {
HalfEdge edge; // points away
}
Edge {
HalfEdge he;
}
NHE
face
HE E Flip
PHE
V
12/38
Half Edge Data Structure
Very similar to WingedEdge Data Structure,
but edges have unique orientation
 Slightly more storage
 Less conditional operations
NHE
 Assumes polygons are oriented

face
HE E Flip
PHE
V
13/38
QuadEdge Data Structure
V1
F2
F1
V2
14/38
Navigating a QuadEdge
Data Structure
V1
F2
F1
V2
15/38
Navigating a QuadEdge
Data Structure
Origin
V1
F2
F1
V2
16/38
Navigating a QuadEdge
Data Structure
V1
Flip
F2
F1
V2
17/38
Navigating a QuadEdge
Data Structure
V1
Rot
F2
F1
V2
18/38
Navigating a QuadEdge
Data Structure
V1
invRot
F2
F1
V2
19/38
Navigating a QuadEdge
Data Structure
V1
Prev
F2
F1
V2
20/38
Navigating a QuadEdge
Data Structure
V1
Next
F2
F1
V2
21/38
QuadEdge Data Structure
Treats faces just like vertices
 Stores both the shape and its dual


Beneficial for many types of
subdivision surfaces
V1
F2
F1
V2
22/38
Building a Topological Data Structure
Must connect adjacent edges/faces/vertices
 Edges are critical in most data structures


Use a hash table indexed by
two vertices
NHE
face
HE E Flip
PHE
V
23/38
Euler Characteristic
V  E  F  2  2G   (G )
V: number of vertices
 E: number of edges
 F: number of faces
 G: genus of surface (number of holes)

24/38
Euler Characteristic
V  E  F  2  2G   (G )
V: number of vertices
 E: number of edges
 F: number of faces
 G: genus of surface (number of holes)

25/38
Euler Characteristic
V  E  F  2  2G   (G )
V: number of vertices
 E: number of edges
 F: number of faces
 G: genus of surface (number of holes)

8 12  6  2  2 * 0
26/38
Euler Characteristic
V  E  F  2  2G   (G )
V: number of vertices
 E: number of edges
 F: number of faces
 G: genus of surface (number of holes)

4  6  4  2  2*0
27/38
Euler Characteristic
V  E  F  2  2G   (G )
V: number of vertices
 E: number of edges
 F: number of faces
 G: genus of surface (number of holes)

16  32  16  2  2 *1
28/38
Topological Operations: Hole Filling
Find a half-edge whose flip is null
 Use next and flip points to find next adjacent
half-edge with null flip
 Repeat until back at original
NHE
half-edge
face
Flip  null
 Create new half-edges along
HE
E
boundary and face containing
PHE
those edges
V

29/38
Topological Operations: Edge
Collapse
30/38
Topological Operations: Edge
Collapse

Set origin of all edges pointing outwards from
two vertices to new vertex and vertex to one of
the half-edges
31/38
Topological Operations: Edge
Collapse


Set origin of all edges pointing outwards from
two vertices to new vertex and vertex to one of
the half-edges
Set flip on outer edges to point to opposite edge
32/38
Topological Operations: Edge
Collapse



Set origin of all edges pointing outwards from
two vertices to new vertex and vertex to one of
the half-edges
Set flip on outer edges to point to opposite edge
Make sure half-edge pointer for edges point to
correct half-edge
33/38
Topological Operations: Edge
Collapse




Set origin of all edges pointing outwards from
two vertices to new vertex and vertex to one of
the half-edges
Set flip on outer edges to point to opposite edge
Make sure half-edge pointer for edges point to
correct half-edge
Update half-edge for
wing-vertices
34/38
Topological Operations: Edge
Collapse





Set origin of all edges pointing outwards from
two vertices to new vertex and vertex to one of
the half-edges
Set flip on outer edges to point to opposite edge
Make sure half-edge pointer for edges point to
correct half-edge
Update half-edge for
wing-vertices
Delete faces/edges/vertices
35/38
Topological Operation: Edge
Collapse

Edge collapse preserves topology as long as
the local Euler characteristic of the surface
remains the same
V  E  F   (G )
36/38
Topological Operation: Edge
Collapse

Edge collapse preserves topology as long as
the local Euler characteristic of the surface
remains the same
V  E  F   (G )
Vˆ  Eˆ  Fˆ  (V  1)  ( E  3)  ( F  2)  V  E  F
Vˆ  V  1
Eˆ  E  3
Fˆ  F  2
37/38
Topological Operation: Edge
Collapse

Edge collapse does NOT always preserve
topology
38/38
Detecting Unsafe Edge Collapses
Let N(v) be the set of vertices edge-adjacent
to v
 Safe to collapse if N (v1 )  N (v2 )  2

v1
v2
39/38