$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r70711 - in trunk/libs/geometry/doc: . doxy generated html/img/algorithms reference/algorithms src/examples/algorithms
From: barend.gehrels_at_[hidden]
Date: 2011-03-29 17:22:01
Author: barendgehrels
Date: 2011-03-29 17:21:58 EDT (Tue, 29 Mar 2011)
New Revision: 70711
URL: http://svn.boost.org/trac/boost/changeset/70711
Log:
Documented area,centroid,within
Renamed combine to expand
Added:
   trunk/libs/geometry/doc/generated/within_status.qbk   (contents, props changed)
   trunk/libs/geometry/doc/html/img/algorithms/centroid.png   (contents, props changed)
   trunk/libs/geometry/doc/html/img/algorithms/envelope.png   (contents, props changed)
   trunk/libs/geometry/doc/html/img/algorithms/make_envelope.png   (contents, props changed)
   trunk/libs/geometry/doc/html/img/algorithms/within.png   (contents, props changed)
   trunk/libs/geometry/doc/reference/algorithms/centroid_strategies.qbk   (contents, props changed)
   trunk/libs/geometry/doc/reference/algorithms/within.qbk   (contents, props changed)
   trunk/libs/geometry/doc/src/examples/algorithms/centroid.cpp   (contents, props changed)
   trunk/libs/geometry/doc/src/examples/algorithms/distance.cpp   (contents, props changed)
   trunk/libs/geometry/doc/src/examples/algorithms/within.cpp   (contents, props changed)
Text files modified: 
   trunk/libs/geometry/doc/doxy/Doxyfile                              |     1 -                                       
   trunk/libs/geometry/doc/generated/area_status.qbk                  |    18 +++++++++---------                      
   trunk/libs/geometry/doc/imports.qbk                                |     3 +++                                     
   trunk/libs/geometry/doc/make_qbk.py                                |     4 ++--                                    
   trunk/libs/geometry/doc/quickref.xml                               |     8 ++++----                                
   trunk/libs/geometry/doc/reference.qbk                              |     8 ++++----                                
   trunk/libs/geometry/doc/reference/algorithms/centroid.qbk          |    20 ++++++++++++++++++--                    
   trunk/libs/geometry/doc/src/examples/algorithms/create_svg_two.hpp |     9 ++++++++-                               
   8 files changed, 48 insertions(+), 23 deletions(-)
Modified: trunk/libs/geometry/doc/doxy/Doxyfile
==============================================================================
--- trunk/libs/geometry/doc/doxy/Doxyfile	(original)
+++ trunk/libs/geometry/doc/doxy/Doxyfile	2011-03-29 17:21:58 EDT (Tue, 29 Mar 2011)
@@ -178,7 +178,6 @@
                         ../../../../boost/geometry/algorithms/detail/sections \
                         ../../../../boost/geometry/arithmetic \
                         ../../../../boost/geometry/geometries/concepts \
-			../../../../boost/geometry/geometries/concepts/detail \
                         ../../../../boost/geometry/geometries \
                         ../../../../boost/geometry/geometries/adapted \
                         ../../../../boost/geometry/geometries/register \
Modified: trunk/libs/geometry/doc/generated/area_status.qbk
==============================================================================
--- trunk/libs/geometry/doc/generated/area_status.qbk	(original)
+++ trunk/libs/geometry/doc/generated/area_status.qbk	2011-03-29 17:21:58 EDT (Tue, 29 Mar 2011)
@@ -1,13 +1,13 @@
 [heading Supported geometries]
 [table
 [[Geometry][Status]]
-[[Point][ [$img/ok.png ] ]]
-[[Segment][ [$img/ok.png ] ]]
-[[Box][ [$img/ok.png ] ]]
-[[Linestring][ [$img/ok.png ] ]]
-[[Ring][ [$img/ok.png ] ]]
-[[Polygon][ [$img/ok.png ] ]]
-[[MultiPoint][ [$img/ok.png ] ]]
-[[MultiLinestring][ [$img/ok.png ] ]]
-[[MultiPolygon][ [$img/ok.png ] ]]
+[[Point][[$img/ok.png]]]
+[[Segment][[$img/ok.png]]]
+[[Box][[$img/ok.png]]]
+[[Linestring][[$img/ok.png]]]
+[[Ring][[$img/ok.png]]]
+[[Polygon][[$img/ok.png]]]
+[[MultiPoint][[$img/ok.png]]]
+[[MultiLinestring][[$img/ok.png]]]
+[[MultiPolygon][[$img/ok.png]]]
 ]
Added: trunk/libs/geometry/doc/generated/within_status.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/geometry/doc/generated/within_status.qbk	2011-03-29 17:21:58 EDT (Tue, 29 Mar 2011)
@@ -0,0 +1,5 @@
+[heading Supported geometries]
+[table
+[[ ][Box][Ring][Polygon][MultiPolygon]]
+[[Point][[$img/ok.png]][[$img/ok.png]][[$img/ok.png]][[$img/ok.png]]]
+]
Added: trunk/libs/geometry/doc/html/img/algorithms/centroid.png
==============================================================================
Binary file. No diff available.
Added: trunk/libs/geometry/doc/html/img/algorithms/envelope.png
==============================================================================
Binary file. No diff available.
Added: trunk/libs/geometry/doc/html/img/algorithms/make_envelope.png
==============================================================================
Binary file. No diff available.
Added: trunk/libs/geometry/doc/html/img/algorithms/within.png
==============================================================================
Binary file. No diff available.
Modified: trunk/libs/geometry/doc/imports.qbk
==============================================================================
--- trunk/libs/geometry/doc/imports.qbk	(original)
+++ trunk/libs/geometry/doc/imports.qbk	2011-03-29 17:21:58 EDT (Tue, 29 Mar 2011)
@@ -21,6 +21,8 @@
 [import src/examples/algorithms/assign_with_range.cpp]
 [import src/examples/algorithms/assign_point_to_index.cpp]
 [import src/examples/algorithms/assign_point_from_index.cpp]
+[import src/examples/algorithms/centroid.cpp]
+[import src/examples/algorithms/distance.cpp]
 [import src/examples/algorithms/difference.cpp]
 [import src/examples/algorithms/difference_inserter.cpp]
 [import src/examples/algorithms/envelope.cpp]
@@ -45,6 +47,7 @@
 [import src/examples/algorithms/simplify_inserter.cpp]
 [import src/examples/algorithms/sym_difference.cpp]
 [import src/examples/algorithms/union.cpp]
+[import src/examples/algorithms/within.cpp]
 [import src/examples/core/get_point.cpp]
 [import src/examples/core/get_box.cpp]
 [import src/examples/core/set_point.cpp]
Modified: trunk/libs/geometry/doc/make_qbk.py
==============================================================================
--- trunk/libs/geometry/doc/make_qbk.py	(original)
+++ trunk/libs/geometry/doc/make_qbk.py	2011-03-29 17:21:58 EDT (Tue, 29 Mar 2011)
@@ -68,9 +68,9 @@
 call_doxygen()
 
 algorithms = ["append", "assign", "make", "clear"
-    , "area", "buffer", "centroid", "combine", "convert", "correct"
+    , "area", "buffer", "centroid", "convert", "correct"
     , "convex_hull", "difference", "disjoint", "distance" 
-    , "envelope", "equals", "for_each", "intersection", "intersects" 
+    , "envelope", "equals", "expand", "for_each", "intersection", "intersects" 
     , "length", "num_geometries", "num_interior_rings", "num_points" 
     , "overlaps", "perimeter", "reverse", "simplify", "sym_difference" 
     , "transform", "union", "unique", "within"]
Modified: trunk/libs/geometry/doc/quickref.xml
==============================================================================
--- trunk/libs/geometry/doc/quickref.xml	(original)
+++ trunk/libs/geometry/doc/quickref.xml	2011-03-29 17:21:58 EDT (Tue, 29 Mar 2011)
@@ -315,10 +315,6 @@
     <simplelist type="vert" columns="1">
      <member><link linkend="geometry.reference.algorithms.clear">clear</link></member>
     </simplelist>
-    <bridgehead renderas="sect3">Combine</bridgehead>
-    <simplelist type="vert" columns="1">
-     <member><link linkend="geometry.reference.algorithms.combine">combine</link></member>
-    </simplelist>
     <bridgehead renderas="sect3">Convert</bridgehead>
     <simplelist type="vert" columns="1">
      <member><link linkend="geometry.reference.algorithms.convert">convert</link></member>
@@ -348,6 +344,10 @@
     <simplelist type="vert" columns="1">
      <member><link linkend="geometry.reference.algorithms.envelope">envelope</link></member>
     </simplelist>
+    <bridgehead renderas="sect3">Expand</bridgehead>
+    <simplelist type="vert" columns="1">
+     <member><link linkend="geometry.reference.algorithms.expand">expand</link></member>
+    </simplelist>
     <bridgehead renderas="sect3">For Each</bridgehead>
     <simplelist type="vert" columns="1">
      <member><link linkend="geometry.reference.algorithms.for_each">for each (point, segment)</link></member>
Modified: trunk/libs/geometry/doc/reference.qbk
==============================================================================
--- trunk/libs/geometry/doc/reference.qbk	(original)
+++ trunk/libs/geometry/doc/reference.qbk	2011-03-29 17:21:58 EDT (Tue, 29 Mar 2011)
@@ -69,10 +69,6 @@
 [include generated/clear.qbk]
 [endsect]
 
-[section:combine combine]
-[include generated/combine.qbk]
-[endsect]
-
 [section:convert convert]
 [include generated/convert.qbk]
 [endsect]
@@ -105,6 +101,10 @@
 [include generated/equals.qbk]
 [endsect]
 
+[section:expand expand]
+[include generated/expand.qbk]
+[endsect]
+
 [section:for_each for_each]
 [include generated/for_each.qbk]
 [endsect]
Modified: trunk/libs/geometry/doc/reference/algorithms/centroid.qbk
==============================================================================
--- trunk/libs/geometry/doc/reference/algorithms/centroid.qbk	(original)
+++ trunk/libs/geometry/doc/reference/algorithms/centroid.qbk	2011-03-29 17:21:58 EDT (Tue, 29 Mar 2011)
@@ -14,10 +14,26 @@
 [table
 [[Case] [Behavior] ]
 [[__point__][Returns the point itself as the centroid]]
-[[__multi_point__][Calculates centroid]]
-[[__1dim__][Calculates centroid]]
+[[__multi_point__][Calculates centroid (based on average)]]
+[[__1dim__][Calculates centroid (based on weighted length)]]
 [[__2dim__][Calculates centroid]]
 [[__empty__][Throws a [link geometry.reference.exceptions.centroid_exception centroid_exception] ]]
+[[__cart__][Implemented]]
+[[__sph__][Calculates the centroid as if based on Cartesian coordinates]]
+]
+
+[heading Supported geometries]
+[table
+[[ ][2D][3D]]
+[[Point][[$img/ok.png]][[$img/ok.png]]]
+[[Segment][[$img/ok.png]][[$img/ok.png]]]
+[[Box][[$img/ok.png]][[$img/ok.png]]]
+[[Linestring][[$img/ok.png]][[$img/nyi.png]]]
+[[Ring][[$img/ok.png]][[$img/nyi.png]]]
+[[Polygon][[$img/ok.png]][[$img/nyi.png]]]
+[[MultiPoint][[$img/ok.png]][[$img/ok.png]]]
+[[MultiLinestring][[$img/ok.png]][[$img/nyi.png]]]
+[[MultiPolygon][[$img/ok.png]][[$img/nyi.png]]]
 ]
 
 [heading Complexity]
Added: trunk/libs/geometry/doc/reference/algorithms/centroid_strategies.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/geometry/doc/reference/algorithms/centroid_strategies.qbk	2011-03-29 17:21:58 EDT (Tue, 29 Mar 2011)
@@ -0,0 +1,14 @@
+[/============================================================================
+  Boost.Geometry (aka GGL, Generic Geometry Library)
+
+  Copyright (c) 2009-2011 Barend Gehrels, Geodan, Amsterdam, the Netherlands.
+  Copyright (c) 2009-2011 Mateusz Loskot (mateusz_at_[hidden])
+  Copyright (c) 2009-2011 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)
+=============================================================================/]
+
+[heading Available Strategies]
+* [link geometry.reference.strategies.strategy_centroid_bashein_detmer Bashein Detmer (cartesian)]
Added: trunk/libs/geometry/doc/reference/algorithms/within.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/geometry/doc/reference/algorithms/within.qbk	2011-03-29 17:21:58 EDT (Tue, 29 Mar 2011)
@@ -0,0 +1,25 @@
+[/============================================================================
+  Boost.Geometry (aka GGL, Generic Geometry Library)
+
+  Copyright (c) 2009-2011 Barend Gehrels, Geodan, Amsterdam, the Netherlands.
+  Copyright (c) 2009-2011 Mateusz Loskot (mateusz_at_[hidden])
+  Copyright (c) 2009-2011 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)
+=============================================================================/]
+
+[include generated/within_status.qbk]
+
+[heading Notes]
+If a point is located exactly on the border of a geometry, the result depends on the strategy.
+The default strategy ([link geometry.reference.strategies.strategy_within_winding Winding (coordinate system agnostic)]) 
+returns false in that case.
+
+If a polygon has a reverse oriented (e.g. counterclockwise for a clockwise typed polygon), the result also depends on the strategy.
+The default strategy returns still true if a point is completely within the reversed polygon. There is a specific strategy which returns false in this case.
+
+[heading Complexity]
+Linear
+
Added: trunk/libs/geometry/doc/src/examples/algorithms/centroid.cpp
==============================================================================
--- (empty file)
+++ trunk/libs/geometry/doc/src/examples/algorithms/centroid.cpp	2011-03-29 17:21:58 EDT (Tue, 29 Mar 2011)
@@ -0,0 +1,52 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Quickbook Example
+
+// Copyright (c) 2011 Barend Gehrels, Amsterdam, the Netherlands.
+
+// 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)
+
+
+//[centroid
+//` Shows calculation of a centroid of a polygon
+
+#include <iostream>
+#include <list>
+
+#include <boost/geometry/geometry.hpp>
+#include <boost/geometry/geometries/geometries.hpp>
+
+#include <boost/geometry/domains/gis/io/wkt/wkt.hpp>
+/*<-*/ #include "create_svg_two.hpp" /*->*/
+
+int main()
+{
+    typedef boost::geometry::model::d2::point_xy<double> point_type;
+    typedef boost::geometry::model::polygon<point_type> polygon_type;
+
+    polygon_type poly;
+    boost::geometry::read_wkt(
+        "POLYGON((2 1.3,2.4 1.7,2.8 1.8,3.4 1.2,3.7 1.6,3.4 2,4.1 3,5.3 2.6,5.4 1.2,4.9 0.8,2.9 0.7,2 1.3)"
+            "(4.0 2.0, 4.2 1.4, 4.8 1.9, 4.4 2.2, 4.0 2.0))", poly);
+
+    point_type p;
+    boost::geometry::centroid(poly, p);
+
+    std::cout << "centroid: " << boost::geometry::dsv(p) << std::endl;
+    /*<-*/ create_svg("centroid.svg", poly, p); /*->*/
+    return 0;
+}
+
+//]
+
+//[centroid_output
+/*`
+Output:
+[pre
+centroid: (4.04663, 1.6349)
+[$img/algorithms/centroid.png]
+]
+Note that the centroid might be located in a hole or outside a polygon, easily.
+*/
+//]
Modified: trunk/libs/geometry/doc/src/examples/algorithms/create_svg_two.hpp
==============================================================================
--- trunk/libs/geometry/doc/src/examples/algorithms/create_svg_two.hpp	(original)
+++ trunk/libs/geometry/doc/src/examples/algorithms/create_svg_two.hpp	2011-03-29 17:21:58 EDT (Tue, 29 Mar 2011)
@@ -28,7 +28,14 @@
     mapper.add(b);
 
     mapper.map(a, "fill-opacity:0.5;fill:rgb(153,204,0);stroke:rgb(153,204,0);stroke-width:2");
-    mapper.map(b, "opacity:0.8;fill:none;stroke:rgb(255,128,0);stroke-width:4;stroke-dasharray:1,7;stroke-linecap:round");
+    if (boost::geometry::geometry_id<Geometry2>::value == 1)
+    {
+        mapper.map(b, "fill:rgb(255,128,0);stroke:rgb(0,0,100);stroke-width:1");
+    }
+    else
+    {
+        mapper.map(b, "opacity:0.8;fill:none;stroke:rgb(255,128,0);stroke-width:4;stroke-dasharray:1,7;stroke-linecap:round");
+    }
 }
 
 // NOTE: convert manually from svg to png using Inkscape ctrl-shift-E
Added: trunk/libs/geometry/doc/src/examples/algorithms/distance.cpp
==============================================================================
--- (empty file)
+++ trunk/libs/geometry/doc/src/examples/algorithms/distance.cpp	2011-03-29 17:21:58 EDT (Tue, 29 Mar 2011)
@@ -0,0 +1,65 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+
+// Copyright (c) 2011 Barend Gehrels, Amsterdam, the Netherlands.
+
+// 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)
+
+// Quickbook Example
+
+//[distance
+//` Shows calculation of distance of point to some other geometries
+
+#include <iostream>
+#include <list>
+
+#include <boost/geometry/geometry.hpp>
+#include <boost/geometry/geometries/geometries.hpp>
+#include <boost/geometry/multi/geometries/multi_point.hpp>
+
+#include <boost/geometry/domains/gis/io/wkt/wkt.hpp>
+
+#include <boost/foreach.hpp>
+
+int main()
+{
+    typedef boost::geometry::model::d2::point_xy<double> point_type;
+    typedef boost::geometry::model::polygon<point_type> polygon_type;
+    typedef boost::geometry::model::linestring<point_type> linestring_type;
+    typedef boost::geometry::model::multi_point<point_type> multi_point_type;
+
+    point_type p(1,2);
+    polygon_type poly;
+    linestring_type line;
+    multi_point_type mp;
+
+    boost::geometry::read_wkt(
+        "POLYGON((2 1.3,2.4 1.7,2.8 1.8,3.4 1.2,3.7 1.6,3.4 2,4.1 3,5.3 2.6,5.4 1.2,4.9 0.8,2.9 0.7,2 1.3)"
+            "(4.0 2.0, 4.2 1.4, 4.8 1.9, 4.4 2.2, 4.0 2.0))", poly);
+    line.push_back(point_type(0,0));
+    line.push_back(point_type(0,3));
+    mp.push_back(point_type(0,0));
+    mp.push_back(point_type(3,3));
+
+    std::cout << "distance: " << boost::geometry::distance(p, poly) << std::endl;
+    std::cout << "distance: " << boost::geometry::distance(p, line) << std::endl;
+    std::cout << "distance: " << boost::geometry::distance(p, mp) << std::endl;
+
+    return 0;
+}
+
+//]
+
+
+//[distance_output
+/*`
+Output:
+[pre
+distance: 1.22066
+distance: 1
+distance: 2.23607
+]
+*/
+//]
+
Added: trunk/libs/geometry/doc/src/examples/algorithms/within.cpp
==============================================================================
--- (empty file)
+++ trunk/libs/geometry/doc/src/examples/algorithms/within.cpp	2011-03-29 17:21:58 EDT (Tue, 29 Mar 2011)
@@ -0,0 +1,52 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Quickbook Example
+
+// Copyright (c) 2011 Barend Gehrels, Amsterdam, the Netherlands.
+
+// 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)
+
+
+//[within
+//` Shows how to detect if a point is inside a polygon, or not
+
+#include <iostream>
+#include <list>
+
+#include <boost/geometry/geometry.hpp>
+#include <boost/geometry/geometries/geometries.hpp>
+
+#include <boost/geometry/domains/gis/io/wkt/wkt.hpp>
+/*<-*/ #include "create_svg_two.hpp" /*->*/
+
+int main()
+{
+    typedef boost::geometry::model::d2::point_xy<double> point_type;
+    typedef boost::geometry::model::polygon<point_type> polygon_type;
+
+    polygon_type poly;
+    boost::geometry::read_wkt(
+        "POLYGON((2 1.3,2.4 1.7,2.8 1.8,3.4 1.2,3.7 1.6,3.4 2,4.1 3,5.3 2.6,5.4 1.2,4.9 0.8,2.9 0.7,2 1.3)"
+            "(4.0 2.0, 4.2 1.4, 4.8 1.9, 4.4 2.2, 4.0 2.0))", poly);
+
+    point_type p(4, 1);
+
+    std::cout << "within: " << (boost::geometry::within(p, poly) ? "yes" : "no") << std::endl;
+    /*<-*/ create_svg("within.svg", poly, p); /*->*/
+    return 0;
+}
+
+//]
+
+//[within_output
+/*`
+Output:
+[pre
+within: yes
+
+[$img/algorithms/within.png]
+]
+
+*/
+//]