summaryrefslogtreecommitdiff
path: root/libs/geometry/doc/src/examples/algorithms/comparable_distance.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libs/geometry/doc/src/examples/algorithms/comparable_distance.cpp')
-rw-r--r--libs/geometry/doc/src/examples/algorithms/comparable_distance.cpp67
1 files changed, 67 insertions, 0 deletions
diff --git a/libs/geometry/doc/src/examples/algorithms/comparable_distance.cpp b/libs/geometry/doc/src/examples/algorithms/comparable_distance.cpp
new file mode 100644
index 000000000..87b5100ce
--- /dev/null
+++ b/libs/geometry/doc/src/examples/algorithms/comparable_distance.cpp
@@ -0,0 +1,67 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// QuickBook Example
+
+// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
+
+// Use, modification and distribution is subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+//[comparable_distance
+//` Shows how to efficiently get the closest point
+
+#include <iostream>
+
+#include <boost/geometry.hpp>
+#include <boost/geometry/geometries/point_xy.hpp>
+
+#include <boost/numeric/conversion/bounds.hpp>
+#include <boost/foreach.hpp>
+
+int main()
+{
+ typedef boost::geometry::model::d2::point_xy<double> point_type;
+
+ point_type p(1.4, 2.6);
+
+ std::vector<point_type> v;
+ for (double x = 0.0; x <= 4.0; x++)
+ {
+ for (double y = 0.0; y <= 4.0; y++)
+ {
+ v.push_back(point_type(x, y));
+ }
+ }
+
+ point_type min_p;
+ double min_d = boost::numeric::bounds<double>::highest();
+ BOOST_FOREACH(point_type const& pv, v)
+ {
+ double d = boost::geometry::comparable_distance(p, pv);
+ if (d < min_d)
+ {
+ min_d = d;
+ min_p = pv;
+ }
+ }
+
+ std::cout
+ << "Closest: " << boost::geometry::dsv(min_p) << std::endl
+ << "At: " << boost::geometry::distance(p, min_p) << std::endl;
+
+ return 0;
+}
+
+//]
+
+
+//[comparable_distance_output
+/*`
+Output:
+[pre
+Closest: (1, 3)
+At: 0.565685
+]
+*/
+//]
+