mirror of https://github.com/CGAL/cgal
Use extended Kd_tree information also for search / search_any_point.
Note that we don't want to use set_upper_bound, because it calls set_max_span, which the current split already avoids. Also fix Kd_tree_rectangle::lower() with fixed dimension.
This commit is contained in:
parent
482b0bc073
commit
cfd4e92153
|
|
@ -203,8 +203,7 @@ namespace CGAL {
|
|||
static_cast<Internal_node_const_handle>(this);
|
||||
// after splitting b denotes the lower part of b
|
||||
Kd_tree_rectangle<FT,D> b_upper(b);
|
||||
b.split(b_upper, node->cutting_dimension(),
|
||||
node->cutting_value());
|
||||
node->split_bbox(b, b_upper);
|
||||
|
||||
if (q.outer_range_contains(b))
|
||||
it=node->lower()->tree_items(it);
|
||||
|
|
@ -240,8 +239,7 @@ namespace CGAL {
|
|||
static_cast<Internal_node_const_handle>(this);
|
||||
// after splitting b denotes the lower part of b
|
||||
Kd_tree_rectangle<FT,D> b_upper(b);
|
||||
b.split(b_upper, node->cutting_dimension(),
|
||||
node->cutting_value());
|
||||
node->split_bbox(b, b_upper);
|
||||
|
||||
if (q.outer_range_contains(b)){
|
||||
result = node->lower()->any_tree_item();
|
||||
|
|
@ -342,6 +340,7 @@ namespace CGAL {
|
|||
|
||||
typedef typename TreeTraits::FT FT;
|
||||
typedef typename Kd_tree<TreeTraits,Splitter,UseExtendedNode>::Separator Separator;
|
||||
typedef typename Kd_tree<TreeTraits,Splitter,UseExtendedNode>::D D;
|
||||
|
||||
private:
|
||||
|
||||
|
|
@ -470,7 +469,12 @@ namespace CGAL {
|
|||
return Separator(cutting_dimension,cutting_value);
|
||||
}*/
|
||||
|
||||
|
||||
void split_bbox(Kd_tree_rectangle<FT,D>& l, Kd_tree_rectangle<FT,D>& u) const {
|
||||
l.lower()[cut_dim]=lower_low_val;
|
||||
l.upper()[cut_dim]=lower_high_val;
|
||||
u.lower()[cut_dim]=upper_low_val;
|
||||
u.upper()[cut_dim]=upper_high_val;
|
||||
}
|
||||
};//internal node
|
||||
|
||||
template < class TreeTraits, class Splitter>
|
||||
|
|
@ -484,6 +488,7 @@ namespace CGAL {
|
|||
|
||||
typedef typename TreeTraits::FT FT;
|
||||
typedef typename Kd_tree<TreeTraits,Splitter,Tag_false>::Separator Separator;
|
||||
typedef typename Kd_tree<TreeTraits,Splitter,Tag_false>::D D;
|
||||
|
||||
private:
|
||||
|
||||
|
|
@ -577,7 +582,10 @@ namespace CGAL {
|
|||
return Separator(cutting_dimension,cutting_value);
|
||||
}*/
|
||||
|
||||
|
||||
void split_bbox(Kd_tree_rectangle<FT,D>& l, Kd_tree_rectangle<FT,D>& u) const {
|
||||
l.upper()[cut_dim]=cut_val;
|
||||
u.lower()[cut_dim]=cut_val;
|
||||
}
|
||||
};//internal node
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -213,8 +213,10 @@ namespace CGAL {
|
|||
return D::value;
|
||||
}
|
||||
|
||||
const T* lower() const {return lower_;}
|
||||
const T* upper() const {return upper_;}
|
||||
T* lower() {return lower_.data();}
|
||||
T* upper() {return upper_.data();}
|
||||
const T* lower() const {return lower_.data();}
|
||||
const T* upper() const {return upper_.data();}
|
||||
|
||||
Kd_tree_rectangle&
|
||||
operator=(const Kd_tree_rectangle& r)
|
||||
|
|
|
|||
Loading…
Reference in New Issue