1[/============================================================================ 2 Boost.Geometry (aka GGL, Generic Geometry Library) 3 4 Copyright (c) 2009-2012 Mateusz Loskot, London, UK. 5 Copyright (c) 2009-2012 Barend Gehrels, Amsterdam, the Netherlands. 6 Copyright (c) 2009-2012 Bruno Lalande, Paris, France. 7 8 Use, modification and distribution is subject to the Boost Software License, 9 Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at 10 http://www.boost.org/LICENSE_1_0.txt) 11=============================================================================/] 12 13[section:concept_point Point Concept] 14 15[heading Description] 16[concept Point..point] 17 18A point is ['an entity that has a location in space or on a plane, but has no extent] ([@http://en.wikipedia.org/wiki/Point_(geometry) wiki]). 19The point is the most basic geometry of Boost.Geometry, most other geometries consist of points. 20['(Exceptions are box and segment, which might consist of two points but that is not necessarily the case.)] 21 22[heading Concept Definition] 23 24The Point Concept is defined as following: 25 26* there must be a specialization of `traits::tag`, defining `point_tag` as type 27* there must be a specialization of `traits::coordinate_type`, defining the type of its coordinates 28* there must be a specialization of `traits::coordinate_system`, defining its coordinate system 29 (cartesian, spherical, etc) 30* there must be a specialization of `traits::dimension`, defining its number of dimensions (2, 3, ...) 31 (hint: derive it conveniently from `boost::mpl::int_<X>` for X Dimensional) 32* there must be a specialization of `traits::access`, per dimension, with two functions: 33 * `get` to get a coordinate value 34 * `set` to set a coordinate value (this one is not checked for ConstPoint) 35 36[heading Available Models] 37* [link geometry.reference.models.model_point model::point] 38* [link geometry.reference.models.model_d2_point_xy model::d2::point_xy] 39* a lat long point (currently in an extension) 40* [link geometry.reference.adapted.c_array C array] 41* [link geometry.reference.adapted.std_array C++ array container] 42* [link geometry.reference.adapted.boost_array Boost.Array] 43* [link geometry.reference.adapted.boost_fusion Boost.Fusion] 44* [link geometry.reference.adapted.boost_polygon Boost.Polygon] 45* [link geometry.reference.adapted.boost_tuple Boost.Tuple] 46* other point types, adapted e.g. using one of the [link geometry.reference.adapted registration macro's] 47 48[endsect] 49 50 51