blob: 2f1ec9ed7a084cd3589838c7b128db7cc0a976ce [file] [log] [blame]
[/============================================================================
Boost.Geometry (aka GGL, Generic Geometry Library)
Copyright (c) 2009-2012 Mateusz Loskot, London, UK.
Copyright (c) 2009-2012 Barend Gehrels, Amsterdam, the Netherlands.
Copyright (c) 2009-2012 Bruno Lalande, Paris, France.
Use, modification and distribution is subject to the Boost Software License,
Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt)
=============================================================================/]
[section:concept_box Box Concept]
[heading Description]
[concept Box..box]
A box is a geometry with (usually) two or three dimensions, having its axis aligned to the coordinate system.
The box is not one of the basic types in Boost.Geometry (point, linestring, polygon) but it is a ['helper type].
The main reasons for the box existance are its usefulness for indexing (a spatial index, or splitting a geometry
into monotonic sections) and it is the output of the [link geometry.reference.algorithms.envelope envelope] algorithm.
Therefore, a box is axis aligned (the envelope is also called aabb, axis aligned bounding box).
[heading Concept Definition]
The Box Concept is defined as following:
* there must be a specialization of `traits::tag`, defining `box_tag` as type
* there must be a specialization of `traits::point_type` to define the underlying point type
(even if it does not consist of points, it should define this type, to indicate the points it can work with)
* there must be a specialization of `traits::indexed_access`, per index (`min_corner`, `max_corner`) and per dimension, with two functions:
* `get` to get a coordinate value
* `set` to set a coordinate value (this one is not checked for ConstBox)
[heading Available Models]
* [link geometry.reference.models.model_box model::box]
[endsect]