timing-function
Version:
Simple API for easing functions and Bezier curves
111 lines (77 loc) • 2.09 kB
Markdown
# Timing Function
Simple API for easing functions and Bezier curves
## Installation
Install with npm:
```
npm install timing-function
```
## Usage
```javascript
var t = require('timing-function');
// choose any timing function
var func = t.get('sine.easeOut');
// func now takes a float between 0 and 1
func(0.3); // returns 0.45
// for cubic-bezier:
func = t.get(0.1, 0.3, 0.4, 0.2);
func(0.3);
```
## Functions
```javascript
// linear
t.get('linear')
// sine
t.get('sine.easeIn')
t.get('sine.easeOut')
t.get('sine.easeInOut')
// quad
t.get('quad.easeIn')
t.get('quad.easeOut')
t.get('quad.easeInOut')
// cubic
t.get('cubic.easeIn')
t.get('cubic.easeOut')
t.get('cubic.easeInOut')
// quart
t.get('quart.easeIn')
t.get('quart.easeOut')
t.get('quart.easeInOut')
// quint
t.get('quint.easeIn')
t.get('quint.easeOut')
t.get('quint.easeInOut')
// expo
t.get('expo.easeIn')
t.get('expo.easeOut')
t.get('expo.easeInOut')
// circ
t.get('circ.easeIn')
t.get('circ.easeOut')
t.get('circ.easeInOut')
// sine
t.get('sine.easeIn')
t.get('sine.easeOut')
t.get('sine.easeInOut')
// cubic-bezier (works just like css` cubic-bezier())
t.get(0.1, 0.2, 0.3, 0.4)
```
Functions are also available with direct calls:
```javascript
t.sine.easeInOut(0.3)
```
## UnitBezier
Normally, using `timingFunction.get(p1x, p1y, p2x, p2y)` should suffice for cubic-beziers. But if you need to directly work with the bezier class, here is an examples for it:
```javascript
var UnitBezier = require('timing-function').UnitBezier;
var b = new UnitBezier(0.1, 0.2, 0.3, 0.4);
// to solve a point:
b.solveSimple(0.3);
// to solve with custom epsilon:
b.solve(0.3, 1e-6);
// to reset control points:
b.set(1.0, 0.5, 0.3, 0.0);
```
## Acknowledgements
Trig functions come from [MooTools](https://github.com/mootools/mootools-core/blob/master/Source/Fx/Fx.Transitions.js), and cubic-bezier calculator comes from [here](http://codepen.io/onedayitwillmake/details/EHDmw).
## License
MIT