Download Topological Representation of Object Boundaries: Vertices, Edges, and Faces and more Study notes Data Structures and Algorithms in PDF only on Docsity!
Copyright © 1998 Hanan Samet
These notes may not be reproduced by any means (mechanical or elec-
tronic or any other) without the express written permission of Hanan Samet
WINGED-EDGE DATA STRUCTURE
Hanan Samet
Computer Science Department and
Center for Automation Research and
Institute for Advanced Computer Studies
University of Maryland
College Park, Maryland 20742
EXAMPLE GEOMETRIC DATABASE
• Boundary model (BRep)
• Assume a solid object bounded by compact orientable
two-manifold surfaces (i.e., only two faces meet at an
edge)
• Primitive topological entities
1. vertices
2. edges
3. faces
• Nonprimitive topological entities for multiply-connected
objects (e.g., holes, internal cavities)
1. shell—a maximally connected set of faces
Ex: cube within a cube has two shells (internal and
external)
2. loop on a face—closed chain of edges bounding the
face
Ex: nut with 2 loops for each of top and bottom faces
HIERARCHICAL REPRESENTATION
object
shells
faces
surface equation
pair of vertices
linear segments
bounding loops
1. Decompose object into shells
2. Each shell is a collection of faces
3. Each face
• surface equation, AND
• collection of its bounding loops
4. Each loop is a chain of edges
5. Each edge is a collection of linear segments
6. Each linear segment is a pair of vertices
SPECIFYING A BOUNDARY MODEL
1. Set of topological entities defining the object’s boundary
2. Subset of 25 different adjacency relationships between
pairs of individual entities
• relations are ordered
• edge-face is different from face-edge
a. edge-face associates with each edge the two
adjacent faces
b. face-edge associates with each face the edges
that bound it
WINGED-EDGE REPRESENTATION
• Physical interpretation of attributes of relations
FCCW(e)
ENCCW(e)
VSTART(e)
EPCCW(e)
VEND(e)
EPCW(e)
ENCW(e)
E
FCW(e)
• Vertex relation:
1. vertex (primary key)
2–4. x , y , z coordinate values (key)
5. identity of an edge which starts at the vertex
(ESTART)
• enables extracting set of edges incident at a vertex
in time proportional to the number of edges
• Face relation:
1. face (primary key)
2. identity of an edge which is part of the face (ESTART)
• enables extracting set of edges comprising a face in
time proportional to the number of edges
• Edge relation:
1. edge (primary key)
2–3. start (VSTART) and end (VEND) vertices (key)
4–5. two adjacent faces (FCW and FCCW) (key)
6–7. preceding and next edges in one face (EPCW and
ENCW) (key)
8–9. preceding and next edges in other face (EPCCW
and ENCCW) (key)
• Question: are the relations in 2NF, 3NF, or BCNF?
REMOVING REDUNDANT INFORMATION IN THE
RELATIONS
• Minimum information in the relations:
1. vertex relation: vertex, x , y , z
2. face relation: face, ESTART
3. edge relation: edge, VSTART, VEND, FCW, FCCW
• Without FCW and FCCW we cannot get to the faces from
the edges and hence we cannot determine the edges
that are adjacent to a face
• EPCW and ENCW or EPCCW and ENCCW are
inadequate by themselves to identify the edges that are
adjacent to a face
• Face relation is not absolutely necessary
• Face relation (ESTART) is only useful to avoid having to
perform an O (number of edges) search on the FCW or
FCCW fields to determine an edge given a face
• The ESTART field should also be included in the vertex
relation
we
1. look up face F in face table and find an edge E
2. find E in edge table; repeat until read E again
• if F=FCW(E) then next edge is ENCW(E)
• else F=FCCW(E) and next edge is ENCCW(E)
• Ex: get edges in face F 3 in clockwise order
b
EDGE VSTART VEND EPCW ENCW EPCCW ENCCW FCW FCCW V V V V V V V V V V V V 2 3 4 1 6 7 8 5 6 2 8 4
E
1 2 3 4 5 6 7 8 9
10 11 12
E
4 1 2 3 8 5 6 7 1 5 3 7
E
2 3 4 1 6 7 8 5 5 1 7 3
E9 E
10 11 12 9 9 12 11 10 6 2 8 4
E
9 10 11 12 10 9 12 11 4 8 2 6
F F F F F F F F F F F F 1 1 1 1 2 2 2 2 4 4 3 3 F F F F F F F F F F F F 4 6 3 5 4 5 3 6 5 6 6 5 V V V V V V V V V V V V 1 2 3 4 5 6 7 8 1 5 3 7
FACE ESTART F F F F F F 1 2 3 4 5 6
E
1 5 7 9 4 8
V
E
V6 (^) E5 V E E1 V
E
V
E E
E
V
E
E
E
V
V
E
F
F
F
F
F F
CW EDGES IN A FACE
r
1. look up face F 3 in face table and find edge E 7
z
2. look up edge E 7 in edge table and since F 3 =FCCW(E 7 ),
next edge is ENCCW(E 7 )=E 12
g
3. look up edge E 12 in edge table and since F 3 =FCW(E 12 ),
next edge is ENCW(E 12 )=E 3
v
4. look up edge E 3 in edge table and since F 3 =FCCW(E 3 ),
next edge is ENCCW(E 3 )=E 11
r
5. look up edge E 11 in edge table and since F 3 =FCW(E 11 ),
next edge is ENCW(E 11 )=E 7 ; now, we are done!
we
1. look up vertex V in face table and find an edge E
2. find E in edge table; repeat until read E again
• if V=VSTART(E) then next edge is EPCW(E)
• else V=VEND(E) and next edge is EPCCW(E)
• Ex: get edges meeting at vertex V 5 in clockwise order
b
V 7 X 7 Y 7 Z 7 E
V V V V V V V V 1 2 3 4 5 6 7 8 X X X X X X X X 1 2 3 4 5 6 7 8 Y Y Y Y Y Y Y Y 1 2 3 4 5 6 7 8 Z Z Z Z Z Z Z Z 1 2 3 4 5 6 7 8 E E E E E E E E 1 2 3 4 5 6 7 8
EDGE VSTART VEND EPCW ENCW EPCCW ENCCW FCW FCCW V V V V V V V V V V V V 2 3 4 1 6 7 8 5 6 2 8 4 E E E E E E E E E E E E 1 2 3 4 5 6 7 8 9
10 11 12
E E E E E E E E E E E E 4 1 2 3 8 5 6 7 1 5 3 7 E E E E E E E E E E E E 2 3 4 1 6 7 8 5 5 1 7 3 E E E E E E E E E E E E 10 11 12 9 9 12 11 10 6 2 8 4
E E E E E E E E E E E E 9 10 11 12 10 9 12 11 4 8 2 6
F F F F F F F F F F F F 1 1 1 1 2 2 2 2 4 4 3 3 F F F F F F F F F F F F 4 6 3 5 4 5 3 6 5 6 6 5 V V V V V V V V V V V V 1 2 3 4 5 6 7 8 1 5 3 7
E
V6 (^) E5 V E E1 V
E
V
E E
E
V
E3 V
E
E
V
V
E
CW EDGES MEETING AT A VERTEX
r
1. look up vertex V 5 in vertex table and find edge E 5
z
2. look up edge E 5 in edge table and since V 5 =VSTART(E 5 ),
next edge is EPCW(E 5 )=E 8
g
3. look up edge E 8 in edge table and since V 5 =VEND(E 8 ),
next edge is EPCCW(E 8 )=E 10
v
4. look up edge E 10 in edge table and since
V 5 =VSTART(E 10 ), next edge is EPCW(E 10 )=E 5 ; now, we
are done!
we
1. look up vertex V in face table and find an edge E
2. find E in edge table; repeat until read E again
• if V=VSTART(E) then next edge is ENCCW(E)
• else V=VEND(E) and next edge is ENCW(E)
• Ex: get edges meeting at V 5 in counterclockwise order
b
V 8 X 8 Y 8 Z 8 E
V V V V V V V V 1 2 3 4 5 6 7 8 X X X X X X X X 1 2 3 4 5 6 7 8 Y Y Y Y Y Y Y Y 1 2 3 4 5 6 7 8 Z Z Z Z Z Z Z Z 1 2 3 4 5 6 7 8 E E E E E E E E 1 2 3 4 5 6 7 8
EDGE VSTART VEND EPCW ENCW EPCCW ENCCW FCW FCCW V V V V V V V V V V V V 2 3 4 1 6 7 8 5 6 2 8 4 E E E E E E E E E E E E 1 2 3 4 5 6 7 8 9
10 11 12
E E E E E E E E E E E E 4 1 2 3 8 5 6 7 1 5 3 7 E E E E E E E E E E E E 2 3 4 1 6 7 8 5 5 1 7 3 E E E E E E E E E E E E 10 11 12 9 9 12 11 10 6 2 8 4
E E E E E E E E E E E E 9 10 11 12 10 9 12 11 4 8 2 6
F F F F F F F F F F F F 1 1 1 1 2 2 2 2 4 4 3 3 F F F F F F F F F F F F 4 6 3 5 4 5 3 6 5 6 6 5 V V V V V V V V V V V V 1 2 3 4 5 6 7 8 1 5 3 7
E
V6 (^) E5 V E E1 V
E
V
E E
E
V
E3 V
E
E
V
V
E
CCW EDGES MEETING AT A VERTEX
r
1. look up vertex V 5 in vertex table and find edge E 5
z
2. look up edge E 5 in edge table and since V 5 =VSTART(E 5 ),
next edge is ENCCW(E 5 )=E 10
g
3. look up edge E 10 in edge table and since
V 5 =VSTART(E 10 ), next edge is ENCCW(E 10 )=E 8
v
4. look up edge E 8 in edge table and since V 5 =VEND(E 8 ),
next edge is ENCW(E 8 )=E 5 ; now, we are done!