Improved trackers

This commit is contained in:
2022-07-11 15:12:32 +02:00
parent 257c884355
commit c09c6258b4
2 changed files with 18 additions and 11 deletions
+18 -10
View File
@@ -10,12 +10,11 @@ namespace Metrics
{
Tracker::Tracker(RealScalar rho, RealScalar smoothness)
: m_mags(NUM_QUADRRANTS)
, m_rho(rho)
: m_rho(rho)
, m_smoothness(smoothness)
, m_trackers(NUM_QUADRRANTS)
{
m_mags = 0;
reset();
}
Tracker::~Tracker()
@@ -24,8 +23,12 @@ Tracker::~Tracker()
void Tracker::reset()
{
m_mags = 0;
m_trackers = 0;
CVec initVals = {ComplexScalar(-0.5,-0.5), ComplexScalar(+0.5,-0.5), ComplexScalar(-0.5,+0.5), ComplexScalar(+0.5,+0.5)};
for (auto v : initVals)
{
m_trackers[getQuadrant(v)] = v;
}
}
CVec Tracker::trackers() const
@@ -36,13 +39,18 @@ CVec Tracker::trackers() const
void Tracker::process(ComplexScalar const &x)
{
size_t qu = getQuadrant(x);
m_mags *= m_rho;
RealScalar mag = abs(x);
if (mag > m_mags[qu])
ComplexScalar diff = x - m_trackers[qu];
RealScalar dist = abs(diff);
RealScalar weight = exp(-16*dist);
if (abs(x) > abs(m_trackers[qu]))
{
m_mags[qu] = mag;
m_trackers[qu] = m_smoothness*x + (RealScalar(1.0)-m_smoothness)*m_trackers[qu];
m_trackers[qu] = m_smoothness*x + (RealScalar(1)-m_smoothness)*m_trackers[qu];
}
else
{
m_trackers[qu] += RealScalar(0.5)*weight*diff;
}
}
-1
View File
@@ -21,7 +21,6 @@ public:
CVec trackers() const;
void reset();
private:
RVec m_mags;
RealScalar m_rho;
RealScalar m_smoothness;