Point ===== .. contents:: :local: :depth: 2 Overview -------- A point defines the location of a pixel inside an image. It can also be used to describe the dimensions of an image. In most general terms, points are N-dimensional and model the following concept: .. code-block:: cpp concept PointNDConcept : Regular { // the type of a coordinate along each axis template struct axis; where Metafunction; const size_t num_dimensions; // accessor/modifier of the value of each axis. template const typename axis::type& T::axis_value() const; template typename axis::type& T::axis_value(); }; GIL uses a two-dimensional point, which is a refinement of ``PointNDConcept`` in which both dimensions are of the same type: .. code-block:: cpp concept Point2DConcept : PointNDConcept { where num_dimensions == 2; where SameType::type, axis<1>::type>; typename value_type = axis<0>::type; const value_type& operator[](const T&, size_t i); value_type& operator[]( T&, size_t i); value_type x,y; }; .. seealso:: - `PointNDConcept `_ - `Point2DConcept `_ Models ------ GIL provides a model of ``Point2DConcept``, ``point`` where ``T`` is the coordinate type.