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>
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.
AxisParallelProjVector defines an axis-parallel projection vector.
FirstShim< T > CreateNVP(T &t, const std::string &name, typename boost::enable_if< HasSerialize< T >>::type *=0)
Call this function to produce a name-value pair; this is similar to BOOST_SERIALIZATION_NVP(), but should be used for types that have a Serialize() function (or contain a type that has a Serialize() function) instead of a serialize() function.
The core includes that mlpack expects; standard C++ includes and Armadillo.
double Project(const VecType &point, typename boost::enable_if< IsVector< VecType > >::type *=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...
void Serialize(Archive &ar, const unsigned int)
Serialization.
ProjVector defines a general projection vector (not necessarily axis-parallel).
bool Right(const VecType &point, typename boost::enable_if< IsVector< VecType > >::type *=0) const
Determine if the given point is to the right of the hyperplane, this means if the projection over the...
bool Left(const VecType &point, typename boost::enable_if< IsVector< VecType > >::type *=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.