3 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
4 <title>centroid</title>
5 <link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
6 <meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
7 <link rel="home" href="../../../../index.html" title="Chapter 1. Geometry">
8 <link rel="up" href="../centroid.html" title="centroid">
9 <link rel="prev" href="centroid_3_with_strategy.html" title="centroid (with strategy)">
10 <link rel="next" href="return_centroid_1.html" title="return_centroid">
12 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
13 <table cellpadding="2" width="100%"><tr>
14 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
15 <td align="center"><a href="../../../../../../../../index.html">Home</a></td>
16 <td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
17 <td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
18 <td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
19 <td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
22 <div class="spirit-nav">
23 <a accesskey="p" href="centroid_3_with_strategy.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../centroid.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="return_centroid_1.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
26 <div class="titlepage"><div><div><h5 class="title">
27 <a name="geometry.reference.algorithms.centroid.centroid_2"></a><a class="link" href="centroid_2.html" title="centroid">centroid</a>
28 </h5></div></div></div>
30 <a class="indexterm" name="idm46187007398912"></a>
31 Calculates the centroid of a geometry.
34 <a name="geometry.reference.algorithms.centroid.centroid_2.h0"></a>
35 <span class="phrase"><a name="geometry.reference.algorithms.centroid.centroid_2.description"></a></span><a class="link" href="centroid_2.html#geometry.reference.algorithms.centroid.centroid_2.description">Description</a>
38 The free function centroid calculates the geometric center (or: center
39 of mass) of a geometry. It uses the default strategy, based on the coordinate
40 system of the geometry.
43 <a name="geometry.reference.algorithms.centroid.centroid_2.h1"></a>
44 <span class="phrase"><a name="geometry.reference.algorithms.centroid.centroid_2.synopsis"></a></span><a class="link" href="centroid_2.html#geometry.reference.algorithms.centroid.centroid_2.synopsis">Synopsis</a>
48 <pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Geometry</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Point</span><span class="special">></span>
49 <span class="keyword">void</span> <span class="identifier">centroid</span><span class="special">(</span><span class="identifier">Geometry</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">geometry</span><span class="special">,</span> <span class="identifier">Point</span> <span class="special">&</span> <span class="identifier">c</span><span class="special">)</span></pre>
53 <a name="geometry.reference.algorithms.centroid.centroid_2.h2"></a>
54 <span class="phrase"><a name="geometry.reference.algorithms.centroid.centroid_2.parameters"></a></span><a class="link" href="centroid_2.html#geometry.reference.algorithms.centroid.centroid_2.parameters">Parameters</a>
56 <div class="informaltable"><table class="table">
94 Any type fulfilling a Geometry Concept
104 A model of the specified concept
116 Any type fulfilling a Point Concept
126 The calculated centroid will be assigned to this point reference
133 <a name="geometry.reference.algorithms.centroid.centroid_2.h3"></a>
134 <span class="phrase"><a name="geometry.reference.algorithms.centroid.centroid_2.header"></a></span><a class="link" href="centroid_2.html#geometry.reference.algorithms.centroid.centroid_2.header">Header</a>
140 <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>
146 <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">algorithms</span><span class="special">/</span><span class="identifier">centroid</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>
149 <a name="geometry.reference.algorithms.centroid.centroid_2.h4"></a>
150 <span class="phrase"><a name="geometry.reference.algorithms.centroid.centroid_2.conformance"></a></span><a class="link" href="centroid_2.html#geometry.reference.algorithms.centroid.centroid_2.conformance">Conformance</a>
153 The function centroid implements function Centroid from the <a href="http://www.opengeospatial.org/standards/sfa" target="_top">OGC
154 Simple Feature Specification</a>.
157 <a name="geometry.reference.algorithms.centroid.centroid_2.h5"></a>
158 <span class="phrase"><a name="geometry.reference.algorithms.centroid.centroid_2.behavior"></a></span><a class="link" href="centroid_2.html#geometry.reference.algorithms.centroid.centroid_2.behavior">Behavior</a>
160 <div class="informaltable"><table class="table">
186 Returns the point itself as the centroid
198 Calculates centroid (based on average)
205 linear (e.g. linestring)
210 Calculates centroid (based on weighted length)
229 Empty (e.g. polygon without points)
234 Throws a <a class="link" href="../../exceptions/centroid_exception.html" title="centroid_exception">centroid_exception</a>
258 Calculates the centroid as if based on Cartesian coordinates
265 <a name="geometry.reference.algorithms.centroid.centroid_2.h6"></a>
266 <span class="phrase"><a name="geometry.reference.algorithms.centroid.centroid_2.supported_geometries"></a></span><a class="link" href="centroid_2.html#geometry.reference.algorithms.centroid.centroid_2.supported_geometries">Supported
269 <div class="informaltable"><table class="table">
298 <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
303 <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
315 <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
320 <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
332 <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
337 <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
349 <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
354 <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
366 <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
371 <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
383 <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
388 <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
400 <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
405 <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
417 <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
422 <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
434 <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
439 <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
446 <a name="geometry.reference.algorithms.centroid.centroid_2.h7"></a>
447 <span class="phrase"><a name="geometry.reference.algorithms.centroid.centroid_2.complexity"></a></span><a class="link" href="centroid_2.html#geometry.reference.algorithms.centroid.centroid_2.complexity">Complexity</a>
453 <a name="geometry.reference.algorithms.centroid.centroid_2.h8"></a>
454 <span class="phrase"><a name="geometry.reference.algorithms.centroid.centroid_2.example"></a></span><a class="link" href="centroid_2.html#geometry.reference.algorithms.centroid.centroid_2.example">Example</a>
457 Shows calculation of a centroid of a polygon
461 <pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
462 <span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">list</span><span class="special">></span>
464 <span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
465 <span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">point_xy</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
466 <span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">polygon</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
469 <span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
470 <span class="special">{</span>
471 <span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">d2</span><span class="special">::</span><span class="identifier">point_xy</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="identifier">point_type</span><span class="special">;</span>
472 <span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">polygon</span><span class="special"><</span><span class="identifier">point_type</span><span class="special">></span> <span class="identifier">polygon_type</span><span class="special">;</span>
474 <span class="identifier">polygon_type</span> <span class="identifier">poly</span><span class="special">;</span>
475 <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">read_wkt</span><span class="special">(</span>
476 <span class="string">"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)"</span>
477 <span class="string">"(4.0 2.0, 4.2 1.4, 4.8 1.9, 4.4 2.2, 4.0 2.0))"</span><span class="special">,</span> <span class="identifier">poly</span><span class="special">);</span>
479 <span class="identifier">point_type</span> <span class="identifier">p</span><span class="special">;</span>
480 <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">centroid</span><span class="special">(</span><span class="identifier">poly</span><span class="special">,</span> <span class="identifier">p</span><span class="special">);</span>
482 <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"centroid: "</span> <span class="special"><<</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">dsv</span><span class="special">(</span><span class="identifier">p</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
484 <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
485 <span class="special">}</span>
492 <pre class="programlisting">centroid: (4.04663, 1.6349)
493 <img src="../../../../img/algorithms/centroid.png" alt="centroid">
496 Note that the centroid might be located in a hole or outside a polygon,
500 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
501 <td align="left"></td>
502 <td align="right"><div class="copyright-footer">Copyright © 2009-2019 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
503 Wulkiewicz, Oracle and/or its affiliates<p>
504 Distributed under the Boost Software License, Version 1.0. (See accompanying
505 file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
510 <div class="spirit-nav">
511 <a accesskey="p" href="centroid_3_with_strategy.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../centroid.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="return_centroid_1.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>