Déjame ver si entendí esto correctamente:
Sus restricciones son un desplazamiento dado y una relación máx. / mín., y su ola tiene algunos valores originales mínimos (m) y máximos (M), que desea escalar + desplazamiento para cumplir las restricciones.
Si ese es el caso, simplemente puede escalar con respecto al mínimo y luego compensar.
Cualquier punto en su ola se escalará con respecto al mínimo y la compensación:
$$ y = scale \ cdot (x-m) + m + offset $$
Se proporciona el desplazamiento, solo necesitas la escala:
$$ ratio = \ frac {max} {min} = \ frac {scale \ cdot (M-m) + m + offset} {scale \ cdot (m-m) + m + offset} $$
Solo necesitas resolver la escala en la ecuación anterior.
Otro método sería escalar con respecto a cero o rango medio, y luego aplicar el desplazamiento. Simplemente no estoy seguro de lo que requiere tu aplicación.
Si escala con respecto a cero, las ecuaciones anteriores se reducen a:
$$ y = scale \ cdot x + offset $$
$$ ratio = \ frac {max} {min} = \ frac {scale \ cdot M + offset} {scale \ cdot m + offset} $$