If we want a curve that passes through (0,0) and (1,1) and a fulcrum (F,F) where 0<F<1, with a contrast G at (F,F), one way is to join these two curves:
Where v <= F:
v' = (0.5*v+0.5*F*pow(v/F,G))
Where v >= F:
v' = 1-(0.5*(1-v)+0.5*(1-F)*pow((1-v)/(1-F),G))
We have first and second order continuity.
The gradient dv’/dv at (F,F) is (G+1)/2.
Using ImageMagick, Windows BAT syntax:
set F=0.15
set G=10
set FORM=^
u^<%F%?^
(0.5*u+0.5*%F%*pow(u/%F%,%G%)):^
1-(0.5*(1-u)+0.5*(1-%F%)*pow((1-u)/(1-%F%),%G%))
set OUTFILE=fulcrum_%G:.=_%.png
%IM%convert -size 1x256 gradient: -rotate 90 ^
-fx "%FORM%" ^
%OUTFILE%
call %PICTBAT%graph1d %OUTFILE%
In our situation, we want v’<v at 0<v<F, and v’>v at F<v<1, so we set G >= 1.
Examples at F=0.15, and G=1.5, 2, 3 and 10: