# displease

The `displease`

package provides non-linear interpolation between numeric values.

It is a replacement for `seq()`

for when you want a sequence between two values which is **not** equally spaced.

Easing can look much better than strict linear interpolation when applied to objects moving spatially.

`displease`

= **displ** + **ease**. The results are often used for
animating visual **displacement**, and the non-linear interpolation is
performed by applying an **easing** function.

## Installation

You can install from GitHub with:

```
# install.package('remotes')
remotes::install_github('coolbutuseless/displease)
```

## What’s in the box?

`seq_ease(x1, x2, n, type)`

- create a sequence of length`n`

between`x1`

and`x2`

. Apply the easing function given by`type`

.- type is one of:
`sine-in`

,`sine-out`

,`sine-in-out`

,`quad-in`

,`quad-out`

,`quad-in-out`

,`cubic-in`

,`cubic-out`

,`cubic-in-out`

,`quart-in`

,`quart-out`

,`quart-in-out`

,`quint-in`

,`quint-out`

,`quint-in-out`

,`exp-in`

,`exp-out`

,`exp-in-out`

,`circle-in`

,`circle-out`

,`circle-in-out`

,`back-in`

,`back-out`

,`back-in-out`

,`elastic-in`

,`elastic-out`

,`elastic-in-out`

The following graph shows the `seq_ease()`

output for `n = 100`

for
all the different easing functions with given extens of `x1 = 0`

and `x2 = 1`

## Example

```
library(displease)
# normal linear interpolation using seq()
(y_linear <- seq(1, 10, length.out = 10))
[1] 1 2 3 4 5 6 7 8 9 10
# Non-linear interpolation using {displease}
(y_cubic_in <- seq_ease(1, 10, n=10, type = 'cubic-in'))
[1] 1.000000 1.012346 1.098765 1.333333 1.790123 2.543210 3.666667
[8] 5.234568 7.320988 10.000000
(y_cubic_in_out <- seq_ease(1, 10, n=10, type = 'cubic-in-out'))
[1] 1.000000 1.049383 1.395062 2.333333 4.160494 6.839506 8.666667
[8] 9.604938 9.950617 10.000000
plot(1:10, y_linear , type = 'b')
```

`plot(1:10, y_cubic_in , type = 'b')`

`plot(1:10, y_cubic_in_out, type = 'b')`

## Animated example

## Acknowledgements

- R Core for developing and maintaining such a wonderful language.
- CRAN maintainers, for patiently shepherding packages onto CRAN and maintaining the repository