BWAPI
Public Types | Protected Types | Protected Member Functions | Protected Attributes
Arr_planar_topology_traits_base_2< GeomTraits_, Dcel_ > Class Template Reference

#include <Arr_planar_topology_traits_base_2.h>

Inheritance diagram for Arr_planar_topology_traits_base_2< GeomTraits_, Dcel_ >:
Inheritance graph
[legend]
Collaboration diagram for Arr_planar_topology_traits_base_2< GeomTraits_, Dcel_ >:
Collaboration graph
[legend]

List of all members.

Public Types

typedef
Arr_planar_topology_traits_base_2
< Geometry_traits_2, Dcel
Self
The geometry-traits types.

!

typedef GeomTraits_ Geometry_traits_2
typedef Geometry_traits_2::Point_2 Point_2
typedef
Geometry_traits_2::X_monotone_curve_2 
X_monotone_curve_2
The DCEL types.

!

typedef Dcel_ Dcel
typedef Dcel::Size Size
typedef Dcel::Vertex Vertex
typedef Dcel::Halfedge Halfedge
typedef Dcel::Face Face
typedef Dcel::Outer_ccb Outer_ccb
typedef Dcel::Inner_ccb Inner_ccb
typedef Dcel::Isolated_vertex Isolated_vertex

Public Member Functions

Construction methods.

!

 Arr_planar_topology_traits_base_2 ()
 Arr_planar_topology_traits_base_2 (const Geometry_traits_2 *geom_traits)
void assign (const Self &other)
virtual ~Arr_planar_topology_traits_base_2 ()
Common topology-traits methods.

!

const Dceldcel () const
Dceldcel ()
void notify_on_boundary_vertex_creation (Vertex *, const X_monotone_curve_2 &, Arr_curve_end, Arr_parameter_space, Arr_parameter_space)
std::pair< bool, bool > face_split_after_edge_insertion (const Halfedge *CGAL_precondition_code(prev1), const Halfedge *CGAL_precondition_code(prev2), const X_monotone_curve_2 &) const
bool hole_creation_after_edge_removal (const Halfedge *he) const
bool is_on_new_perimetric_face_boundary (const Halfedge *, const Halfedge *, const X_monotone_curve_2 &) const
bool boundaries_of_same_face (const Halfedge *, const Halfedge *) const
bool is_in_face (const Face *f, const Point_2 &p, const Vertex *v) const
Additional accessors, specialized for this topology-traits class.
virtual const Faceinitial_face () const =0
Additional predicates, specialized for this topology-traits class.
virtual Comparison_result compare_x (const Point_2 &p, const Vertex *v) const =0
virtual Comparison_result compare_xy (const Point_2 &p, const Vertex *v) const =0
virtual Comparison_result compare_y_at_x (const Point_2 &p, const Halfedge *he) const =0

Protected Types

typedef
Arr_traits_basic_adaptor_2
< Geometry_traits_2
Traits_adaptor_2

Protected Member Functions

 Arr_planar_topology_traits_base_2 (const Self &)
Selfoperator= (const Self &)

Protected Attributes

Dcel m_dcel
const Traits_adaptor_2traits
bool own_traits

Detailed Description

template<class GeomTraits_, class Dcel_ = Arr_default_dcel<GeomTraits_>>
class Arr_planar_topology_traits_base_2< GeomTraits_, Dcel_ >

A base topology-traits class that encapsulates the embedding of 2D arrangements of bounded or unbounded curves on the plane.


Member Typedef Documentation

template<class GeomTraits_, class Dcel_ = Arr_default_dcel<GeomTraits_>>
typedef Dcel_ Arr_planar_topology_traits_base_2< GeomTraits_, Dcel_ >::Dcel
template<class GeomTraits_, class Dcel_ = Arr_default_dcel<GeomTraits_>>
typedef Dcel::Face Arr_planar_topology_traits_base_2< GeomTraits_, Dcel_ >::Face
template<class GeomTraits_, class Dcel_ = Arr_default_dcel<GeomTraits_>>
typedef GeomTraits_ Arr_planar_topology_traits_base_2< GeomTraits_, Dcel_ >::Geometry_traits_2
template<class GeomTraits_, class Dcel_ = Arr_default_dcel<GeomTraits_>>
typedef Dcel::Halfedge Arr_planar_topology_traits_base_2< GeomTraits_, Dcel_ >::Halfedge
template<class GeomTraits_, class Dcel_ = Arr_default_dcel<GeomTraits_>>
typedef Dcel::Inner_ccb Arr_planar_topology_traits_base_2< GeomTraits_, Dcel_ >::Inner_ccb
template<class GeomTraits_, class Dcel_ = Arr_default_dcel<GeomTraits_>>
typedef Dcel::Isolated_vertex Arr_planar_topology_traits_base_2< GeomTraits_, Dcel_ >::Isolated_vertex
template<class GeomTraits_, class Dcel_ = Arr_default_dcel<GeomTraits_>>
typedef Dcel::Outer_ccb Arr_planar_topology_traits_base_2< GeomTraits_, Dcel_ >::Outer_ccb
template<class GeomTraits_, class Dcel_ = Arr_default_dcel<GeomTraits_>>
typedef Geometry_traits_2::Point_2 Arr_planar_topology_traits_base_2< GeomTraits_, Dcel_ >::Point_2
template<class GeomTraits_, class Dcel_ = Arr_default_dcel<GeomTraits_>>
typedef Arr_planar_topology_traits_base_2<Geometry_traits_2, Dcel> Arr_planar_topology_traits_base_2< GeomTraits_, Dcel_ >::Self
template<class GeomTraits_, class Dcel_ = Arr_default_dcel<GeomTraits_>>
typedef Dcel::Size Arr_planar_topology_traits_base_2< GeomTraits_, Dcel_ >::Size
template<class GeomTraits_, class Dcel_ = Arr_default_dcel<GeomTraits_>>
typedef Arr_traits_basic_adaptor_2<Geometry_traits_2> Arr_planar_topology_traits_base_2< GeomTraits_, Dcel_ >::Traits_adaptor_2 [protected]
template<class GeomTraits_, class Dcel_ = Arr_default_dcel<GeomTraits_>>
typedef Dcel::Vertex Arr_planar_topology_traits_base_2< GeomTraits_, Dcel_ >::Vertex
template<class GeomTraits_, class Dcel_ = Arr_default_dcel<GeomTraits_>>
typedef Geometry_traits_2::X_monotone_curve_2 Arr_planar_topology_traits_base_2< GeomTraits_, Dcel_ >::X_monotone_curve_2

Constructor & Destructor Documentation

template<class GeomTraits_, class Dcel_ = Arr_default_dcel<GeomTraits_>>
Arr_planar_topology_traits_base_2< GeomTraits_, Dcel_ >::Arr_planar_topology_traits_base_2 ( const Self ) [protected]
template<class GeomTraits_, class Dcel_ = Arr_default_dcel<GeomTraits_>>
Arr_planar_topology_traits_base_2< GeomTraits_, Dcel_ >::Arr_planar_topology_traits_base_2 ( ) [inline]

Default constructor.

template<class GeomTraits_, class Dcel_ = Arr_default_dcel<GeomTraits_>>
Arr_planar_topology_traits_base_2< GeomTraits_, Dcel_ >::Arr_planar_topology_traits_base_2 ( const Geometry_traits_2 geom_traits) [inline]

Constructor with a geometry-traits class.

template<class GeomTraits_, class Dcel_ = Arr_default_dcel<GeomTraits_>>
virtual Arr_planar_topology_traits_base_2< GeomTraits_, Dcel_ >::~Arr_planar_topology_traits_base_2 ( ) [inline, virtual]

Destructor.


Member Function Documentation

template<class GeomTraits , class Dcel_ >
void Arr_planar_topology_traits_base_2< GeomTraits, Dcel_ >::assign ( const Self other)

Assign the contents of another topology-traits class.

Reimplemented in Arr_unb_planar_topology_traits_2< GeomTraits_, Dcel_ >.

template<class GeomTraits_, class Dcel_ = Arr_default_dcel<GeomTraits_>>
bool Arr_planar_topology_traits_base_2< GeomTraits_, Dcel_ >::boundaries_of_same_face ( const Halfedge ,
const Halfedge  
) const [inline]

Determine whether the two halfedges, belonging to different outer CCBs, belong to the outer boundary of the same face.

Parameters:
e1The first halfedge.
e2The second halfedge.
Returns:
Whether the two halfedge belong to the outer boundary of the same face.
template<class GeomTraits_, class Dcel_ = Arr_default_dcel<GeomTraits_>>
virtual Comparison_result Arr_planar_topology_traits_base_2< GeomTraits_, Dcel_ >::compare_x ( const Point_2 p,
const Vertex v 
) const [pure virtual]

Compare the given vertex (which may lie at infinity) and the given point.

Parameters:
pThe point.
vThe vertex.
Returns:
The result of the comparison of the x-coordinates of p and v.

Implemented in Arr_unb_planar_topology_traits_2< GeomTraits_, Dcel_ >, and Arr_bounded_planar_topology_traits_2< GeomTraits_, Dcel_ >.

template<class GeomTraits_, class Dcel_ = Arr_default_dcel<GeomTraits_>>
virtual Comparison_result Arr_planar_topology_traits_base_2< GeomTraits_, Dcel_ >::compare_xy ( const Point_2 p,
const Vertex v 
) const [pure virtual]

Compare the given vertex (which may lie at infinity) and the given point.

Parameters:
pThe point.
vThe vertex.
Returns:
The result of the xy-lexicographic comparison of p and v.

Implemented in Arr_unb_planar_topology_traits_2< GeomTraits_, Dcel_ >, and Arr_bounded_planar_topology_traits_2< GeomTraits_, Dcel_ >.

template<class GeomTraits_, class Dcel_ = Arr_default_dcel<GeomTraits_>>
virtual Comparison_result Arr_planar_topology_traits_base_2< GeomTraits_, Dcel_ >::compare_y_at_x ( const Point_2 p,
const Halfedge he 
) const [pure virtual]

Compare the relative y-position of the given point and the given edge (which may be fictitious).

Parameters:
pThe point.
heThe edge (one of the pair of halfedges).
Precondition:
p should lie in the x-range of the given edge.
Returns:
The relative y-position of the point p and the edge.

Implemented in Arr_unb_planar_topology_traits_2< GeomTraits_, Dcel_ >, and Arr_bounded_planar_topology_traits_2< GeomTraits_, Dcel_ >.

template<class GeomTraits_, class Dcel_ = Arr_default_dcel<GeomTraits_>>
const Dcel& Arr_planar_topology_traits_base_2< GeomTraits_, Dcel_ >::dcel ( ) const [inline]

Get the DCEL (const version).

template<class GeomTraits_, class Dcel_ = Arr_default_dcel<GeomTraits_>>
Dcel& Arr_planar_topology_traits_base_2< GeomTraits_, Dcel_ >::dcel ( ) [inline]

Get the DCEL (non-const version).

template<class GeomTraits_, class Dcel_ = Arr_default_dcel<GeomTraits_>>
std::pair<bool, bool> Arr_planar_topology_traits_base_2< GeomTraits_, Dcel_ >::face_split_after_edge_insertion ( const Halfedge CGAL_precondition_codeprev1,
const Halfedge CGAL_precondition_codeprev2,
const X_monotone_curve_2  
) const [inline]

Given two predecessor halfedges that belong to the same inner CCB of a face, determine what happens when we insert an edge connecting the target vertices of the two edges.

Parameters:
prev1The first predecessor halfedge.
prev2The second predecessor halfedge.
cvThe curve to be inserted
Precondition:
The two halfedges belong to the same inner CCB.
Returns:
A pair indicating whether the insertion will cause the face to split (the first flag), and if so - whether the split face will form a hole in the original face.
template<class GeomTraits_, class Dcel_ = Arr_default_dcel<GeomTraits_>>
bool Arr_planar_topology_traits_base_2< GeomTraits_, Dcel_ >::hole_creation_after_edge_removal ( const Halfedge he) const [inline]

Determine whether the removal of the given edge will cause the creation of a hole.

Parameters:
heThe halfedge to be removed.
Precondition:
Both he and its twin lie on an outer CCB of their incident faces.
Returns:
Whether a new hole will be created.
template<class GeomTraits_, class Dcel_ = Arr_default_dcel<GeomTraits_>>
virtual const Face* Arr_planar_topology_traits_base_2< GeomTraits_, Dcel_ >::initial_face ( ) const [pure virtual]

This function is used by the "walk" point-location strategy.

Implemented in Arr_unb_planar_topology_traits_2< GeomTraits_, Dcel_ >, and Arr_bounded_planar_topology_traits_2< GeomTraits_, Dcel_ >.

template<class GeomTraits , class Dcel_ >
bool Arr_planar_topology_traits_base_2< GeomTraits, Dcel_ >::is_in_face ( const Face f,
const Point_2 p,
const Vertex v 
) const

Determine whether the given point lies in the interior of the given face.

Parameters:
fThe face.
pThe query point.
vThe vertex associated with p (if exists).
fmust not be fictitious, and v must not lie at infinity.
Returns:
Whether p is contained in f's interior.

Here is the call graph for this function:

template<class GeomTraits_, class Dcel_ = Arr_default_dcel<GeomTraits_>>
bool Arr_planar_topology_traits_base_2< GeomTraits_, Dcel_ >::is_on_new_perimetric_face_boundary ( const Halfedge ,
const Halfedge ,
const X_monotone_curve_2  
) const [inline]

Given two predecessor halfedges that will be used for inserting a new halfedge pair (prev1 will be the predecessor of the halfedge he1, and prev2 will be the predecessor of its twin he2), such that the insertion will create a new perimetric face that forms a hole inside an existing perimetric face, determine whether he1 will be incident to this new face.

Parameters:
prev1The first predecessor halfedge.
prev2The second predecessor halfedge.
cvThe x-monotone curve we use to connect prev1's target and prev2's target vertex.
Precondition:
prev1 and prev2 belong to the same inner connected component.
Returns:
true if he1 (and prev1) lies in the interior of the face we are about to create, false otherwise - in which case he2 (and prev2) must be incident to this new face.
template<class GeomTraits_, class Dcel_ = Arr_default_dcel<GeomTraits_>>
void Arr_planar_topology_traits_base_2< GeomTraits_, Dcel_ >::notify_on_boundary_vertex_creation ( Vertex ,
const X_monotone_curve_2 ,
Arr_curve_end  ,
Arr_parameter_space  ,
Arr_parameter_space   
) [inline]

Receive a notification on the creation of a new boundary vertex that corresponds to the given curve end.

Parameters:
vThe new boundary vertex.
cvThe x-monotone curve.
indThe curve end.
ps_xThe boundary condition of the curve end in x.
ps_yThe boundary condition of the curve end in y.
template<class GeomTraits_, class Dcel_ = Arr_default_dcel<GeomTraits_>>
Self& Arr_planar_topology_traits_base_2< GeomTraits_, Dcel_ >::operator= ( const Self ) [protected]

Member Data Documentation

template<class GeomTraits_, class Dcel_ = Arr_default_dcel<GeomTraits_>>
Dcel Arr_planar_topology_traits_base_2< GeomTraits_, Dcel_ >::m_dcel [protected]
template<class GeomTraits_, class Dcel_ = Arr_default_dcel<GeomTraits_>>
bool Arr_planar_topology_traits_base_2< GeomTraits_, Dcel_ >::own_traits [protected]
template<class GeomTraits_, class Dcel_ = Arr_default_dcel<GeomTraits_>>
const Traits_adaptor_2* Arr_planar_topology_traits_base_2< GeomTraits_, Dcel_ >::traits [protected]

The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines