
advanced


PlanarMapPointLocation_2
Definition
PlanarMapPointLocation_2 is the point location strategy used by
Planar_map_2<Dcel, Traits>.
In order for the advanced user to write a model of a PlanarMapPointLocation_2 the user's class should inherit the CGAL supplied class
Pm_point_location_base<Planar_map>.
This class is an abstract base class for the different point location strategies including the supplied ones.
Planar_map_2<Dcel, Traits> is the
type that aggregates the strategy. The return values of the queries
are given in terms that the Planar_map_2<Dcel, Traits> handles.
#include <CGAL/Pm_point_location_base.h>
Types
typedef typename Planar_map::Traits


Traits;


typedef typename Planar_map::Locate_type


Locate_type;


typedef typename Planar_map::Halfedge_handle


Halfedge_handle;


typedef typename Traits::X_monotone_curve_2


X_monotone_curve_2;


typedef typename Traits::Point_2


Point_2;

Operations
virtual void

pl.init ( Planar_map& pmp, Traits& tr)

 
initializes
the strategy; will be called by the planar map directly after its
construction, with *this and the traits instantiation inside the
planar map, as its parameters.

Query Functions
virtual Halfedge_handle


pl.locate ( Point_2 p, Locate_type& lt)

 
point location query. A const version is also required.


virtual Halfedge_handle



 
vertical ray shooting query. A const version is also required.

The non const versions may update the internal structure of the Point location.
Modifiers
virtual void

pl.insert ( Halfedge_handle h, X_monotone_curve_2 cv)

 
updates the internal structure of the strategy after an insertion in the
planar map. The planar
map will call this function after the insertion has taken place. h is
the handle which is returned by the map after insertion, cv is
the curve inserted into the map.


virtual void

pl.split_edge ( 
X_monotone_curve_2 cv,
Halfedge_handle e1,
Halfedge_handle e2,
X_monotone_curve_2 cv1,
X_monotone_curve_2 cv2) 

 
updates the
internal structure of the strategy
after a split_edge operation in the planar map. The planar
map will call this function after the splitting has taken place. e1
and e2 are the two edges created after the split. cv is
the original curve that was in the map before the splitting,
cv1 and cv2 are the curves in e1 and e2 (respectively.)
after the splitting has taken place.


virtual void

pl.merge_edge ( 
X_monotone_curve_2 cv1,
X_monotone_curve_2 cv2,
Halfedge_handle e,
X_monotone_curve_2 cv) 

 
updates
the internal structure of the strategy
after a merge_edge operation in the planar map. The planar
map will call this function after the merging has taken place. e
is the merged edge. cv1 and cv2 are
the original curves that were in the map before the merging and
cv is the curve in e after the merging.


virtual void

pl.remove_edge ( Halfedge_handle e)

 
updates the internal
structure of the strategy during a remove_edge operation in the
planar map.The planar map will call this function before the removal
has taken place (so the internal structure can be updated before the
Halfedge
has been removed from the planar map itself.)

Has Models
Pm_trapezoid_ric_point_location<Planar_map>
Pm_naive_point_location<Planar_map>
Pm_walk_along_a_line_point_location<Planar_map>

advanced

