Yazd Univ. Computing the Overlay of Two Computational Geometry Subdivisions Doubly Connected Edge List (DCEL) Computing the Overlay of Two Subdivisions 1392-1 1 / 25
We have solved the easiest case of the map overlay problem, where the two maps are networks represented as collections of line segments. Yazd Univ. In general, maps have a more complicated structure: they are subdivisions of the plane into labeled Computational regions. Geometry Doubly Connected Edge List (DCEL) Computing the Overlay of Two Subdivisions 2 / 25
Before we can give an algorithm for computing the overlay of two subdivisions, we must develop a suitable representation for a subdivision. Yazd Univ. Storing a subdivision as a collection of line segments is not such a good idea. Computational Geometry Operations like reporting the boundary of a region would be rather complicated. Doubly Connected Edge List (DCEL) Add topological information: which segments bound Computing the a given region, which regions are adjacent, and so Overlay of Two Subdivisions on. 3 / 25
edge Yazd Univ. Computational disconnected Geometry vertex subdivision Doubly Connected Edge List (DCEL) Computing the face Overlay of Two Subdivisions Complexity of a subdivision #faces+#edges+#vertices. 4 / 25
Yazd Univ. Computational Geometry incident Doubly Connected Edge List (DCEL) Computing the Overlay of Two Subdivisions Complexity of a subdivision #faces+#edges+#vertices. 4 / 25
What kind of queries? What is the face containing a given point? (TOO MUCH!) Yazd Univ. Walking around the boundary of a given face, Find the face from an adjacent one if we are given a Computational Geometry common edge, Visit all the edges around a given vertex. Doubly Connected Edge List (DCEL) Computing the Overlay of Two The representation that we shall discuss supports these Subdivisions operations. It is called the doubly-connected edge list (DCEL). 5 / 25
DCEL DCEL contains: Yazd Univ. a record for each edge, a record for each vertex, Computational Geometry a record for each face, plus attribute information. Doubly Connected Edge List (DCEL) Computing the Overlay of Two Subdivisions 6 / 25
Yazd Univ. Computational Geometry Doubly Connected Edge List (DCEL) w → − Computing the e Overlay of Two → Twin ( − Subdivisions e ) v To be able to traverse the boundary of a face, we need to keep a pointer to a half-edge of any boundary component and isolated points. 7 / 25
Yazd Univ. Computational Geometry Doubly Connected Edge List (DCEL) Computing the Overlay of Two Subdivisions To be able to traverse the boundary of a face, we need to keep a pointer to a half-edge of any boundary component and isolated points. 7 / 25
Yazd Univ. Computational Geometry Doubly Connected Edge List (DCEL) Computing the Overlay of Two Subdivisions To be able to traverse the boundary of a face, we need to keep a pointer to a half-edge of any boundary component and isolated points. 7 / 25
Yazd Univ. Computational Geometry Doubly Connected Edge List (DCEL) Computing the Overlay of Two Subdivisions To be able to traverse the boundary of a face, we need to keep a pointer to a half-edge of any boundary component and isolated points. 7 / 25
DCEL DCEL contains: a record for each vertex, Yazd Univ. Coordinates ( v ) : the coordinates of v , 1 IncidentEdge ( v ) : a pointer to an arbitrary half-edge 2 Computational that has v as its origin. Geometry a record for each face, OuterComponent ( f ) : to some half-edge on its outer Doubly Connected 1 Edge List (DCEL) boundary (nil if unbounded), Computing the InnerComponents ( f ) : a pointer to some half-edge 2 Overlay of Two Subdivisions on the boundary of the hole, for each hole. a record for each half-edge − → e , Origin ( − → e ) : a pointer to its origin, 1 Twin ( − → e ) a pointer to its twin half-edge, 2 IncidentFace ( − → e ) : a pointer to the face that it 3 bounds. Next ( − → e ) and Prev ( − → e ) : a pointer to the next and 4 previous edge on the boundary of IncidentFace ( − → e ) . 8 / 25
DCEL DCEL contains: a record for each vertex, Yazd Univ. Coordinates ( v ) : the coordinates of v , 1 IncidentEdge ( v ) : a pointer to an arbitrary half-edge 2 Computational that has v as its origin. Geometry a record for each face, OuterComponent ( f ) : to some half-edge on its outer Doubly Connected 1 Edge List (DCEL) boundary (nil if unbounded), Computing the InnerComponents ( f ) : a pointer to some half-edge 2 Overlay of Two Subdivisions on the boundary of the hole, for each hole. a record for each half-edge − → e , Origin ( − → e ) : a pointer to its origin, 1 Twin ( − → e ) a pointer to its twin half-edge, 2 IncidentFace ( − → e ) : a pointer to the face that it 3 bounds. Next ( − → e ) and Prev ( − → e ) : a pointer to the next and 4 previous edge on the boundary of IncidentFace ( − → e ) . 8 / 25
DCEL DCEL contains: a record for each vertex, Yazd Univ. Coordinates ( v ) : the coordinates of v , 1 IncidentEdge ( v ) : a pointer to an arbitrary half-edge 2 Computational that has v as its origin. Geometry a record for each face, OuterComponent ( f ) : to some half-edge on its outer Doubly Connected 1 Edge List (DCEL) boundary (nil if unbounded), Computing the InnerComponents ( f ) : a pointer to some half-edge 2 Overlay of Two Subdivisions on the boundary of the hole, for each hole. a record for each half-edge − → e , Origin ( − → e ) : a pointer to its origin, 1 Twin ( − → e ) a pointer to its twin half-edge, 2 IncidentFace ( − → e ) : a pointer to the face that it 3 bounds. Next ( − → e ) and Prev ( − → e ) : a pointer to the next and 4 previous edge on the boundary of IncidentFace ( − → e ) . 8 / 25
DCEL DCEL contains: a record for each vertex, Yazd Univ. Coordinates ( v ) : the coordinates of v , 1 IncidentEdge ( v ) : a pointer to an arbitrary half-edge 2 Computational that has v as its origin. Geometry a record for each face, OuterComponent ( f ) : to some half-edge on its outer Doubly Connected 1 Edge List (DCEL) boundary (nil if unbounded), Computing the InnerComponents ( f ) : a pointer to some half-edge 2 Overlay of Two Subdivisions on the boundary of the hole, for each hole. a record for each half-edge − → e , Origin ( − → e ) : a pointer to its origin, 1 Twin ( − → e ) a pointer to its twin half-edge, 2 IncidentFace ( − → e ) : a pointer to the face that it 3 bounds. Next ( − → e ) and Prev ( − → e ) : a pointer to the next and 4 previous edge on the boundary of IncidentFace ( − → e ) . 8 / 25
DCEL DCEL contains: a record for each vertex, Yazd Univ. Coordinates ( v ) : the coordinates of v , 1 IncidentEdge ( v ) : a pointer to an arbitrary half-edge 2 Computational that has v as its origin. Geometry a record for each face, OuterComponent ( f ) : to some half-edge on its outer Doubly Connected 1 Edge List (DCEL) boundary (nil if unbounded), Computing the InnerComponents ( f ) : a pointer to some half-edge 2 Overlay of Two Subdivisions on the boundary of the hole, for each hole. a record for each half-edge − → e , Origin ( − → e ) : a pointer to its origin, 1 Twin ( − → e ) a pointer to its twin half-edge, 2 IncidentFace ( − → e ) : a pointer to the face that it 3 bounds. Next ( − → e ) and Prev ( − → e ) : a pointer to the next and 4 previous edge on the boundary of IncidentFace ( − → e ) . 8 / 25
DCEL DCEL contains: a record for each vertex, Yazd Univ. Coordinates ( v ) : the coordinates of v , 1 IncidentEdge ( v ) : a pointer to an arbitrary half-edge 2 Computational that has v as its origin. Geometry a record for each face, OuterComponent ( f ) : to some half-edge on its outer Doubly Connected 1 Edge List (DCEL) boundary (nil if unbounded), Computing the InnerComponents ( f ) : a pointer to some half-edge 2 Overlay of Two Subdivisions on the boundary of the hole, for each hole. a record for each half-edge − → e , Origin ( − → e ) : a pointer to its origin, 1 Twin ( − → e ) a pointer to its twin half-edge, 2 IncidentFace ( − → e ) : a pointer to the face that it 3 bounds. Next ( − → e ) and Prev ( − → e ) : a pointer to the next and 4 previous edge on the boundary of IncidentFace ( − → e ) . 8 / 25
DCEL Origin ( − → e ) Twin( − Yazd Univ. → e ) Computational e ) Geometry → Next( − − → e Doubly Connected Edge List (DCEL) Computing the Prev( − Overlay of Two Subdivisions → e ) IncidentFace( − → e ) 9 / 25
DCEL:Example − → e 1 , 1 v 1 v 2 → − e 1 , 2 → − f 2 e 4 , 1 Yazd Univ. e 3 , 2 − → e 4 , 2 → − → − e 3 , 1 Computational Geometry f 1 v 3 Doubly Connected e 2 , 2 → Edge List (DCEL) − e 2 , 1 → − Computing the Overlay of Two Subdivisions v 4 10 / 25
DCEL Time complexity of queries? Yazd Univ. Walking around the boundary of a given face, Find the face from an adjacent one if we are given a Computational Geometry common edge, Visit all the edges around a given vertex. Doubly Connected Edge List (DCEL) Computing the Overlay of Two Subdivisions 11 / 25
Recommend
More recommend