Download Boundary Representations and Topology

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
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