template<class Traits>
eckit::KDNode class

Base classes

template<class Traits, class NodeType>
class SPNode<Traits, KDNode<Traits>>

Public types

using SPNodeType = SPNode<Traits, KDNode<Traits>>
using Value = SPNodeType::Value
using Alloc = SPNodeType::Alloc
using Point = SPNodeType::Point
using NodeList = SPNodeType::NodeList
using NodeQueue = SPNodeType::NodeQueue
using NodeInfo = SPNodeType::NodeInfo
using Node = KDNode<Traits>
using Payload = Traits::Payload

Public static functions

template<typename ITER>
static auto build(Alloc& a, const ITER& begin, const ITER& end, int depth = 0) -> KDNode*
static auto insert(Alloc& a, const Value& value, KDNode<Traits>* node, int depth = 0) -> KDNode<Traits>*

Constructors, destructors, conversion operators

KDNode(const Value& value, size_t axis)
~KDNode()

Public functions

auto axis() const -> size_t
Return the axis along which this node is split.
void nearestNeighbourX(Alloc& a, const Point& p, Node*& best, double& max, int depth)
void findInSphereX(Alloc& a, const Point& p, double radius, NodeList& result, int depth)
void kNearestNeighboursX(Alloc& a, const Point& p, size_t k, NodeQueue& result, int depth)
auto nearestNeighbour(Alloc& a, const Point& p) -> NodeInfo
auto findInSphere(Alloc& a, const Point& p, double radius) -> NodeList
auto kNearestNeighbours(Alloc& a, const Point& p, size_t k) -> NodeList
auto point() const -> const Point&
auto payload() const -> const Payload&
auto value() -> Value&
auto value() const -> const Value&
auto nearestNeighbourBruteForce(Alloc& a, const Point& p) -> NodeInfo
auto findInSphereBruteForce(Alloc& a, const Point& p, double radius) -> NodeList
auto kNearestNeighboursBruteForce(Alloc& a, const Point& p, size_t k) -> NodeList
void visit(Alloc& a, Visitor& v, int depth = 0)
void linkNodes(Alloc& a, Node*& prev = 0)
auto asNode() const -> const Node*
auto asNode() -> Node*
void nearestNeighbourBruteForceX(Alloc& a, const Point& p, Node*& best, double& max, int depth)
void findInSphereBruteForceX(Alloc& a, const Point& p, double radius, NodeList& result, int depth)
void kNearestNeighboursBruteForceX(Alloc& a, const Point& p, size_t k, NodeQueue& result, int depth)
auto left(Alloc& a) const -> Node*
void left(Alloc& a, Node* n)
auto right(Alloc& a) const -> Node*
void right(Alloc& a, Node* n)
auto next(Alloc& a) const -> Node*
void next(Alloc& a, Node* n)

Typedef documentation

template<class Traits>
typedef Traits::Payload eckit::KDNode<Traits>::Payload

Function documentation

template<class Traits>
NodeInfo eckit::KDNode<Traits>::nearestNeighbour(Alloc& a, const Point& p)

template<class Traits>
NodeList eckit::KDNode<Traits>::findInSphere(Alloc& a, const Point& p, double radius)

template<class Traits>
NodeList eckit::KDNode<Traits>::kNearestNeighbours(Alloc& a, const Point& p, size_t k)

template<class Traits>
const Point& eckit::KDNode<Traits>::point() const

template<class Traits>
const Payload& eckit::KDNode<Traits>::payload() const

template<class Traits>
Value& eckit::KDNode<Traits>::value()

template<class Traits>
const Value& eckit::KDNode<Traits>::value() const

template<class Traits>
NodeInfo eckit::KDNode<Traits>::nearestNeighbourBruteForce(Alloc& a, const Point& p)

template<class Traits>
NodeList eckit::KDNode<Traits>::findInSphereBruteForce(Alloc& a, const Point& p, double radius)

template<class Traits>
NodeList eckit::KDNode<Traits>::kNearestNeighboursBruteForce(Alloc& a, const Point& p, size_t k)

template<class Traits>
void eckit::KDNode<Traits>::visit(Alloc& a, Visitor& v, int depth = 0)

template<class Traits>
void eckit::KDNode<Traits>::linkNodes(Alloc& a, Node*& prev = 0)

template<class Traits>
const Node* eckit::KDNode<Traits>::asNode() const

template<class Traits>
Node* eckit::KDNode<Traits>::asNode()

template<class Traits>
void eckit::KDNode<Traits>::nearestNeighbourBruteForceX(Alloc& a, const Point& p, Node*& best, double& max, int depth)

template<class Traits>
void eckit::KDNode<Traits>::findInSphereBruteForceX(Alloc& a, const Point& p, double radius, NodeList& result, int depth)

template<class Traits>
void eckit::KDNode<Traits>::kNearestNeighboursBruteForceX(Alloc& a, const Point& p, size_t k, NodeQueue& result, int depth)

template<class Traits>
Node* eckit::KDNode<Traits>::left(Alloc& a) const

template<class Traits>
void eckit::KDNode<Traits>::left(Alloc& a, Node* n)

template<class Traits>
Node* eckit::KDNode<Traits>::right(Alloc& a) const

template<class Traits>
void eckit::KDNode<Traits>::right(Alloc& a, Node* n)

template<class Traits>
Node* eckit::KDNode<Traits>::next(Alloc& a) const

template<class Traits>
void eckit::KDNode<Traits>::next(Alloc& a, Node* n)