Doubly Connected Edge List (DCEL) in Planar Subdivisions

map overlay n.w
1 / 34
Embed
Share

Explore the concept of Doubly Connected Edge List (DCEL) as a common representation for planar subdivisions such as Voronoi diagrams. Learn about its structure linking vertex, edge, and face records, facilitating traversal and orientation within planar subdivisions.

  • DCEL
  • Planar Subdivisions
  • Voronoi Diagrams
  • Data Structures

Uploaded on | 0 Views


Download Presentation

Please find below an Image/Link to download the presentation.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author. If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.

You are allowed to download the files provided on this website for personal or commercial use, subject to the condition that they are used lawfully. All files are the property of their respective owners.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author.

E N D

Presentation Transcript


  1. Map Overlay (slides from van Krevald s lecture)

  2. Planar subdivision

  3. Planar subdivision

  4. Planar subdivision

  5. Planar subdivision

  6. Eulers Formula

  7. Doubly Connect Edge List (DCEL) Notes from the book by de Berg, Van Krevald, Overmars, and Schwarzkpf. pp. 29-39

  8. Doubly Connected Edge List (DCEL) DCEL is one of the most commonly used representations for planar subdivisions such as Voronoi diagrams. It is an edge-based structure which links together the three sets of records: Vertex Edge Face It facilitates traversing the faces of planar subdivision, visiting all the edges around a given vertex

  9. Doubly Connected Edge List (DCEL) f1 face f2 f4 f3 edge f5 vertex Record for each face, edge, and vertex Geometric information Topological information Attribute information Half-edge structure

  10. Doubly Connected Edge List (DCEL) f1 f2 f4 f3 f5 Main ideas: Edges are oriented counterclockwise inside each face Since an edge borders two faces, each edge is replaced by two half-edges, one for each face

  11. Doubly Connected Edge List (DCEL) The vertex record of a vertex v stores the coordinates of v. It also stores a pointer IncidentEdge(v) to an arbitrary half-edge that has v as its origin IncidentFace(e1) next(e1) origin(e1) e1 e2 e6 e5 e3 previous(e1) The face record of a face f stores a pointer to some half-edge on its boundary which can be used as a starting point to traverse f in counterclockwise order e4 e3.twin e4.twin The half-edge record of a half-edge e stores pointer to: Origin (e) Twin of e, e.twin or twin(e) The face to its left ( IncidentFace(e) ) Next(e) : next half-edge on the boundary of IncidentFace(e) Previous(e) : previous half-edge

  12. Doubly Connected Edge List (DCEL) e7,2 v6 v3 e7,1 f3 e1,2 e5,2 e6,1 f5 e5,1 e1,1 f1 e6,2 e9,2 e9,1 f4 e3,1 e3,2 f2 v1 e8,1 e2,1 v4 e4,1 e2,2 e8,2 e4,2 v5 v2 Vertex Coordinates IncidentEdge v1 v2 v3 v4 v5 v6 (x1, y1) (x2, y2) (x3, y3) (x4, y4) (x5, y5) (x6, y6) e2,1 e4,1 e3,2 e6,1 e9,1 e7,1

  13. Doubly Connected Edge List (DCEL) e7,2 v6 v3 e7,1 f3 e1,2 e5,2 e6,1 f5 e5,1 e1,1 f1 e6,2 e9,2 e9,1 f4 e3,1 e3,2 f2 v1 e8,1 e2,1 v4 e4,1 e2,2 e8,2 e4,2 v5 v2 Face Edge f1 f2 f3 f4 f5 e1,1 e5,1 e5,2 e8,1 e9,2

  14. Doubly Connected Edge List (DCEL) e7,2 v6 v3 e7,1 f3 e1,2 e5,2 e6,1 f5 e5,1 e1,1 f1 e6,2 e9,2 e9,1 f4 e3,1 e3,2 f2 v1 e8,1 e2,1 v4 e4,1 e2,2 e8,2 e4,2 v5 v2 Half-edge Origin Twin IncidentFace Next Previous e3,1 e3,2 e4,1 e4,2 v2 v3 v2 v4 e3,2 e3,1 e4,2 e4,1 f1 f2 f2 f5 e1,1 e4,1 e5,1 e2,2 e2,1 e5,1 e3,2 e8,2

  15. Doubly Connected Edge List (DCEL) e7,2 v6 v3 e7,1 f3 e1,2 e5,2 e6,1 f5 e5,1 e1,1 f1 e6,2 e9,2 e9,1 f4 e3,1 e3,2 f2 v1 e8,1 e2,1 v4 e4,1 e2,2 e8,2 e4,2 v5 v2 Storage space requirement: Linear in the number of vertices, edges, and faces

  16. Doubly Connected Edge List (DCEL) e7,2 v6 v3 e7,1 f3 e1,2 e5,2 e6,1 f5 e5,1 e1,1 f1 e6,2 e9,2 e9,1 f4 e3,1 e3,2 f2 v1 e8,1 e2,1 v4 e4,1 e2,2 e8,2 e4,2 v5 v2 Operations: Walk around the boundary of a given face in CCW order Access a face from an adjacent one Visit all the edges around a given vertex

  17. Doubly Connected Edge List (DCEL) e7,2 v6 v3 e7,1 f3 e1,2 e5,2 e6,1 f5 e5,1 e1,1 f1 e6,2 e9,2 e9,1 f4 e3,1 e3,2 f2 v1 e8,1 e2,1 v4 e4,1 e2,2 e8,2 e4,2 v5 v2 Interesting Queries: Given a DCEL description, a line and a half-edge that this line cuts, efficiently find all the faces cut by

  18. Doubly Connected Edge List (DCEL) Traversing face f: Given: an edge of f 1. Determine the half-edge e incident on f 2. Start_edge e 3. While next(e) start_edge then e next (e)

  19. Doubly Connected Edge List (DCEL) Traversing all edges incident on a vertex v Note: we only output the half-edges whose origin is v Given: a half-edge e with the origin at v 1. Start_edge e 2. While next( twin(e) ) start_edge then e next( twin(e) )

  20. Adding a Vertex f2 x e1,1 e1,2 f1 b = prev(e1,1)

  21. Adding a Vertex New vertex x New edges: e1,2 and e1,2 IncidentEdge(x) = e1,2 f2 e1,2 x Origin(e1,2 ) = x Next(e1,2 ) = next (e1,2) Prev(e1,2 ) = e1,2 IncidentFace(e1,2 ) = f2 e1,1 e1,2 f1 b = prev(e1,1) Origin(e1,2 ) = origin(e1,2) Next(e1,2 ) = e1,2 Prev(e1,2 ) = prev(e1,2) IncidentFace(e1,2 ) = f2 Next(Prev(e1,2)) = e1,2 Prev(Next(e1,2)) = e1,2 Delete edge e1,2

  22. Adding a Vertex New edges: e1,1 and e1,1 Origin(e1,1 ) = origin(e1,1) Next(e1,1 ) = e1,1 Prev(e1,1 ) = prev(e1,1) IncidentFace(e1,1 ) = f1 f2 e1,2 e1,1 x Origin(e1,1 ) = e1,1 Next(e1,1 ) = next(e1,1) Prev(e1,1 ) = e1,1 IncidentFace(e1,1 ) = f1 e1,2 e1,1 f1 b = prev(e1,1) Next(prev(e1,1)) = e1,1 Prev(next(e1,1)) = e1,1 Twin(e1,2 ) = e1,1 Twin(e1,1 ) = e1,2 Twin(e1,2 ) = e1,1 Twin(e1,1 ) = e1,2 Delete edge e1,1

  23. Adding a Vertex If e1,1 was starting edge of f1, need to change it to either one of the new edges If e1,2 was starting edge of f2, need to change it to either one of the new edges f2 e1,2 e1,1 x e1,2 e1,1 f1 b = prev(e1,1)

  24. Other Operations on DCEL b e a Add an Edge Planar subdivision e is added DCEL can be updated in constant time once the edges a and b are known

  25. Map Overlay Problem (slides from van Krevald notes)

  26. Map Overlay Problem (slides from van Krevald s lectures)

  27. Plane sweep events

  28. Plane sweep events

  29. Plane sweep events

  30. Plane sweep events

  31. Overlay so far

  32. Efficiency

  33. Summary

More Related Content