begin of advanced section  advanced  begin of advanced section

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
pl.vertical_ray_shoot ( Point_2 p,
Locate_type& lt,
bool up)
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>

end of advanced section  advanced  end of advanced section