CGAL 6.1 - 2D Arrangements

Loading...
Searching...
No Matches
Modules | Classes | Typedefs
Reference Manual

##

Ron Wein, Eric Berberich, Efi Fogel, Dan Halperin, Michael Hemmer, Oren Salzman, and Baruch Zukerman
This package can be used to construct, maintain, alter, and display arrangements in the plane. Once an arrangement is constructed, the package can be used to obtain results of various queries on the arrangement, such as point location. The package also includes generic implementations of two algorithmic frameworks, that are, computing the zone of an arrangement, and line-sweeping the plane, the arrangements is embedded on. These frameworks are used in turn in the implementations of other operations on arrangements. Computing the overlay of two arrangements, for example, is based on the sweep-line framework. Arrangements and arrangement components can also be extended to store additional data. An important extension stores the construction history of the arrangement, such that it is possible to obtain the originating curve of an arrangement subcurve.
Introduced in: CGAL 2.1
BibTeX: cgal:wfzh-a2-25b
License: GPL
Windows Demo: 2D Arrangements

Given a set \(\mathcal{C}\) of planar curves, the arrangement \( {\mathcal A}({\mathcal C})\) is the subdivision of the plane induced by the curves in \(\mathcal{C}\) into maximally connected cells. The cells can be \(0\)-dimensional (vertices), \(1\)-dimensional (edges) or \(2\)-dimensional (faces).

The class `Arrangement_2<Traits,Dcel>` encapsulates a data structure that maintains arrangements of arbitrary bounded planar curves. It comes with a variety of algorithms that operate on planar arrangement, such as point-location queries and overlay computations, which are implemented as peripheral classes or as free (global) functions.

## Classified Reference Pages

## Enumerations

- `CGAL::Arr_parameter_space`
- `CGAL::Arr_curve_end`
- `CGAL::Arr_halfedge_direction`

## Tags

- `CGAL::Arr_oblivious_side_tag`
- `CGAL::Arr_open_side_tag`
- `CGAL::Arr_closed_side_tag`
- `CGAL::Arr_contracted_side_tag`
- `CGAL::Arr_identified_side_tag`

## Concepts

- `AosApproximateTraits_2`
- `AosApproximatePointTraits_2`
- `AosBasicTopologyTraits`
- `AosBasicTraits_2`
- `AosBottomSideTraits_2`
- `AosClosedBottomTraits_2`
- `AosClosedLeftTraits_2`
- `AosClosedRightTraits_2`
- `AosClosedTopTraits_2`
- `AosConstructCurveTraits_2`
- `AosConstructXMonotoneCurveTraits_2`
- `AosContractedBottomTraits_2`
- `AosContractedLeftTraits_2`
- `AosContractedRightTraits_2`
- `AosContractedTopTraits_2`
- `AosDcel`
- `AosDcelFace`
- `AosDcelHalfedge`
- `AosDcelInnerCcb`
- `AosDcelIsolatedVertex`
- `AosDcelOuterCcb`
- `AosDcelVertex`
- `AosDcelWithRebind`
- `AosHorizontalSideTraits_2`
- `AosIdentifiedHorizontalTraits_2`
- `AosIdentifiedVerticalTraits_2`
- `AosInputFormatter`
- `AosLandmarkTraits_2`
- `AosLeftSideTraits_2`
- `AosOpenBottomTraits_2`
- `AosOpenBoundaryTraits_2`
- `AosOpenLeftTraits_2`
- `AosOpenRightTraits_2`
- `AosOpenTopTraits_2`
- `AosOutputFormatter`
- `AosPointLocation_2`
- `AosRightSideTraits_2`
- `AosSphericalBoundaryTraits_2`
- `AosTopologyTraits`
- `AosTopSideTraits_2`
- `AosTraits_2`
- `AosVerticalRayShoot_2`
- `AosVerticalSideTraits_2`
- `AosWithHistoryInputFormatter`
- `AosWithHistoryOutputFormatter`
- `AosXMonotoneTraits_2`

## Geometric Object Concepts

- `AosTraits::Point_2`
- `AosTraits::XMonotoneCurve_2`
- `AosTraits::Curve_2`

## Function Object Concepts

- `AosTraits::Approximate_2`
- `AosTraits::AreMergeable_2`
- `AosTraits::CompareX_2`
- `AosTraits::CompareXy_2`
- `AosTraits::CompareYAtX_2`
- `AosTraits::CompareYAtXLeft_2`
- `AosTraits::CompareYAtXRight_2`
- `AosTraits::ConstructMinVertex_2`
- `AosTraits::ConstructMaxVertex_2`
- `AosTraits::CompareXOnBoundary_2`
- `AosTraits::CompareYOnBoundary_2`
- `AosTraits::CompareXNearBoundary_2`
- `AosTraits::CompareYNearBoundary_2`
- `AosTraits::CompareXOnBoundaryOfCurveEnd_2`
- `AosTraits::ConstructCurve_2`
- `AosTraits::ConstructXMonotoneCurve_2`
- `AosTraits::Equal_2`
- `AosTraits::Intersect_2`
- `AosTraits::IsVertical_2`
- `AosTraits::IsOnXIdentification_2`
- `AosTraits::IsOnYIdentification_2`
- `AosTraits::MakeXMonotone_2`
- `AosTraits::Merge_2`
- `AosTraits::ParameterSpaceInX_2`
- `AosTraits::ParameterSpaceInY_2`
- `AosTraits::Split_2`

## Classes

- `CGAL::Arrangement_on_surface_2<GeometryTraits_2,TopologyTraits>`
- `CGAL::Arrangement_on_surface_with_history_2<GeometryTraits_2,TopologyTraits>`
- `CGAL::Arrangement_2<Traits,Dcel>`
- `CGAL::Arrangement_with_history_2<Traits,Dcel>`
- `CGAL::Arrangement_2::Vertex`
- `CGAL::Arrangement_2::Halfedge`
- `CGAL::Arrangement_2::Face`
- `CGAL::Arr_accessor<Arrangement>`
- `CGAL::Arr_algebraic_segment_traits_2<Coefficient>`
- `CGAL::Arr_Bezier_curve_traits_2<RatKernel,AlgKernel,NtTraits>`
- `CGAL::Arr_bounded_planar_topology_traits_2<GeometryTraits_2,Dcel>`
- `CGAL::Arr_circle_segment_traits_2<Kernel>`
- `CGAL::Arr_circular_arc_traits_2<CircularKernel>`
- `CGAL::Arr_circular_line_arc_traits_2<CircularKernel>`
- `CGAL::Arr_conic_traits_2<RatKernel,AlgKernel,NtTraits>`
- `CGAL::Arr_consolidated_curve_data_traits_2<Traits,Data>`
- `CGAL::Arr_counting_traits_2<BaseTraits>`
- `CGAL::Arr_curve_data_traits_2<Tr,XData,Mrg,CData,Cnv>`
- `CGAL::Arr_dcel_base<V,H,F>`
- `CGAL::Arr_dcel<Traits,V,H,F>`
- `CGAL::Arr_default_dcel<Traits>`
- `CGAL::Arr_face_extended_dcel<Traits,FData,V,H,F>`
- `CGAL::Arr_face_index_map<Arrangement>`
- `CGAL::Arr_extended_dcel<Traits,VData,HData,FData,V,H,F>`
- `CGAL::Arr_extended_dcel_text_formatter<Arrangement>`
- `CGAL::Arr_face_extended_text_formatter<Arrangement>`
- `CGAL::Arr_geodesic_arc_on_sphere_traits_2<Kernel,x,y>`
- `CGAL::Arr_landmarks_point_location<Arrangement,Generator>`
- `CGAL::Arr_line_arc_traits_2<CircularKernel>`
- `CGAL::Arr_linear_traits_2<Kernel>`
- `CGAL::Arr_naive_point_location<Arrangement>`
- `CGAL::Arr_non_caching_segment_traits_2<Kernel>`
- `CGAL::Arr_observer<Arrangement_2>`
- `CGAL::Arr_polyline_traits_2<SegmentTraits>`
- `CGAL::Arr_point_location_result<Arrangement>`
- `CGAL::Arr_rational_function_traits_2<AlgebraicKernel_d_1>`
- `CGAL::Arr_segment_traits_2<Kernel>`
- `CGAL::Arr_spherical_topology_traits_2<GeometryTraits_2,Dcel>`
- `CGAL::Arr_text_formatter<Arrangement>`
- `CGAL::Arr_tracing_traits_2<BaseTraits>`
- `CGAL::Arr_trapezoid_ric_point_location<Arrangement>`
- `CGAL::Arr_unb_planar_topology_traits_2<GeometryTraits_2,Dcel>`
- `CGAL::Arr_vertex_index_map<Arrangement>`
- `CGAL::Arr_walk_along_line_point_location<Arrangement>`
- `CGAL::Arr_with_history_text_formatter<ArrFormatter>`
- `CGAL::Aos_observer<ArrangementOnSurface_2>`
- `CGAL::CORE_algebraic_number_traits`

## Functions

- `CGAL::is_valid()`
- `CGAL::insert()`
- `CGAL::insert_non_intersecting_curve()`
- `CGAL::insert_non_intersecting_curves()`
- `CGAL::insert_point()`
- `CGAL::remove_edge()`
- `CGAL::remove_vertex()`
- `CGAL::locate()`
- `CGAL::decompose()`
- `CGAL::overlay()`
- `CGAL::IO::read()`
- `CGAL::IO::write()`
- `CGAL::remove_curve()`
- `CGAL::operator<<`
- `CGAL::operator<<`

## Draw an `Arrangemen_2` object

- CGAL::draw<>()

## Modules
| Concepts
| Geometry Traits Classes
| DCEL
| I/O
| Point Location
| Overlay
| Computes the overlay of two arrangements with history `arr1` and `arr2`, and sets the output arrangement with history `res` to represent the overlaid arrangement.
| Free Functions
| Drawing
| `#include<CGAL/draw_arrangement_2.h>`
| Tags
| Macros
| Enumerations

## Classes
class | CGAL::Aos_observer< Arrangement >
| More...
class | CGAL::Arr_accessor< Arrangement >
| More...
class | CGAL::Arr_bounded_planar_topology_traits_2< GeometryTraits_2, Dcel >
| More...
class | CGAL::Arr_face_index_map< Arrangement_ >
| `Arr_face_index_map` maintains a mapping of face handles of an attached arrangement object to indices (of type `unsigned int`). More...
class | CGAL::Arr_spherical_topology_traits_2< GeometryTraits_2, Dcel >
| More...
class | CGAL::Arr_unb_planar_topology_traits_2< GeometryTraits_2, Dcel >
| More...
class | CGAL::Arr_vertex_index_map< Arrangement_ >
| `Arr_vertex_index_map` maintains a mapping of vertex handles of an attached arrangement object to indices (of type `unsigned int`). More...
class | CGAL::Arrangement_2< Traits, Dcel >
| More...
class | CGAL::Arrangement_on_surface_2< GeometryTraits, TopologyTraits >
| More...
class | CGAL::Arrangement_on_surface_with_history_2< GeometryTraits, TopologyTraits >
| More...
class | CGAL::Arrangement_with_history_2< Traits, Dcel >
| More...

## Typedefs
template<typename Arrangement_ >
using | CGAL::Arr_observer = typename Arrangement_::Observer
| `Arr_observer<Arrangement_2>` is an alias for `Aos_observer<Arrangement_on_surface_2>`, where `Arrangement_2` derives from `Arrangement_on_surface_2` and the latter is an instance of the template `CGAL::Arrangement_on_surface_2<GeometryTraits, TopologyTraits>`.