From 642ccefe86f51248b192e086a61ca665bbca3cfc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Nusser?= Date: Sat, 25 Apr 2020 16:22:50 +0200 Subject: Avoid jumps of the function for avoiding monotonicity. --- src/powermap.cc | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/powermap.cc b/src/powermap.cc index e2d1bef..dff604f 100644 --- a/src/powermap.cc +++ b/src/powermap.cc @@ -208,10 +208,20 @@ void Powermap::updateSpline() } else { auto const a2b2 = alpha*alpha + beta*beta; - if (a2b2 > 9) { + + // hard change to enforce monotonicity + // if (a2b2 > 9) { + // auto const tau = 3./sqrt(a2b2); + // m[i] = tau*alpha*deltas[i]; + // m[i+1] = tau*alpha*deltas[i]; + // } + + // soft change to enforce monotonicity + if (a2b2 >= 4.5) { + auto const l = std::min(1., (a2b2-4.5)/4.5); auto const tau = 3./sqrt(a2b2); - m[i] = tau*alpha*deltas[i]; - m[i+1] = tau*alpha*deltas[i]; + m[i] = (1-l)*m[i] + l*tau*alpha*deltas[i]; + m[i+1] = (1-l)*m[i+1] + l*tau*alpha*deltas[i]; } } } -- cgit v1.2.3