diff options
author | wanglu <wang_lu@dl.cn.nexty-ele.com> | 2019-03-25 09:42:49 +0800 |
---|---|---|
committer | wanglu <wang_lu@dl.cn.nexty-ele.com> | 2019-03-25 09:52:02 +0800 |
commit | 4a8b7a6301e4b093c99329d0a16fbee6c535f312 (patch) | |
tree | fe9f589e1723e8f173b50dfa617374042f4cf7a7 /include/mapbox/geometry/envelope.hpp | |
parent | fb539bbd9f7b36d26cd56fe09b804e18b3b3d984 (diff) |
This is a application for display turn by run navigation information.halibut_8.0.0halibut_7.99.3halibut_7.99.2halibut_7.99.1halibut/8.0.0halibut/7.99.3halibut/7.99.2halibut/7.99.18.0.07.99.37.99.27.99.1
Change-Id: I0866a7d9ffa347c0935b4d00259ad1a74cd00d6e
Signed-off-by: wanglu <wang_lu@dl.cn.nexty-ele.com>
Diffstat (limited to 'include/mapbox/geometry/envelope.hpp')
-rw-r--r-- | include/mapbox/geometry/envelope.hpp | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/include/mapbox/geometry/envelope.hpp b/include/mapbox/geometry/envelope.hpp new file mode 100644 index 0000000..8603583 --- /dev/null +++ b/include/mapbox/geometry/envelope.hpp @@ -0,0 +1,33 @@ +#pragma once + +#include <mapbox/geometry/box.hpp> +#include <mapbox/geometry/for_each_point.hpp> + +#include <limits> + +namespace mapbox { +namespace geometry { + +template <typename G, typename T = typename G::coordinate_type> +box<T> envelope(G const& geometry) +{ + using limits = std::numeric_limits<T>; + + T min_t = limits::has_infinity ? -limits::infinity() : limits::min(); + T max_t = limits::has_infinity ? limits::infinity() : limits::max(); + + point<T> min(max_t, max_t); + point<T> max(min_t, min_t); + + for_each_point(geometry, [&] (point<T> const& point) { + if (min.x > point.x) min.x = point.x; + if (min.y > point.y) min.y = point.y; + if (max.x < point.x) max.x = point.x; + if (max.y < point.y) max.y = point.y; + }); + + return box<T>(min, max); +} + +} // namespace geometry +} // namespace mapbox |