mirror of
https://github.com/boostorg/geometry.git
synced 2025-05-09 23:24:02 +00:00
[index] Fix msvc warning and refactor the code
This commit is contained in:
parent
4241b6a777
commit
947dca1562
@ -2,7 +2,7 @@
|
||||
//
|
||||
// R-tree initial packing
|
||||
//
|
||||
// Copyright (c) 2011-2017 Adam Wulkiewicz, Lodz, Poland.
|
||||
// Copyright (c) 2011-2022 Adam Wulkiewicz, Lodz, Poland.
|
||||
// Copyright (c) 2020 Caian Benedicto, Campinas, Brazil.
|
||||
//
|
||||
// This file was modified by Oracle on 2019-2021.
|
||||
@ -75,23 +75,28 @@ template <std::size_t I, std::size_t Dimension>
|
||||
struct nth_element_and_half_boxes
|
||||
{
|
||||
template <typename EIt, typename Box>
|
||||
static inline void apply(EIt first, EIt median, EIt last, Box const& box, Box & left, Box & right, std::size_t dim_index)
|
||||
static inline void apply(EIt first, EIt median, EIt last, Box const& box,
|
||||
Box & left, Box & right, std::size_t dim_index)
|
||||
{
|
||||
if ( I == dim_index )
|
||||
if (I == dim_index)
|
||||
{
|
||||
index::detail::nth_element(first, median, last, point_entries_comparer<I>());
|
||||
|
||||
geometry::convert(box, left);
|
||||
geometry::convert(box, right);
|
||||
typename coordinate_type<Box>::type edge_len
|
||||
= geometry::get<max_corner, I>(box) - geometry::get<min_corner, I>(box);
|
||||
typename coordinate_type<Box>::type median
|
||||
= geometry::get<min_corner, I>(box) + edge_len / 2;
|
||||
geometry::set<max_corner, I>(left, median);
|
||||
geometry::set<min_corner, I>(right, median);
|
||||
auto const mi = geometry::get<min_corner, I>(box);
|
||||
auto const ma = geometry::get<max_corner, I>(box);
|
||||
auto const center = mi + (ma - mi) / 2;
|
||||
geometry::set<max_corner, I>(left, center);
|
||||
geometry::set<min_corner, I>(right, center);
|
||||
}
|
||||
else
|
||||
nth_element_and_half_boxes<I+1, Dimension>::apply(first, median, last, box, left, right, dim_index);
|
||||
{
|
||||
nth_element_and_half_boxes
|
||||
<
|
||||
I + 1, Dimension
|
||||
>::apply(first, median, last, box, left, right, dim_index);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user