Search a grid for maxima (global or local) along one direction only. More...
#include <DirectionalSearch.h>
Public Member Functions | |
DirectionalSearch () | |
double | globalMax () |
Function2MaximaIterator | localMax (int nMax, double absThres=0.0, double relThres=0.0) |
void | setAbsolutePrecision (double p) |
void | setAzimuth (double azimuth) |
void | setFunction (AbstractFunction2 *f) |
void | setGrid (double minR, double maxR, double dR) |
void | setRelativePrecision (double p) |
double | value (double r) const |
~DirectionalSearch () | |
Protected Attributes | |
double | _cx |
int | _nr |
double | _precision |
double * | _r |
double | _sy |
Search a grid for maxima (global or local) along one direction only.
Full description of class still missing
Description of constructor still missing
References _nr, _precision, _r, and TRACE.
{ TRACE; _precision=0.001; _nr=0; _r=0; }
double QGpCoreTools::DirectionalSearch::globalMax | ( | ) |
Search current azimuth for its maximum and refine it
References _cx, QGpCoreTools::Function2Search::_function, _nr, _r, _sy, QGpCoreTools::Function2Search::highLimit(), QGpCoreTools::Function2Search::lowLimit(), TRACE, and QGpCoreTools::AbstractFunction2::value().
Function2MaximaIterator QGpCoreTools::DirectionalSearch::localMax | ( | int | nMax, |
double | absThres = 0.0 , |
||
double | relThres = 0.0 |
||
) |
Reimplemented from QGpCoreTools::Function2Search.
References _cx, QGpCoreTools::Function2Search::_function, QGpCoreTools::Function2Search::_localMaxima, _nr, QGpCoreTools::Function2Search::_pos, _r, _sy, TRACE, and QGpCoreTools::AbstractFunction2::value().
{ TRACE; double * map=new double [_nr]; for(int i=0; i<_nr; i++) { map[i]=_function->value(_cx*_r[i],_sy*_r[i]); } _localMaxima.clear(); int nm=_nr-1; for(int i=1;i<nm;i++) { if(map[i-1]>0 && map[i]>map[i-1] && map[i+1]>0 && map[i]>map[i+1]) { double val=refineMax(_r[i-1], _r[i+1]); _localMaxima.append(Function2SearchMaximum(val, _pos)); } } delete [] map; return Function2Search::localMax(nMax, absThres, relThres); }
void QGpCoreTools::DirectionalSearch::setAbsolutePrecision | ( | double | p | ) | [inline] |
{_precision=p; _relative=false;}
void QGpCoreTools::DirectionalSearch::setAzimuth | ( | double | azimuth | ) |
Set current azimuth of search
References _cx, _sy, QGpCoreTools::cos(), QGpCoreTools::sin(), and TRACE.
Referenced by LinearFKPassiveLoopTask::setGrid().
void QGpCoreTools::DirectionalSearch::setFunction | ( | AbstractFunction2 * | f | ) | [inline] |
Set current function. Ownership is transfered to this object. To get it back you must call takeFunction().
Reimplemented from QGpCoreTools::Function2Search.
{_function=f;}
void QGpCoreTools::DirectionalSearch::setGrid | ( | double | minR, |
double | maxR, | ||
double | dR | ||
) |
Init sampling in radius. setFunction() must be called before.
References _cx, QGpCoreTools::Function2Search::_function, _nr, _r, _sy, QGpCoreTools::AbstractFunction2::initGrid(), and TRACE.
void QGpCoreTools::DirectionalSearch::setRelativePrecision | ( | double | p | ) | [inline] |
Referenced by LinearFKSearch::LinearFKSearch().
{_precision=p; _relative=true;}
double QGpCoreTools::DirectionalSearch::value | ( | double | r | ) | const [inline] |
double QGpCoreTools::DirectionalSearch::_cx [protected] |
Referenced by globalMax(), localMax(), setAzimuth(), and setGrid().
int QGpCoreTools::DirectionalSearch::_nr [protected] |
Referenced by DirectionalSearch(), globalMax(), localMax(), and setGrid().
double QGpCoreTools::DirectionalSearch::_precision [protected] |
Referenced by DirectionalSearch().
double* QGpCoreTools::DirectionalSearch::_r [protected] |
Referenced by DirectionalSearch(), globalMax(), localMax(), setGrid(), and ~DirectionalSearch().
double QGpCoreTools::DirectionalSearch::_sy [protected] |
Referenced by globalMax(), localMax(), setAzimuth(), and setGrid().