30 #include "../WLimits.h"
35 std::pair< double, double > dXt_optimized(
double thresholdSquare,
const WFiber &q,
const WFiber &r )
37 const size_t qsize = q.
size();
38 const size_t rsize = r.
size();
43 std::vector< std::vector< double > > m( qsize, std::vector< double >( rsize, 0.0 ) );
47 for(
size_t i = 0; i < qsize; ++i )
50 for(
size_t j = 0; j < rsize; ++j )
52 m[i][j] = length2( q[i] - r[j] );
57 for(
size_t i = 0; i < qsize; ++i )
59 minSoFar = *( std::min_element( m[i].begin(), m[i].end() ) );
61 if( minSoFar > thresholdSquare )
63 qr += std::sqrt( minSoFar );
68 for(
size_t j = 0; j < rsize; ++j )
71 for(
size_t i = 0; i < qsize; ++i )
73 if( m[i][j] < minSoFar )
78 if( minSoFar > thresholdSquare )
80 rq += std::sqrt( minSoFar );
84 return std::make_pair( qr, rq );
100 std::pair< double, double > result = ::dXt_optimized( thresholdSquare, q, r );
101 return std::min( result.first, result.second );
106 std::pair< double, double > result = ::dXt_optimized( thresholdSquare, q, r );
107 return std::max( result.first, result.second );
Represents a neural pathway.
WFiber()
Creates an empty fiber.
static double distDLT(double thresholdSquare, const WFiber &q, const WFiber &r)
This is the Larger thresholded distance as described by Zhang: http://dx.doi.org/10....
static double distDST(double thresholdSquare, const WFiber &q, const WFiber &r)
This is the Smaller thresholded distance as described by Zhang: http://dx.doi.org/10....
A line is an ordered sequence of WPositions.
size_type size() const
Wrapper around std::vector member function.
const double MAX_DOUBLE
Maximum double value.