12 #ifndef MLPACK_CORE_TREE_SPILL_TREE_HYPERPLANE_HPP
13 #define MLPACK_CORE_TREE_SPILL_TREE_HYPERPLANE_HPP
29 template<
typename BoundT,
typename ProjVectorT>
70 template<
typename VecType>
74 if (splitVal == DBL_MAX)
76 return projVect.Project(point) - splitVal;
85 template<
typename VecType>
86 bool Left(
const VecType& point,
98 template<
typename VecType>
99 bool Right(
const VecType& point,
112 if (splitVal == DBL_MAX)
114 return projVect.Project(bound).Hi() <= splitVal;
124 if (splitVal == DBL_MAX)
126 return projVect.Project(bound).Lo() > splitVal;
132 template<
typename Archive>
135 ar & BOOST_SERIALIZATION_NVP(projVect);
136 ar & BOOST_SERIALIZATION_NVP(splitVal);
143 template<
typename MetricType>
150 template<
typename MetricType>
HyperplaneBase()
Empty Constructor.
HyperplaneBase< bound::HRectBound< MetricType >, AxisParallelProjVector > AxisOrthogonalHyperplane
AxisOrthogonalHyperplane represents a hyperplane orthogonal to an axis.
typename enable_if< B, T >::type enable_if_t
AxisParallelProjVector defines an axis-parallel projection vector.
The core includes that mlpack expects; standard C++ includes and Armadillo.
double Project(const VecType &point, typename std::enable_if_t< IsVector< VecType >::value > *=0) const
Project the given point on the projection vector and subtract the split value.
HyperplaneBase defines a splitting hyperplane based on a projection vector and projection value...
ProjVector defines a general projection vector (not necessarily axis-parallel).
bool Left(const VecType &point, typename std::enable_if_t< IsVector< VecType >::value > *=0) const
Determine if the given point is to the left of the hyperplane, this means if the projection over the ...
ProjVectorT ProjVectorType
Useful typedef for the projection vector type.
bool Left(const BoundType &bound) const
Determine if the given bound is to the left of the hyperplane.
BoundT BoundType
Useful typedef for the bound type.
HyperplaneBase(const ProjVectorType &projVect, double splitVal)
Create the hyperplane with the specified projection vector and split value.
bool Right(const BoundType &bound) const
Determine if the given bound is to the right of the hyperplane.
If value == true, then VecType is some sort of Armadillo vector or subview.
bool Right(const VecType &point, typename std::enable_if_t< IsVector< VecType >::value > *=0) const
Determine if the given point is to the right of the hyperplane, this means if the projection over the...
void serialize(Archive &ar, const unsigned int)
Serialization.