...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
The Point Concept describes the requirements for a point type. All algorithms in Boost.Geometry will check any geometry arguments against the concept requirements.
A point is an entity that has a location in space or on a plane, but has no extent (wiki). The point is the most basic geometry of Boost.Geometry, most other geometries consist of points. (Exceptions are box and segment, which might consist of two points but that is not necessarily the case.)
The Point Concept is defined as following:
traits::tag
,
defining point_tag
as type
traits::coordinate_type
,
defining the type of its coordinates
traits::coordinate_system
,
defining its coordinate system (cartesian, spherical, etc)
traits::dimension
,
defining its number of dimensions (2, 3, ...) (hint: derive it conveniently
from boost::mpl::int_<X>
for X Dimensional)
traits::access
,
per dimension, with two functions:
get
to get a
coordinate value
set
to set a
coordinate value (this one is not checked for ConstPoint)