Function Repository Resource:

# GainRescale

Apply a flatter or steeper variation in the middle of an interval

Contributed by: Jan Mangaldan
 ResourceFunction["GainRescale"][a,x] biases x to be flatter towards the middle if a<1/2, and steeper towards the middle if a>1/2, as x runs from 0 to 1. ResourceFunction["GainRescale"][a,x,{min,max}] biases x as x runs from min to max. ResourceFunction["GainRescale"][a,x,{min,max},{ymin,ymax}] biases x as x runs from min to max, with the result rescaled to run from ymin to ymax.

## Details and Options

a can be any real number between 0 and 1.
ResourceFunction["GainRescale"] is a symmetrized version of the resource function BiasedRescale.
The result of ResourceFunction["GainRescale"][a,x,{min,max}] is always between 0 and 1.
ResourceFunction["GainRescale"] can take the Method option for the bias function to use. Possible settings for the Method option are "Schlick" (default) and "Perlin".
With the default option setting Method"Schlick", ResourceFunction["GainRescale"] uses Schlick's bias function x/((1/a-2)(1-x)+1).
With Method"Perlin", ResourceFunction["GainRescale"] uses Perlin's bias function x-log2(a).
ResourceFunction["GainRescale"] is commonly used in computer graphics.

## Examples

### Basic Examples (3)

Evaluate numerically:

 In[1]:=
 Out[1]=

Plot over a subset of the reals:

 In[2]:=
 Out[2]=

Plot different gain functions:

 In[3]:=
 Out[3]=

### Scope (4)

Evaluate for symbolic x:

 In[4]:=
 Out[4]=

GainRescale threads over lists in its first and second arguments:

 In[5]:=
 Out[5]=
 In[6]:=
 Out[6]=

Plot different gain functions with a rescaled domain:

 In[7]:=
 Out[7]=

Plot different gain functions with a rescaled domain and range:

 In[8]:=
 Out[8]=

### Options (1)

#### Method (1)

Compare the Schlick and Perlin gain functions:

 In[9]:=
 Out[9]=
 In[10]:=
 Out[10]=

### Applications (2)

 In[11]:=
 Out[11]=

Demonstrate the effect of GainRescale on easing in/easing out:

 In[12]:=
 Out[12]=

### Properties and Relations (2)

GainRescale[1/2,x,{min,max}] is equivalent to Rescale[x,{min,max}]:

 In[13]:=
 Out[13]=

GainRescale[a,x] is a symmetrized version of the resource function BiasedRescale, made symmetric about x=1/2:

 In[14]:=
 Out[14]=

### Possible Issues (2)

GainRescale is left unevaluated if the first argument is nonnumeric:

 In[15]:=
 Out[15]=

GainRescale is left unevaluated if the first argument is not a real number between 0 and 1:

 In[16]:=
 Out[16]=

## Version History

• 1.0.0 – 16 February 2021