PageRenderTime 18ms CodeModel.GetById 2ms app.highlight 12ms RepoModel.GetById 1ms app.codeStats 0ms

/Src/Dependencies/Boost/libs/geometry/doc/src/examples/algorithms/distance.cpp

http://hadesmem.googlecode.com/
C++ | 68 lines | 33 code | 16 blank | 19 comment | 0 complexity | b02588244b8702a75bad422161fd4e03 MD5 | raw file
 1// Boost.Geometry (aka GGL, Generic Geometry Library)
 2// QuickBook Example
 3
 4// Copyright (c) 2011 Barend Gehrels, Amsterdam, the Netherlands.
 5
 6// Use, modification and distribution is subject to the Boost Software License,
 7// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
 8// http://www.boost.org/LICENSE_1_0.txt)
 9
10//[distance
11//` Shows calculation of distance of point to some other geometries
12
13#include <iostream>
14#include <list>
15
16#include <boost/geometry.hpp>
17#include <boost/geometry/geometries/linestring.hpp>
18#include <boost/geometry/geometries/point_xy.hpp>
19#include <boost/geometry/geometries/polygon.hpp>
20#include <boost/geometry/multi/geometries/multi_point.hpp>
21#include <boost/geometry/multi/geometries/multi_polygon.hpp>
22
23#include <boost/geometry/domains/gis/io/wkt/wkt.hpp>
24
25#include <boost/foreach.hpp>
26
27int main()
28{
29    typedef boost::geometry::model::d2::point_xy<double> point_type;
30    typedef boost::geometry::model::polygon<point_type> polygon_type;
31    typedef boost::geometry::model::linestring<point_type> linestring_type;
32    typedef boost::geometry::model::multi_point<point_type> multi_point_type;
33
34    point_type p(1,2);
35    polygon_type poly;
36    linestring_type line;
37    multi_point_type mp;
38
39    boost::geometry::read_wkt(
40        "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)"
41            "(4.0 2.0, 4.2 1.4, 4.8 1.9, 4.4 2.2, 4.0 2.0))", poly);
42    line.push_back(point_type(0,0));
43    line.push_back(point_type(0,3));
44    mp.push_back(point_type(0,0));
45    mp.push_back(point_type(3,3));
46
47    std::cout 
48        << "Point-Poly: " << boost::geometry::distance(p, poly) << std::endl
49        << "Point-Line: " << boost::geometry::distance(p, line) << std::endl
50        << "Point-MultiPoint: " << boost::geometry::distance(p, mp) << std::endl;
51
52    return 0;
53}
54
55//]
56
57
58//[distance_output
59/*`
60Output:
61[pre
62Point-Poly: 1.22066
63Point-Line: 1
64Point-MultiPoint: 2.23607
65]
66*/
67//]
68