BWAPI
Public Types | Public Member Functions
Arr_accessor< Arrangement_ > Class Template Reference

#include <Arr_accessor.h>

List of all members.

Public Types

typedef Arrangement_ Arrangement_2
typedef Arr_accessor
< Arrangement_2
Self
typedef Arrangement_2::Size Size
typedef Arrangement_2::Point_2 Point_2
typedef
Arrangement_2::X_monotone_curve_2 
X_monotone_curve_2
typedef
Arrangement_2::Vertex_handle 
Vertex_handle
typedef
Arrangement_2::Vertex_const_handle 
Vertex_const_handle
typedef
Arrangement_2::Halfedge_handle 
Halfedge_handle
typedef
Arrangement_2::Halfedge_const_handle 
Halfedge_const_handle
typedef Arrangement_2::Face_handle Face_handle
typedef
Arrangement_2::Face_const_handle 
Face_const_handle
typedef
Arrangement_2::Ccb_halfedge_circulator 
Ccb_halfedge_circulator

Public Member Functions

 Arr_accessor (Arrangement_2 &arr)
Arrangement_2arrangement ()
const Arrangement_2arrangement () const
Accessing the notification functions (for the global functions).
void notify_before_global_change ()
void notify_after_global_change ()
Local operations and predicates for the arrangement.
CGAL::Object locate_curve_end (const X_monotone_curve_2 &cv, Arr_curve_end ind, Arr_parameter_space ps_x, Arr_parameter_space ps_y) const
Halfedge_handle locate_around_vertex (Vertex_handle vh, const X_monotone_curve_2 &cv) const
Halfedge_handle locate_around_boundary_vertex (Vertex_handle vh, const X_monotone_curve_2 &cv, Arr_curve_end ind, Arr_parameter_space ps_x, Arr_parameter_space ps_y) const
int halfedge_distance (Halfedge_const_handle e1, Halfedge_const_handle e2) const
bool is_inside_new_face (Halfedge_handle prev1, Halfedge_handle prev2, const X_monotone_curve_2 &cv) const
bool are_equal (Vertex_const_handle v, const X_monotone_curve_2 &cv, Arr_curve_end ind, Arr_parameter_space ps_x, Arr_parameter_space ps_y) const
bool is_on_outer_boundary (Halfedge_const_handle he) const
bool is_on_inner_boundary (Halfedge_const_handle he) const
Vertex_handle create_vertex (const Point_2 &p)
Vertex_handle create_boundary_vertex (const X_monotone_curve_2 &cv, Arr_curve_end ind, Arr_parameter_space ps_x, Arr_parameter_space ps_y, bool notify=true)
std::pair< Vertex_handle,
Halfedge_handle
place_and_set_curve_end (Face_handle f, const X_monotone_curve_2 &cv, Arr_curve_end ind, Arr_parameter_space ps_x, Arr_parameter_space ps_y)
Halfedge_handle insert_at_vertices_ex (const X_monotone_curve_2 &cv, Halfedge_handle prev1, Halfedge_handle prev2, Comparison_result res, bool &new_face)
Halfedge_handle insert_from_vertex_ex (const X_monotone_curve_2 &cv, Halfedge_handle prev, Vertex_handle v, Comparison_result res)
Halfedge_handle insert_in_face_interior_ex (const X_monotone_curve_2 &cv, Face_handle f, Vertex_handle v1, Vertex_handle v2, Comparison_result res)
void insert_isolated_vertex (Face_handle f, Vertex_handle v)
void relocate_in_new_face (Halfedge_handle new_he)
void relocate_isolated_vertices_in_new_face (Halfedge_handle new_he)
void relocate_holes_in_new_face (Halfedge_handle new_he)
void move_outer_ccb (Face_handle from_face, Face_handle to_face, Ccb_halfedge_circulator ccb)
void move_inner_ccb (Face_handle from_face, Face_handle to_face, Ccb_halfedge_circulator ccb)
void move_isolated_vertex (Face_handle from_face, Face_handle to_face, Vertex_handle v)
void remove_isolated_vertex_ex (Vertex_handle v)
Vertex_handle modify_vertex_ex (Vertex_handle v, const Point_2 &p)
Halfedge_handle modify_edge_ex (Halfedge_handle e, const X_monotone_curve_2 &cv)
Halfedge_handle split_edge_ex (Halfedge_handle e, const Point_2 &p, const X_monotone_curve_2 &cv1, const X_monotone_curve_2 &cv2)
Halfedge_handle split_edge_ex (Halfedge_handle e, Vertex_handle v, const X_monotone_curve_2 &cv1, const X_monotone_curve_2 &cv2)
Halfedge_handle split_fictitious_edge (Halfedge_handle e, Vertex_handle v)
Face_handle remove_edge_ex (Halfedge_handle e, bool remove_source=true, bool remove_target=true)
bool are_on_same_inner_component (Halfedge_handle e1, Halfedge_handle e2)
bool are_on_same_outer_component (Halfedge_handle e1, Halfedge_handle e2)

Traversal methods for the BOOST graph traits.

typedef
Arrangement_2::_Is_valid_vertex 
Is_valid_vertex
typedef
Arrangement_2::_Valid_vertex_iterator 
Valid_vertex_iterator
Valid_vertex_iterator valid_vertices_begin ()
Valid_vertex_iterator valid_vertices_end ()
Size number_of_valid_vertices () const

Functions used by the arrangement reader and writer.

typedef Arrangement_2::Dcel Dcel
typedef
Arrangement_2::DVertex_const_iter 
Dcel_vertex_iterator
typedef
Arrangement_2::DEdge_const_iter 
Dcel_edge_iterator
typedef
Arrangement_2::DFace_const_iter 
Dcel_face_iterator
typedef
Arrangement_2::DOuter_ccb_const_iter 
Dcel_outer_ccb_iterator
typedef
Arrangement_2::DInner_ccb_const_iter 
Dcel_inner_ccb_iterator
typedef
Arrangement_2::DIso_vertex_const_iter 
Dcel_iso_vertex_iterator
typedef DVertex Dcel_vertex
typedef DHalfedge Dcel_halfedge
typedef DFace Dcel_face
typedef DOuter_ccb Dcel_outer_ccb
typedef DInner_ccb Dcel_inner_ccb
typedef DIso_vertex Dcel_isolated_vertex
const Dceldcel () const
void clear_all ()
Dcel_vertexset_vertex_boundary (const Vertex_handle v, Arr_parameter_space ps_x, Arr_parameter_space ps_y)
Dcel_vertexnew_vertex (const Point_2 *p, Arr_parameter_space ps_x, Arr_parameter_space ps_y)
Dcel_halfedgenew_edge (const X_monotone_curve_2 *cv)
Dcel_facenew_face ()
Dcel_outer_ccbnew_outer_ccb ()
Dcel_inner_ccbnew_inner_ccb ()
Dcel_isolated_vertexnew_isolated_vertex ()
void dcel_updated ()

template<class Arrangement_>
class Arr_accessor< Arrangement_ >


Member Typedef Documentation

template<class Arrangement_>
typedef Arrangement_ Arr_accessor< Arrangement_ >::Arrangement_2
template<class Arrangement_>
typedef Arrangement_2::Ccb_halfedge_circulator Arr_accessor< Arrangement_ >::Ccb_halfedge_circulator
template<class Arrangement_>
typedef Arrangement_2::Dcel Arr_accessor< Arrangement_ >::Dcel
template<class Arrangement_>
typedef Arrangement_2::DEdge_const_iter Arr_accessor< Arrangement_ >::Dcel_edge_iterator
template<class Arrangement_>
typedef DFace Arr_accessor< Arrangement_ >::Dcel_face
template<class Arrangement_>
typedef Arrangement_2::DFace_const_iter Arr_accessor< Arrangement_ >::Dcel_face_iterator
template<class Arrangement_>
typedef DHalfedge Arr_accessor< Arrangement_ >::Dcel_halfedge
template<class Arrangement_>
typedef DInner_ccb Arr_accessor< Arrangement_ >::Dcel_inner_ccb
template<class Arrangement_>
typedef Arrangement_2::DInner_ccb_const_iter Arr_accessor< Arrangement_ >::Dcel_inner_ccb_iterator
template<class Arrangement_>
typedef Arrangement_2::DIso_vertex_const_iter Arr_accessor< Arrangement_ >::Dcel_iso_vertex_iterator
template<class Arrangement_>
typedef DIso_vertex Arr_accessor< Arrangement_ >::Dcel_isolated_vertex
template<class Arrangement_>
typedef DOuter_ccb Arr_accessor< Arrangement_ >::Dcel_outer_ccb
template<class Arrangement_>
typedef Arrangement_2::DOuter_ccb_const_iter Arr_accessor< Arrangement_ >::Dcel_outer_ccb_iterator
template<class Arrangement_>
typedef DVertex Arr_accessor< Arrangement_ >::Dcel_vertex
template<class Arrangement_>
typedef Arrangement_2::DVertex_const_iter Arr_accessor< Arrangement_ >::Dcel_vertex_iterator
template<class Arrangement_>
typedef Arrangement_2::Face_const_handle Arr_accessor< Arrangement_ >::Face_const_handle
template<class Arrangement_>
typedef Arrangement_2::Face_handle Arr_accessor< Arrangement_ >::Face_handle
template<class Arrangement_>
typedef Arrangement_2::Halfedge_const_handle Arr_accessor< Arrangement_ >::Halfedge_const_handle
template<class Arrangement_>
typedef Arrangement_2::Halfedge_handle Arr_accessor< Arrangement_ >::Halfedge_handle
template<class Arrangement_>
typedef Arrangement_2::_Is_valid_vertex Arr_accessor< Arrangement_ >::Is_valid_vertex
template<class Arrangement_>
typedef Arrangement_2::Point_2 Arr_accessor< Arrangement_ >::Point_2
template<class Arrangement_>
typedef Arr_accessor<Arrangement_2> Arr_accessor< Arrangement_ >::Self
template<class Arrangement_>
typedef Arrangement_2::Size Arr_accessor< Arrangement_ >::Size
template<class Arrangement_>
typedef Arrangement_2::_Valid_vertex_iterator Arr_accessor< Arrangement_ >::Valid_vertex_iterator
template<class Arrangement_>
typedef Arrangement_2::Vertex_const_handle Arr_accessor< Arrangement_ >::Vertex_const_handle
template<class Arrangement_>
typedef Arrangement_2::Vertex_handle Arr_accessor< Arrangement_ >::Vertex_handle
template<class Arrangement_>
typedef Arrangement_2::X_monotone_curve_2 Arr_accessor< Arrangement_ >::X_monotone_curve_2

Constructor & Destructor Documentation

template<class Arrangement_>
Arr_accessor< Arrangement_ >::Arr_accessor ( Arrangement_2 arr) [inline]

Constructor with an associated arrangement.


Member Function Documentation

template<class Arrangement_>
bool Arr_accessor< Arrangement_ >::are_equal ( Vertex_const_handle  v,
const X_monotone_curve_2 cv,
Arr_curve_end  ind,
Arr_parameter_space  ps_x,
Arr_parameter_space  ps_y 
) const [inline]

Check if the given vertex represents one of the ends of a given curve.

Parameters:
vThe vertex.
cvThe curve.
indARR_MIN_END if we refer to cv's minimal end; ARR_MAX_END if we refer to its maximal end.
ps_xThe boundary condition of the curve end in x.
ps_yThe boundary condition of the curve end in y.
Returns:
Whether v represents the left (or right) end of cv.
template<class Arrangement_>
bool Arr_accessor< Arrangement_ >::are_on_same_inner_component ( Halfedge_handle  e1,
Halfedge_handle  e2 
) [inline]

Check if the two given halfedges lie on the same inner component.

Parameters:
e1A handle for the first halfedge.
e2A handle for the second halfedge.
Returns:
Whether e1 and e2 lie on the same inner component.
template<class Arrangement_>
bool Arr_accessor< Arrangement_ >::are_on_same_outer_component ( Halfedge_handle  e1,
Halfedge_handle  e2 
) [inline]

Check if the two given halfedges lie on the same outer component.

Parameters:
e1A handle for the first halfedge.
e2A handle for the second halfedge.
Returns:
Whether e1 and e2 lie on the same outer component.
template<class Arrangement_>
Arrangement_2& Arr_accessor< Arrangement_ >::arrangement ( ) [inline]
template<class Arrangement_>
const Arrangement_2& Arr_accessor< Arrangement_ >::arrangement ( ) const [inline]
template<class Arrangement_>
void Arr_accessor< Arrangement_ >::clear_all ( ) [inline]

Clear the entire arrangment.

template<class Arrangement_>
Vertex_handle Arr_accessor< Arrangement_ >::create_boundary_vertex ( const X_monotone_curve_2 cv,
Arr_curve_end  ind,
Arr_parameter_space  ps_x,
Arr_parameter_space  ps_y,
bool  notify = true 
) [inline]

Create a new boundary vertex.

Parameters:
cvThe curve incident to the boundary.
indThe relevant curve-end.
ps_xThe boundary condition in x.
byThe boundary condition in y.
notifyShould we send a notification to the topology traits on the creation of the vertex (true by default).
Precondition:
Either ps_x or by does not equal ARR_INTERIOR.
Returns:
A handle for the newly created vertex.

Here is the caller graph for this function:

template<class Arrangement_>
Vertex_handle Arr_accessor< Arrangement_ >::create_vertex ( const Point_2 p) [inline]

Create a new vertex and associate it with the given point.

Parameters:
pThe point.
Returns:
A handle for the newly created vertex.

Here is the caller graph for this function:

template<class Arrangement_>
const Dcel& Arr_accessor< Arrangement_ >::dcel ( ) const [inline]

Get the arrangement DCEL.

template<class Arrangement_>
void Arr_accessor< Arrangement_ >::dcel_updated ( ) [inline]

Update the topology traits after the DCEL has been updated.

template<class Arrangement_>
int Arr_accessor< Arrangement_ >::halfedge_distance ( Halfedge_const_handle  e1,
Halfedge_const_handle  e2 
) const [inline]

Compute the distance (in halfedges) between two halfedges.

Parameters:
e1A handle for the source halfedge.
e2A handle for the destination halfedge.
Returns:
In case e1 and e2 belong to the same connected component, the function returns number of boundary halfedges between the two halfedges. Otherwise, it returns (-1).
template<class Arrangement_>
Halfedge_handle Arr_accessor< Arrangement_ >::insert_at_vertices_ex ( const X_monotone_curve_2 cv,
Halfedge_handle  prev1,
Halfedge_handle  prev2,
Comparison_result  res,
bool &  new_face 
) [inline]

Insert an x-monotone curve into the arrangement, where the end vertices are given by the target points of two given halfedges. The two halfedges should be given such that in case a new face is formed, it will be the incident face of the halfedge directed from the first vertex to the second vertex.

Parameters:
cvthe given curve.
prev1The reference halfedge for the first vertex.
prev2The reference halfedge for the second vertex.
resThe comparsion result between the points associated with the target vertex of prev and the target vertex of prev2.
new_faceOutput - whether a new face has been created.
Returns:
A handle for one of the halfedges corresponding to the inserted curve directed from prev1's target to prev2's target. In case a new face has been created, it is given as the incident face of this halfedge.

Here is the caller graph for this function:

template<class Arrangement_>
Halfedge_handle Arr_accessor< Arrangement_ >::insert_from_vertex_ex ( const X_monotone_curve_2 cv,
Halfedge_handle  prev,
Vertex_handle  v,
Comparison_result  res 
) [inline]

Insert an x-monotone curve into the arrangement, such that one of its endpoints corresponds to a given arrangement vertex, given the exact place for the curve in the circular list around this vertex. The other endpoint corrsponds to a free vertex (a newly created vertex or an isolated vertex).

Parameters:
cvThe given x-monotone curve.
prevThe reference halfedge. We should represent cv as a pair of edges, one of them should become prev's successor.
vThe free vertex that corresponds to the other endpoint.
resThe comparsion result between the points associated with the target vertex of prev and the vertex v.
Returns:
A handle to one of the halfedges corresponding to the inserted curve, whose target is the vertex v.

Here is the caller graph for this function:

template<class Arrangement_>
Halfedge_handle Arr_accessor< Arrangement_ >::insert_in_face_interior_ex ( const X_monotone_curve_2 cv,
Face_handle  f,
Vertex_handle  v1,
Vertex_handle  v2,
Comparison_result  res 
) [inline]

Insert an x-monotone curve into the arrangement, such that both its endpoints correspond to free arrangement vertices (newly created vertices or existing isolated vertices), so a new hole is formed in the face that contains the two vertices.

Parameters:
cvThe given x-monotone curve.
fThe face containing the two end vertices.
v1The free vertex that corresponds to the left endpoint of cv.
v2The free vertex that corresponds to the right endpoint of cv.
resThe comparsion result between the points associated with the vertices v1 and v2.
Returns:
A handle to one of the halfedges corresponding to the inserted curve, directed from v1 to v2.

Here is the caller graph for this function:

template<class Arrangement_>
void Arr_accessor< Arrangement_ >::insert_isolated_vertex ( Face_handle  f,
Vertex_handle  v 
) [inline]

Insert the given vertex as an isolated vertex inside the given face.

Parameters:
fThe face that should contain the isolated vertex.
vThe isolated vertex.

Here is the caller graph for this function:

template<class Arrangement_>
bool Arr_accessor< Arrangement_ >::is_inside_new_face ( Halfedge_handle  prev1,
Halfedge_handle  prev2,
const X_monotone_curve_2 cv 
) const [inline]

Determine whether a given query halfedge lies in the interior of a new face we are about to create, by connecting it with another halfedge using a given x-monotone curve.

Parameters:
prev1A handle for the query halfedge.
prev2The other halfedge we are about to connect with prev1.
cvThe x-monotone curve we use to connect prev1 and prev2.
Precondition:
prev1 and prev2 belong to the same connected component, and by connecting them using cv we form a new face.
Returns:
(true) if prev1 lies in the interior of the face we are about to create, (false) otherwise - in which case prev2 must lie inside this new face.
template<class Arrangement_>
bool Arr_accessor< Arrangement_ >::is_on_inner_boundary ( Halfedge_const_handle  he) const [inline]

Check whether the given halfedge lies on the inner boundary of its incident face.

Parameters:
heThe given halfedge.
Returns:
(true) in case he lies on a hole inside its incident face; (false) if he lies on the outer boundary of this face.
template<class Arrangement_>
bool Arr_accessor< Arrangement_ >::is_on_outer_boundary ( Halfedge_const_handle  he) const [inline]

Check whether the given halfedge lies on the outer boundary of its incident face.

Parameters:
heThe given halfedge.
Returns:
(true) in case he lies on the outer boundary of its incident face; (false) if he lies on a hole inside this face.
template<class Arrangement_>
Halfedge_handle Arr_accessor< Arrangement_ >::locate_around_boundary_vertex ( Vertex_handle  vh,
const X_monotone_curve_2 cv,
Arr_curve_end  ind,
Arr_parameter_space  ps_x,
Arr_parameter_space  ps_y 
) const [inline]

Locate the place for the given curve-end around the given vertex, which lies on the boundary.

Parameters:
vhA handle for the arrangement vertex.
cvThe curve.
indARR_MIN_END if we refer to cv's minimal end; ARR_MAX_END if we refer to its maximal end.
ps_xThe boundary condition in x.
ps_yThe boundary condition in y.
Precondition:
The relevant end of cv has boundary conditions in x or in y.
Returns:
A handle for a halfedge whose target is v, where cv should be inserted between this halfedge and the next halfedge around this vertex (in a clockwise order).

Here is the caller graph for this function:

template<class Arrangement_>
Halfedge_handle Arr_accessor< Arrangement_ >::locate_around_vertex ( Vertex_handle  vh,
const X_monotone_curve_2 cv 
) const [inline]

Locate the place for the given curve around the given vertex.

Parameters:
vhA handle for the arrangement vertex.
cvThe given x-monotone curve.
Precondition:
v is one of cv's endpoints.
Returns:
A handle for a halfedge whose target is v, where cv should be inserted between this halfedge and the next halfedge around this vertex (in a clockwise order).

Here is the caller graph for this function:

template<class Arrangement_>
CGAL::Object Arr_accessor< Arrangement_ >::locate_curve_end ( const X_monotone_curve_2 cv,
Arr_curve_end  ind,
Arr_parameter_space  ps_x,
Arr_parameter_space  ps_y 
) const [inline]

Locate the arrangement feature that contains the given curve-end.

Parameters:
cvThe curve.
indARR_MIN_END if we refer to cv's minimal end; ARR_MAX_END if we refer to its maximal end.
ps_xThe boundary condition in x.
ps_yThe boundary condition in y.
Precondition:
The relevant end of cv has boundary conditions in x or in y.
Returns:
An object that contains the curve end. This object may wrap a Face_const_handle (the general case), or a Halfedge_const_handle (in case of an overlap).

Here is the caller graph for this function:

template<class Arrangement_>
Halfedge_handle Arr_accessor< Arrangement_ >::modify_edge_ex ( Halfedge_handle  e,
const X_monotone_curve_2 cv 
) [inline]

Modify the x-monotone curve associated with a given edge. The curve may be geometrically different than the one currently associated with the edge.

Parameters:
eThe edge to modify.
cvThe new x-monotone curve to associate with e.
Returns:
A handle for the modified edge (same as e).

Here is the caller graph for this function:

template<class Arrangement_>
Vertex_handle Arr_accessor< Arrangement_ >::modify_vertex_ex ( Vertex_handle  v,
const Point_2 p 
) [inline]

Modify the point associated with a given vertex. The point may be geometrically different than the one currently associated with the vertex.

Parameters:
vThe vertex to modify.
pThe new point to associate with v.
Returns:
A handle for the modified vertex (same as v).

Here is the caller graph for this function:

template<class Arrangement_>
void Arr_accessor< Arrangement_ >::move_inner_ccb ( Face_handle  from_face,
Face_handle  to_face,
Ccb_halfedge_circulator  ccb 
) [inline]

Move an inner CCB from one face to another.

Parameters:
from_faceThe source face.
to_faceThe destination face.
ccbA CCB circulator that corresponds to component to move.

Here is the caller graph for this function:

template<class Arrangement_>
void Arr_accessor< Arrangement_ >::move_isolated_vertex ( Face_handle  from_face,
Face_handle  to_face,
Vertex_handle  v 
) [inline]

Move an isolated vertex from one face to another.

Parameters:
from_faceThe source face.
to_faceThe destination face.
vThe isolated vertex to move.

Here is the caller graph for this function:

template<class Arrangement_>
void Arr_accessor< Arrangement_ >::move_outer_ccb ( Face_handle  from_face,
Face_handle  to_face,
Ccb_halfedge_circulator  ccb 
) [inline]

Move an outer CCB from one face to another.

Parameters:
from_faceThe source face.
to_faceThe destination face.
ccbA CCB circulator that corresponds to component to move.
template<class Arrangement_>
Dcel_halfedge* Arr_accessor< Arrangement_ >::new_edge ( const X_monotone_curve_2 cv) [inline]

Create a new edge (halfedge pair), associated with the given curve.

Parameters:
cvA pointer to the x-monotone curve (may be NULL in case of a fictitious edge).
Returns:
A pointer to one of the created DCEL halfedge.
template<class Arrangement_>
Dcel_face* Arr_accessor< Arrangement_ >::new_face ( ) [inline]

Create a new face.

Returns:
A pointer to the created DCEL face.

Here is the caller graph for this function:

template<class Arrangement_>
Dcel_inner_ccb* Arr_accessor< Arrangement_ >::new_inner_ccb ( ) [inline]

Create a new inner CCB.

Returns:
A pointer to the created DCEL inner CCB.
template<class Arrangement_>
Dcel_isolated_vertex* Arr_accessor< Arrangement_ >::new_isolated_vertex ( ) [inline]

Create a new isolated vertex.

Returns:
A pointer to the created DCEL isolated vertex.
template<class Arrangement_>
Dcel_outer_ccb* Arr_accessor< Arrangement_ >::new_outer_ccb ( ) [inline]

Create a new outer CCB.

Returns:
A pointer to the created DCEL outer CCB.
template<class Arrangement_>
Dcel_vertex* Arr_accessor< Arrangement_ >::new_vertex ( const Point_2 p,
Arr_parameter_space  ps_x,
Arr_parameter_space  ps_y 
) [inline]

Create a new vertex.

Parameters:
pA pointer to the point (may be NULL in case of a vertex at infinity).
ps_xThe boundary condition at x.
ps_yThe boundary condition at y.
Returns:
A pointer to the created DCEL vertex.
template<class Arrangement_>
void Arr_accessor< Arrangement_ >::notify_after_global_change ( ) [inline]

Notify that a global operation was completed.

Here is the caller graph for this function:

template<class Arrangement_>
void Arr_accessor< Arrangement_ >::notify_before_global_change ( ) [inline]

Notify that a global operation is about to take place.

Here is the caller graph for this function:

template<class Arrangement_>
Size Arr_accessor< Arrangement_ >::number_of_valid_vertices ( ) const [inline]

Get the number of valid arrangement vertices.

Here is the caller graph for this function:

template<class Arrangement_>
std::pair<Vertex_handle, Halfedge_handle> Arr_accessor< Arrangement_ >::place_and_set_curve_end ( Face_handle  f,
const X_monotone_curve_2 cv,
Arr_curve_end  ind,
Arr_parameter_space  ps_x,
Arr_parameter_space  ps_y 
) [inline]

Locate the arrangement features that will be used for inserting the given curve end, which has a boundary condition, and set a proper vertex there.

Parameters:
fThe face that contains the curve end.
cvThe x-monotone curve.
indThe curve end.
ps_xThe boundary condition at the x-coordinate.
ps_yThe boundary condition at the y-coordinate.
Returns:
A pair of <Vertex_handle, Halfedge_handle>: The first element is the vertex that corresponds to the curve end. The second is its predecessor halfedge (if valid).

Here is the caller graph for this function:

template<class Arrangement_>
void Arr_accessor< Arrangement_ >::relocate_holes_in_new_face ( Halfedge_handle  new_he) [inline]
template<class Arrangement_>
void Arr_accessor< Arrangement_ >::relocate_in_new_face ( Halfedge_handle  new_he) [inline]

Relocate all holes and isolated vertices to their proper position, immediately after a face has split due to the insertion of a new halfedge. In case insert_at_vertices_ex() was invoked and indicated that a new face has been created, this function should be called with the halfedge returned by insert_at_vertices_ex().

Parameters:
new_heThe new halfedge that caused the split, such that the new face lies to its left and the old face to its right.
template<class Arrangement_>
void Arr_accessor< Arrangement_ >::relocate_isolated_vertices_in_new_face ( Halfedge_handle  new_he) [inline]
template<class Arrangement_>
Face_handle Arr_accessor< Arrangement_ >::remove_edge_ex ( Halfedge_handle  e,
bool  remove_source = true,
bool  remove_target = true 
) [inline]

Remove a pair of twin halfedges from the arrangement.

Parameters:
eA handle for one of the halfedges to be removed.
remove_sourceShould the source vertex of e be removed if it becomes isolated (true by default).
remove_targetShould the target vertex of e be removed if it becomes isolated (true by default).
Precondition:
In case the removal causes the creation of a new hole, e should point at this hole.
Returns:
A handle for the remaining face.
template<class Arrangement_>
void Arr_accessor< Arrangement_ >::remove_isolated_vertex_ex ( Vertex_handle  v) [inline]

Remove an isolated vertex from its face.

Parameters:
vThe isolated vertex to remove.

Here is the caller graph for this function:

template<class Arrangement_>
Dcel_vertex* Arr_accessor< Arrangement_ >::set_vertex_boundary ( const Vertex_handle  v,
Arr_parameter_space  ps_x,
Arr_parameter_space  ps_y 
) [inline]

Set the boundary of a vertex

Parameters:
pA vertex
ps_xThe boundary condition at x.
ps_yThe boundary condition at y.
Returns:
A pointer to the created DCEL vertex.

Here is the caller graph for this function:

template<class Arrangement_>
Halfedge_handle Arr_accessor< Arrangement_ >::split_edge_ex ( Halfedge_handle  e,
const Point_2 p,
const X_monotone_curve_2 cv1,
const X_monotone_curve_2 cv2 
) [inline]

Split a given edge into two at a given point, and associate the given x-monotone curves with the split edges.

Parameters:
eThe edge to split (one of the pair of twin halfegdes).
pThe split point.
cv1The curve that should be associated with the first split edge, whose source equals e's source and its target is p.
cv2The curve that should be associated with the second split edge, whose source is p and its target equals e's target.
Returns:
A handle for the first split halfedge, whose source equals the source of e, and whose target is the split point.

Here is the caller graph for this function:

template<class Arrangement_>
Halfedge_handle Arr_accessor< Arrangement_ >::split_edge_ex ( Halfedge_handle  e,
Vertex_handle  v,
const X_monotone_curve_2 cv1,
const X_monotone_curve_2 cv2 
) [inline]

Split a given edge into two at the given vertex, and associate the given x-monotone curves with the split edges.

Parameters:
eThe edge to split (one of the pair of twin halfegdes).
vThe split vertex.
cv1The curve that should be associated with the first split edge, whose source equals e's source and its target is v's point.
cv2The curve that should be associated with the second split edge, whose source is v's point and its target equals e's target.
Returns:
A handle for the first split halfedge, whose source equals the source of e, and whose target is the split vertex v.
template<class Arrangement_>
Halfedge_handle Arr_accessor< Arrangement_ >::split_fictitious_edge ( Halfedge_handle  e,
Vertex_handle  v 
) [inline]

Split a fictitious edge at the given vertex.

Parameters:
eThe edge to split (one of the pair of twin halfegdes).
vThe split vertex.
Returns:
A handle for the first split halfedge, whose source equals the source of e, and whose target is the split vertex v.

Here is the caller graph for this function:

template<class Arrangement_>
Valid_vertex_iterator Arr_accessor< Arrangement_ >::valid_vertices_begin ( ) [inline]

Get an iterator for the first valid arrangement vertex.

template<class Arrangement_>
Valid_vertex_iterator Arr_accessor< Arrangement_ >::valid_vertices_end ( ) [inline]

Get a past-the-end iterator for the valid arrangement vertices.


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