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