Imported Upstream version 1.63.0
[platform/upstream/boost.git] / libs / geometry / doc / doxy / doxygen_output / xml / c04_b_custom_triangle_example_8cpp-example.xml
1 <?xml version='1.0' encoding='UTF-8' standalone='no'?>
2 <doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.8.6">
3   <compounddef id="c04_b_custom_triangle_example_8cpp-example" kind="example">
4     <compoundname>c04_b_custom_triangle_example.cpp</compoundname>
5     <detaileddescription>
6 <para>This second custom triangle example shows an alternative implementation for a custom shape, showing a partial specialization for the area calculation. <programlisting><codeline><highlight class="comment">//<sp/>Boost.Geometry<sp/>(aka<sp/>GGL,<sp/>Generic<sp/>Geometry<sp/>Library)</highlight><highlight class="normal"></highlight></codeline>
7 <codeline><highlight class="normal"></highlight></codeline>
8 <codeline><highlight class="normal"></highlight><highlight class="comment">//<sp/>Copyright<sp/>(c)<sp/>2007-2012<sp/>Barend<sp/>Gehrels,<sp/>Amsterdam,<sp/>the<sp/>Netherlands.</highlight><highlight class="normal"></highlight></codeline>
9 <codeline><highlight class="normal"></highlight><highlight class="comment">//<sp/>Copyright<sp/>(c)<sp/>2008-2012<sp/>Bruno<sp/>Lalande,<sp/>Paris,<sp/>France.</highlight><highlight class="normal"></highlight></codeline>
10 <codeline><highlight class="normal"></highlight><highlight class="comment">//<sp/>Copyright<sp/>(c)<sp/>2009-2012<sp/>Mateusz<sp/>Loskot,<sp/>London,<sp/>UK.</highlight><highlight class="normal"></highlight></codeline>
11 <codeline><highlight class="normal"></highlight></codeline>
12 <codeline><highlight class="normal"></highlight><highlight class="comment">//<sp/>Use,<sp/>modification<sp/>and<sp/>distribution<sp/>is<sp/>subject<sp/>to<sp/>the<sp/>Boost<sp/>Software<sp/>License,</highlight><highlight class="normal"></highlight></codeline>
13 <codeline><highlight class="normal"></highlight><highlight class="comment">//<sp/>Version<sp/>1.0.<sp/>(See<sp/>accompanying<sp/>file<sp/>LICENSE_1_0.txt<sp/>or<sp/>copy<sp/>at</highlight><highlight class="normal"></highlight></codeline>
14 <codeline><highlight class="normal"></highlight><highlight class="comment">//<sp/>http://www.boost.org/LICENSE_1_0.txt)</highlight><highlight class="normal"></highlight></codeline>
15 <codeline><highlight class="normal"></highlight><highlight class="comment">//</highlight><highlight class="normal"></highlight></codeline>
16 <codeline><highlight class="normal"></highlight><highlight class="comment">//<sp/>Custom<sp/>triangle<sp/>template<sp/>Example</highlight><highlight class="normal"></highlight></codeline>
17 <codeline><highlight class="normal"></highlight></codeline>
18 <codeline><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&lt;iostream&gt;</highlight><highlight class="normal"></highlight></codeline>
19 <codeline><highlight class="normal"></highlight></codeline>
20 <codeline><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&lt;boost/array.hpp&gt;</highlight><highlight class="normal"></highlight></codeline>
21 <codeline><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&lt;boost/tuple/tuple.hpp&gt;</highlight><highlight class="normal"></highlight></codeline>
22 <codeline><highlight class="normal"></highlight></codeline>
23 <codeline><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&lt;<ref refid="algorithms_2area_8hpp" kindref="compound">boost/geometry/algorithms/area.hpp</ref>&gt;</highlight><highlight class="normal"></highlight></codeline>
24 <codeline><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&lt;<ref refid="algorithms_2centroid_8hpp" kindref="compound">boost/geometry/algorithms/centroid.hpp</ref>&gt;</highlight><highlight class="normal"></highlight></codeline>
25 <codeline><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&lt;<ref refid="boost__tuple_8hpp" kindref="compound">boost/geometry/geometries/adapted/boost_tuple.hpp</ref>&gt;</highlight><highlight class="normal"></highlight></codeline>
26 <codeline><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&lt;<ref refid="geometries_2register_2ring_8hpp" kindref="compound">boost/geometry/geometries/register/ring.hpp</ref>&gt;</highlight><highlight class="normal"></highlight></codeline>
27 <codeline><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&lt;<ref refid="strategies_8hpp" kindref="compound">boost/geometry/strategies/strategies.hpp</ref>&gt;</highlight><highlight class="normal"></highlight></codeline>
28 <codeline><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&lt;boost/geometry/io/dsv/write.hpp&gt;</highlight><highlight class="normal"></highlight></codeline>
29 <codeline><highlight class="normal"></highlight></codeline>
30 <codeline><highlight class="normal"><ref refid="boost__tuple_8hpp_1ad912721c6dfdc38ab2cd6551c2436f97" kindref="member">BOOST_GEOMETRY_REGISTER_BOOST_TUPLE_CS</ref>(cs::cartesian)</highlight></codeline>
31 <codeline><highlight class="normal"></highlight></codeline>
32 <codeline><highlight class="normal"></highlight></codeline>
33 <codeline><highlight class="normal">template<sp/>&lt;typename<sp/>P&gt;</highlight></codeline>
34 <codeline><highlight class="normal">struct<sp/>triangle<sp/>:<sp/>public<sp/>boost::array&lt;P,<sp/>3&gt;</highlight></codeline>
35 <codeline><highlight class="normal">{</highlight></codeline>
36 <codeline><highlight class="normal">};</highlight></codeline>
37 <codeline><highlight class="normal"></highlight></codeline>
38 <codeline><highlight class="normal"></highlight></codeline>
39 <codeline><highlight class="normal"></highlight><highlight class="comment">//<sp/>Register<sp/>triangle&lt;P&gt;<sp/>as<sp/>a<sp/>ring</highlight><highlight class="normal"></highlight></codeline>
40 <codeline><highlight class="normal"><ref refid="group__register_1ga8a9071c3e9e9e0175250677a50e3fcc8" kindref="member">BOOST_GEOMETRY_REGISTER_RING_TEMPLATED</ref>(triangle)</highlight></codeline>
41 <codeline><highlight class="normal"></highlight></codeline>
42 <codeline><highlight class="normal"></highlight></codeline>
43 <codeline><highlight class="normal">namespace<sp/>boost<sp/>{<sp/></highlight><highlight class="keyword">namespace<sp/></highlight><highlight class="normal">geometry<sp/>{<sp/></highlight><highlight class="keyword">namespace<sp/></highlight><highlight class="normal">dispatch<sp/>{</highlight></codeline>
44 <codeline><highlight class="normal"></highlight></codeline>
45 <codeline><highlight class="normal"></highlight><highlight class="comment">//<sp/>Specializations<sp/>of<sp/>area<sp/>dispatch<sp/>structure,<sp/>implement<sp/>algorithm</highlight><highlight class="normal"></highlight></codeline>
46 <codeline><highlight class="normal"></highlight><highlight class="keyword">template</highlight><highlight class="normal">&lt;</highlight><highlight class="keyword">typename</highlight><highlight class="normal"><sp/>Po</highlight><highlight class="keywordtype">int</highlight><highlight class="normal">&gt;</highlight></codeline>
47 <codeline><highlight class="normal"></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal">area&lt;triangle&lt;Point&gt;,<sp/>ring_tag&gt;</highlight></codeline>
48 <codeline><highlight class="normal">{</highlight></codeline>
49 <codeline><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">template</highlight><highlight class="normal"><sp/>&lt;</highlight><highlight class="keyword">typename</highlight><highlight class="normal"><sp/>Strategy&gt;</highlight></codeline>
50 <codeline><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">static</highlight><highlight class="normal"><sp/></highlight><highlight class="keyword">inline</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">double</highlight><highlight class="normal"><sp/>apply(triangle&lt;Point&gt;<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal">&amp;<sp/>t,<sp/>Strategy<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal">&amp;)</highlight></codeline>
51 <codeline><highlight class="normal"><sp/><sp/><sp/><sp/>{</highlight></codeline>
52 <codeline><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>0.5<sp/><sp/>*<sp/>((get&lt;0&gt;(t[1])<sp/>-<sp/>get&lt;0&gt;(t[0]))<sp/>*<sp/>(get&lt;1&gt;(t[2])<sp/>-<sp/>get&lt;1&gt;(t[0]))</highlight></codeline>
53 <codeline><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>-<sp/>(get&lt;0&gt;(t[2])<sp/>-<sp/>get&lt;0&gt;(t[0]))<sp/>*<sp/>(get&lt;1&gt;(t[1])<sp/>-<sp/>get&lt;1&gt;(t[0])));</highlight></codeline>
54 <codeline><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
55 <codeline><highlight class="normal">};</highlight></codeline>
56 <codeline><highlight class="normal"></highlight></codeline>
57 <codeline><highlight class="normal">}}}<sp/></highlight><highlight class="comment">//<sp/>namespace<sp/>boost::geometry::dispatch</highlight><highlight class="normal"></highlight></codeline>
58 <codeline><highlight class="normal"></highlight></codeline>
59 <codeline><highlight class="normal"></highlight></codeline>
60 <codeline><highlight class="normal"></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>main()</highlight></codeline>
61 <codeline><highlight class="normal">{</highlight></codeline>
62 <codeline><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//triangle&lt;boost::geometry::point_xy&lt;double&gt;<sp/>&gt;<sp/>t;</highlight><highlight class="normal"></highlight></codeline>
63 <codeline><highlight class="normal"><sp/><sp/><sp/><sp/>triangle&lt;boost::tuple&lt;double,<sp/>double&gt;<sp/>&gt;<sp/>t;</highlight></codeline>
64 <codeline><highlight class="normal"><sp/><sp/><sp/><sp/>t[0]<sp/>=<sp/>boost::make_tuple(0,<sp/>0);</highlight></codeline>
65 <codeline><highlight class="normal"><sp/><sp/><sp/><sp/>t[1]<sp/>=<sp/>boost::make_tuple(5,<sp/>0);</highlight></codeline>
66 <codeline><highlight class="normal"><sp/><sp/><sp/><sp/>t[2]<sp/>=<sp/>boost::make_tuple(2.5,<sp/>2.5);</highlight></codeline>
67 <codeline><highlight class="normal"></highlight></codeline>
68 <codeline><highlight class="normal"><sp/><sp/><sp/><sp/>std::cout<sp/>&lt;&lt;<sp/></highlight><highlight class="stringliteral">&quot;Triangle:<sp/>&quot;</highlight><highlight class="normal"><sp/>&lt;&lt;<sp/>boost::geometry::dsv(t)<sp/>&lt;&lt;<sp/>std::endl;</highlight></codeline>
69 <codeline><highlight class="normal"><sp/><sp/><sp/><sp/>std::cout<sp/>&lt;&lt;<sp/></highlight><highlight class="stringliteral">&quot;Area:<sp/>&quot;</highlight><highlight class="normal"><sp/>&lt;&lt;<sp/><ref refid="group__area_1gaf7a1c34467f74f290d0b090adb27db62" kindref="member">boost::geometry::area</ref>(t)<sp/>&lt;&lt;<sp/>std::endl;</highlight></codeline>
70 <codeline><highlight class="normal"></highlight></codeline>
71 <codeline><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//boost::geometry::point_xy&lt;double&gt;<sp/>c;</highlight><highlight class="normal"></highlight></codeline>
72 <codeline><highlight class="normal"><sp/><sp/><sp/><sp/>boost::tuple&lt;double,<sp/>double&gt;<sp/>c;</highlight></codeline>
73 <codeline><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="group__centroid_1ga3ec2c5e245c42ffaf28f1c88ea564c8c" kindref="member">boost::geometry::centroid</ref>(t,<sp/>c);</highlight></codeline>
74 <codeline><highlight class="normal"><sp/><sp/><sp/><sp/>std::cout<sp/>&lt;&lt;<sp/></highlight><highlight class="stringliteral">&quot;Centroid:<sp/>&quot;</highlight><highlight class="normal"><sp/>&lt;&lt;<sp/>boost::geometry::dsv(c)<sp/>&lt;&lt;<sp/>std::endl;</highlight></codeline>
75 <codeline><highlight class="normal"></highlight></codeline>
76 <codeline><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>0;</highlight></codeline>
77 <codeline><highlight class="normal">}</highlight></codeline>
78 </programlisting> </para>    </detaileddescription>
79   </compounddef>
80 </doxygen>