11 A point defines the location of a pixel inside an image. It can also be used
12 to describe the dimensions of an image. In most general terms, points are
13 N-dimensional and model the following concept:
17 concept PointNDConcept<typename T> : Regular<T>
19 // the type of a coordinate along each axis
20 template <size_t K> struct axis; where Metafunction<axis>;
22 const size_t num_dimensions;
24 // accessor/modifier of the value of each axis.
25 template <size_t K> const typename axis<K>::type& T::axis_value() const;
26 template <size_t K> typename axis<K>::type& T::axis_value();
29 GIL uses a two-dimensional point, which is a refinement of ``PointNDConcept``
30 in which both dimensions are of the same type:
34 concept Point2DConcept<typename T> : PointNDConcept<T>
36 where num_dimensions == 2;
37 where SameType<axis<0>::type, axis<1>::type>;
39 typename value_type = axis<0>::type;
41 const value_type& operator[](const T&, size_t i);
42 value_type& operator[]( T&, size_t i);
49 - `PointNDConcept <reference/structboost_1_1gil_1_1_point_n_d_concept.html>`_
50 - `Point2DConcept <reference/structboost_1_1gil_1_1_point2_d_concept.html>`_
55 GIL provides a model of ``Point2DConcept``, ``point<T>`` where ``T`` is the