Topological Representation of Object Boundaries: Vertices, Edges, and Faces, Study notes of Data Structures and Algorithms

The topological representation of object boundaries using vertices, edges, and faces. It covers geometric descriptions of these entities, hierarchical representations, and boundary representation examples. The document also explores symmetric structures, face adjacency graphs, and winged-edge representations. It concludes by removing redundant information in the relations.

Typology: Study notes

Pre 2010

Uploaded on 02/13/2009

koofers-user-gqb
koofers-user-gqb 🇺🇸

9 documents

1 / 14

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
we0
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
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe

Partial preview of the text

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

e-mail: [email protected]

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!