3 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
4 <title>strategy::buffer::join_miter</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="../strategies.html" title="Strategies">
9 <link rel="prev" href="strategy_buffer_join_round.html" title="strategy::buffer::join_round">
10 <link rel="next" href="strategy_buffer_end_round.html" title="strategy::buffer::end_round">
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="strategy_buffer_join_round.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../strategies.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="strategy_buffer_end_round.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.strategies.strategy_buffer_join_miter"></a><a class="link" href="strategy_buffer_join_miter.html" title="strategy::buffer::join_miter">strategy::buffer::join_miter</a>
28 </h4></div></div></div>
30 <a class="indexterm" name="idp121081008"></a><a class="indexterm" name="idp121081696"></a><a class="indexterm" name="idp121082384"></a>
31 Let the buffer create sharp corners.
34 <a name="geometry.reference.strategies.strategy_buffer_join_miter.h0"></a>
35 <span class="phrase"><a name="geometry.reference.strategies.strategy_buffer_join_miter.description"></a></span><a class="link" href="strategy_buffer_join_miter.html#geometry.reference.strategies.strategy_buffer_join_miter.description">Description</a>
38 This strategy can be used as JoinStrategy for the buffer algorithm. It
39 creates a sharp corners around each convex vertex. It can be applied for
40 (multi)linestrings and (multi)polygons. If corners are sharp by themselves,
41 the miters might become very long. Therefore there is a limit (miter_limit),
42 in terms of the used distance, which limits their length. The miter is
43 not changed to a bevel form (as done in some other software), it is just
44 adapted to the specified miter_limit but keeps its miter form. If the buffer
45 distance is 5.0, and the miter limit is 2.0, generated points will be located
46 at a distance of at most 10.0 (2*5) units. This strategy is only applicable
47 for Cartesian coordinate systems.
50 <a name="geometry.reference.strategies.strategy_buffer_join_miter.h1"></a>
51 <span class="phrase"><a name="geometry.reference.strategies.strategy_buffer_join_miter.synopsis"></a></span><a class="link" href="strategy_buffer_join_miter.html#geometry.reference.strategies.strategy_buffer_join_miter.synopsis">Synopsis</a>
55 <pre class="programlisting"><span class="keyword">class</span> <span class="identifier">strategy</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">::</span><span class="identifier">join_miter</span>
56 <span class="special">{</span>
57 <span class="comment">// ...</span>
58 <span class="special">};</span>
63 <a name="geometry.reference.strategies.strategy_buffer_join_miter.h2"></a>
64 <span class="phrase"><a name="geometry.reference.strategies.strategy_buffer_join_miter.constructor_s_"></a></span><a class="link" href="strategy_buffer_join_miter.html#geometry.reference.strategies.strategy_buffer_join_miter.constructor_s_">Constructor(s)</a>
66 <div class="informaltable"><table class="table">
93 <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">join_miter</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">miter_limit</span> <span class="special">=</span> <span class="number">5.0</span><span class="special">)</span></pre>
99 Constructs the strategy.
104 <span class="bold"><strong>double</strong></span>: <span class="emphasis"><em>miter_limit</em></span>:
105 The miter limit, to avoid excessively long miters around sharp
112 <a name="geometry.reference.strategies.strategy_buffer_join_miter.h3"></a>
113 <span class="phrase"><a name="geometry.reference.strategies.strategy_buffer_join_miter.header"></a></span><a class="link" href="strategy_buffer_join_miter.html#geometry.reference.strategies.strategy_buffer_join_miter.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">strategies</span><span class="special">/</span><span class="identifier">cartesian</span><span class="special">/</span><span class="identifier">buffer_join_miter</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>
119 <a name="geometry.reference.strategies.strategy_buffer_join_miter.h4"></a>
120 <span class="phrase"><a name="geometry.reference.strategies.strategy_buffer_join_miter.example"></a></span><a class="link" href="strategy_buffer_join_miter.html#geometry.reference.strategies.strategy_buffer_join_miter.example">Example</a>
123 Shows how the join_miter strategy can be used as a JoinStrategy to create
128 <pre class="programlisting"><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>
129 <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>
130 <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">geometries</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
133 <span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
134 <span class="special">{</span>
135 <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</span><span class="special">;</span>
136 <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>
138 <span class="comment">// Declare the join_miter strategy</span>
139 <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">strategy</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">::</span><span class="identifier">join_miter</span> <span class="identifier">join_strategy</span><span class="special">;</span>
141 <span class="comment">// Declare other strategies</span>
142 <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">strategy</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">::</span><span class="identifier">distance_symmetric</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="identifier">distance_strategy</span><span class="special">(</span><span class="number">0.5</span><span class="special">);</span>
143 <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">strategy</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">::</span><span class="identifier">end_flat</span> <span class="identifier">end_strategy</span><span class="special">;</span>
144 <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">strategy</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">::</span><span class="identifier">side_straight</span> <span class="identifier">side_strategy</span><span class="special">;</span>
145 <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">strategy</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">::</span><span class="identifier">point_circle</span> <span class="identifier">point_strategy</span><span class="special">;</span>
147 <span class="comment">// Declare/fill a multi polygon</span>
148 <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">multi_polygon</span><span class="special"><</span><span class="identifier">polygon</span><span class="special">></span> <span class="identifier">mp</span><span class="special">;</span>
149 <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><span class="string">"MULTIPOLYGON(((5 5,7 8,9 5,5 5)),((8 7,8 10,11 10,11 7,8 7)))"</span><span class="special">,</span> <span class="identifier">mp</span><span class="special">);</span>
151 <span class="comment">// Create the buffered geometry with sharp corners</span>
152 <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">multi_polygon</span><span class="special"><</span><span class="identifier">polygon</span><span class="special">></span> <span class="identifier">result</span><span class="special">;</span>
153 <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">(</span><span class="identifier">mp</span><span class="special">,</span> <span class="identifier">result</span><span class="special">,</span>
154 <span class="identifier">distance_strategy</span><span class="special">,</span> <span class="identifier">side_strategy</span><span class="special">,</span>
155 <span class="identifier">join_strategy</span><span class="special">,</span> <span class="identifier">end_strategy</span><span class="special">,</span> <span class="identifier">point_strategy</span><span class="special">);</span>
158 <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
159 <span class="special">}</span>
164 <a name="geometry.reference.strategies.strategy_buffer_join_miter.h5"></a>
165 <span class="phrase"><a name="geometry.reference.strategies.strategy_buffer_join_miter.output"></a></span><a class="link" href="strategy_buffer_join_miter.html#geometry.reference.strategies.strategy_buffer_join_miter.output">Output</a>
168 <span class="inlinemediaobject"><img src="../../../img/strategies/buffer_join_miter.png" alt="buffer_join_miter"></span>
171 <a name="geometry.reference.strategies.strategy_buffer_join_miter.h6"></a>
172 <span class="phrase"><a name="geometry.reference.strategies.strategy_buffer_join_miter.see_also"></a></span><a class="link" href="strategy_buffer_join_miter.html#geometry.reference.strategies.strategy_buffer_join_miter.see_also">See
175 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
176 <li class="listitem">
177 <a class="link" href="../algorithms/buffer/buffer_7_with_strategies.html" title="buffer (with strategies)">buffer
178 (with strategies)</a>
180 <li class="listitem">
181 <a class="link" href="strategy_buffer_join_round.html" title="strategy::buffer::join_round">join_round</a>
185 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
186 <td align="left"></td>
187 <td align="right"><div class="copyright-footer">Copyright © 2009-2017 Barend
188 Gehrels, Bruno Lalande, Mateusz Loskot, Adam Wulkiewicz, Oracle and/or its
190 Distributed under the Boost Software License, Version 1.0. (See accompanying
191 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>)
196 <div class="spirit-nav">
197 <a accesskey="p" href="strategy_buffer_join_round.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../strategies.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="strategy_buffer_end_round.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>