3 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
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="../algorithms.html" title="Algorithms">
9 <link rel="prev" href="relation/relation_2.html" title="relation">
10 <link rel="next" href="simplify.html" title="simplify">
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="relation/relation_2.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../algorithms.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="simplify.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
26 <div class="titlepage"><div><div><h4 class="title">
27 <a name="geometry.reference.algorithms.reverse"></a><a class="link" href="reverse.html" title="reverse">reverse</a>
28 </h4></div></div></div>
30 <a class="indexterm" name="idp103981792"></a>
31 Reverses the points within a geometry.
34 <a name="geometry.reference.algorithms.reverse.h0"></a>
35 <span class="phrase"><a name="geometry.reference.algorithms.reverse.description"></a></span><a class="link" href="reverse.html#geometry.reference.algorithms.reverse.description">Description</a>
38 Generic function to reverse a geometry. It resembles the std::reverse functionality,
39 but it takes the geometry type into account. Only for a ring or for a linestring
40 it is the same as the std::reverse.
43 <a name="geometry.reference.algorithms.reverse.h1"></a>
44 <span class="phrase"><a name="geometry.reference.algorithms.reverse.synopsis"></a></span><a class="link" href="reverse.html#geometry.reference.algorithms.reverse.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>
49 <span class="keyword">void</span> <span class="identifier">reverse</span><span class="special">(</span><span class="identifier">Geometry</span> <span class="special">&</span> <span class="identifier">geometry</span><span class="special">)</span></pre>
53 <a name="geometry.reference.algorithms.reverse.h2"></a>
54 <span class="phrase"><a name="geometry.reference.algorithms.reverse.parameters"></a></span><a class="link" href="reverse.html#geometry.reference.algorithms.reverse.parameters">Parameters</a>
56 <div class="informaltable"><table class="table">
93 Any type fulfilling a Geometry Concept
103 A model of the specified concept which will be reversed
109 <a name="geometry.reference.algorithms.reverse.h3"></a>
110 <span class="phrase"><a name="geometry.reference.algorithms.reverse.header"></a></span><a class="link" href="reverse.html#geometry.reference.algorithms.reverse.header">Header</a>
116 <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>
122 <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">reverse</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>
125 <a name="geometry.reference.algorithms.reverse.h4"></a>
126 <span class="phrase"><a name="geometry.reference.algorithms.reverse.conformance"></a></span><a class="link" href="reverse.html#geometry.reference.algorithms.reverse.conformance">Conformance</a>
129 The function reverse is not defined by OGC.
132 The function reverse conforms to the std::reverse function of the C++ std-library.
135 <a name="geometry.reference.algorithms.reverse.h5"></a>
136 <span class="phrase"><a name="geometry.reference.algorithms.reverse.behavior"></a></span><a class="link" href="reverse.html#geometry.reference.algorithms.reverse.behavior">Behavior</a>
138 <div class="informaltable"><table class="table">
164 Nothing happens, geometry is unchanged
176 Not yet supported in this version
188 Nothing happens, geometry is unchanged
200 Reverses the Linestring
224 Reverses the exterior ring and all interior rings in the polygon
236 Nothing happens, geometry is unchanged
248 Reverses all contained linestrings individually
260 Reverses all contained polygons individually
266 <div class="note"><table border="0" summary="Note">
268 <td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../../doc/src/images/note.png"></td>
269 <th align="left">Note</th>
271 <tr><td align="left" valign="top"><p>
272 The reverse of a (multi)polygon or ring might make a valid geometry invalid
273 because the (counter)clockwise orientation reverses.
277 <a name="geometry.reference.algorithms.reverse.h6"></a>
278 <span class="phrase"><a name="geometry.reference.algorithms.reverse.complexity"></a></span><a class="link" href="reverse.html#geometry.reference.algorithms.reverse.complexity">Complexity</a>
284 <a name="geometry.reference.algorithms.reverse.h7"></a>
285 <span class="phrase"><a name="geometry.reference.algorithms.reverse.example"></a></span><a class="link" href="reverse.html#geometry.reference.algorithms.reverse.example">Example</a>
288 Shows how to reverse a ring or polygon
292 <pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
294 <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>
295 <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>
296 <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">ring</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
297 <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">adapted</span><span class="special">/</span><span class="identifier">boost_tuple</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
299 <span class="identifier">BOOST_GEOMETRY_REGISTER_BOOST_TUPLE_CS</span><span class="special">(</span><span class="identifier">cs</span><span class="special">::</span><span class="identifier">cartesian</span><span class="special">)</span>
301 <span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">assign</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
303 <span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
304 <span class="special">{</span>
305 <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">assign</span><span class="special">::</span><span class="identifier">tuple_list_of</span><span class="special">;</span>
307 <span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">tuple</span><span class="special"><</span><span class="keyword">int</span><span class="special">,</span> <span class="keyword">int</span><span class="special">></span> <span class="identifier">point</span><span class="special">;</span>
308 <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</span><span class="special">></span> <span class="identifier">polygon</span><span class="special">;</span>
309 <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">ring</span><span class="special"><</span><span class="identifier">point</span><span class="special">></span> <span class="identifier">ring</span><span class="special">;</span>
312 <span class="identifier">polygon</span> <span class="identifier">poly</span><span class="special">;</span>
313 <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">exterior_ring</span><span class="special">(</span><span class="identifier">poly</span><span class="special">)</span> <span class="special">=</span> <span class="identifier">tuple_list_of</span><span class="special">(</span><span class="number">0</span><span class="special">,</span> <span class="number">0</span><span class="special">)(</span><span class="number">0</span><span class="special">,</span> <span class="number">9</span><span class="special">)(</span><span class="number">10</span><span class="special">,</span> <span class="number">10</span><span class="special">)(</span><span class="number">0</span><span class="special">,</span> <span class="number">0</span><span class="special">);</span>
314 <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">interior_rings</span><span class="special">(</span><span class="identifier">poly</span><span class="special">).</span><span class="identifier">push_back</span><span class="special">(</span><span class="identifier">tuple_list_of</span><span class="special">(</span><span class="number">1</span><span class="special">,</span> <span class="number">2</span><span class="special">)(</span><span class="number">4</span><span class="special">,</span> <span class="number">6</span><span class="special">)(</span><span class="number">2</span><span class="special">,</span> <span class="number">8</span><span class="special">)(</span><span class="number">1</span><span class="special">,</span> <span class="number">2</span><span class="special">));</span>
316 <span class="keyword">double</span> <span class="identifier">area_before</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">area</span><span class="special">(</span><span class="identifier">poly</span><span class="special">);</span>
317 <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">reverse</span><span class="special">(</span><span class="identifier">poly</span><span class="special">);</span>
318 <span class="keyword">double</span> <span class="identifier">area_after</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">area</span><span class="special">(</span><span class="identifier">poly</span><span class="special">);</span>
319 <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</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">poly</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>
320 <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">area_before</span> <span class="special"><<</span> <span class="string">" -> "</span> <span class="special"><<</span> <span class="identifier">area_after</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
322 <span class="identifier">ring</span> <span class="identifier">r</span> <span class="special">=</span> <span class="identifier">tuple_list_of</span><span class="special">(</span><span class="number">0</span><span class="special">,</span> <span class="number">0</span><span class="special">)(</span><span class="number">0</span><span class="special">,</span> <span class="number">9</span><span class="special">)(</span><span class="number">8</span><span class="special">,</span> <span class="number">8</span><span class="special">)(</span><span class="number">0</span><span class="special">,</span> <span class="number">0</span><span class="special">);</span>
324 <span class="identifier">area_before</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">area</span><span class="special">(</span><span class="identifier">r</span><span class="special">);</span>
325 <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">reverse</span><span class="special">(</span><span class="identifier">r</span><span class="special">);</span>
326 <span class="identifier">area_after</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">area</span><span class="special">(</span><span class="identifier">r</span><span class="special">);</span>
327 <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</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">r</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>
328 <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">area_before</span> <span class="special"><<</span> <span class="string">" -> "</span> <span class="special"><<</span> <span class="identifier">area_after</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
330 <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
331 <span class="special">}</span>
338 <pre class="programlisting">(((0, 0), (10, 10), (0, 9), (0, 0)), ((1, 2), (2, 8), (4, 6), (1, 2)))
340 ((0, 0), (8, 8), (0, 9), (0, 0))
344 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
345 <td align="left"></td>
346 <td align="right"><div class="copyright-footer">Copyright © 2009-2017 Barend
347 Gehrels, Bruno Lalande, Mateusz Loskot, Adam Wulkiewicz, Oracle and/or its
349 Distributed under the Boost Software License, Version 1.0. (See accompanying
350 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>)
355 <div class="spirit-nav">
356 <a accesskey="p" href="relation/relation_2.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../algorithms.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="simplify.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>