[Math] Simple function for damping (programming)

logarithms

I'm programming a game and am looking to create a non-linear relationship between input and output, such that as the input increases, the output increases, but the higher the input value, the corresponding output increment is less and less.

I've looked at logarithms, and that seems to be the effect I'm looking at.

o = log(i), where o is the output value and i is the input value.

But this is too extreme – the curve is too steep. If I try to modify this with

o = log(i)k, where k is some constant multiplier, creates too steep of a curve in the lower end.

I'd like to find a way to make the falloff more gradual. Unfortunately, I can't seem to find any other functions in my programming language (ActionScript 3) that will do the trick.

Where should I be looking? Are there any functions I should be trying to replicate?

Thanks in advance – I realize this is a pure maths forum, but it seemed like the best place to ask.

Best Answer

I would suggest trying a function of the form f(X)=A*(1-exp(-B*x))+C.

This functional form gives you pretty good control over the appearance of the curve since it starts with f(0)=C and converges to f(inf)=A with the rate of convergence given by B.

Related Question