Make cg::kdtree::closest const & add cg::kdtree::clear & assign
This commit is contained in:
parent
97c9d79a5a
commit
28a4d9ccb0
1 changed files with 21 additions and 2 deletions
|
|
@ -77,6 +77,9 @@ namespace psemek::cg
|
||||||
template <typename Iterator>
|
template <typename Iterator>
|
||||||
kdtree(Iterator begin, Iterator end);
|
kdtree(Iterator begin, Iterator end);
|
||||||
|
|
||||||
|
template <typename Iterator>
|
||||||
|
void assign(Iterator begin, Iterator end);
|
||||||
|
|
||||||
bool empty() const { return nodes_.empty(); }
|
bool empty() const { return nodes_.empty(); }
|
||||||
|
|
||||||
bool insert(value_type && value);
|
bool insert(value_type && value);
|
||||||
|
|
@ -84,11 +87,13 @@ namespace psemek::cg
|
||||||
// TODO: implement
|
// TODO: implement
|
||||||
bool remove(point_type const & point) const;
|
bool remove(point_type const & point) const;
|
||||||
|
|
||||||
|
void clear();
|
||||||
|
|
||||||
// TODO: implement
|
// TODO: implement
|
||||||
// TODO: alternative non-const version that allows modifying value.data
|
// TODO: alternative non-const version that allows modifying value.data
|
||||||
value_type const * find(point_type const & point) const;
|
value_type const * find(point_type const & point) const;
|
||||||
|
|
||||||
value_type const & closest(point_type const & target);
|
value_type const & closest(point_type const & target) const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
|
|
@ -125,6 +130,14 @@ namespace psemek::cg
|
||||||
build_node_impl(begin, end, 0);
|
build_node_impl(begin, end, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <typename T, std::size_t N, typename Data>
|
||||||
|
template <typename Iterator>
|
||||||
|
void kdtree<T, N, Data>::assign(Iterator begin, Iterator end)
|
||||||
|
{
|
||||||
|
clear();
|
||||||
|
build_node_impl(begin, end, 0);
|
||||||
|
}
|
||||||
|
|
||||||
template <typename T, std::size_t N, typename Data>
|
template <typename T, std::size_t N, typename Data>
|
||||||
bool kdtree<T, N, Data>::insert(value_type && value)
|
bool kdtree<T, N, Data>::insert(value_type && value)
|
||||||
{
|
{
|
||||||
|
|
@ -132,7 +145,13 @@ namespace psemek::cg
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename T, std::size_t N, typename Data>
|
template <typename T, std::size_t N, typename Data>
|
||||||
kdtree<T, N, Data>::value_type const & kdtree<T, N, Data>::closest(point_type const & target)
|
void kdtree<T, N, Data>::clear()
|
||||||
|
{
|
||||||
|
nodes_.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T, std::size_t N, typename Data>
|
||||||
|
kdtree<T, N, Data>::value_type const & kdtree<T, N, Data>::closest(point_type const & target) const
|
||||||
{
|
{
|
||||||
if (nodes_.empty())
|
if (nodes_.empty())
|
||||||
throw util::exception("empty kdtree");
|
throw util::exception("empty kdtree");
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue