What is bezier-easing?
The bezier-easing npm package provides a way to create cubic Bezier easing functions, which are commonly used in animations to create smooth transitions. This package allows you to define custom easing curves and use them to interpolate values over time.
What are bezier-easing's main functionalities?
Create a Bezier Easing Function
This feature allows you to create a cubic Bezier easing function by specifying four control points. The resulting function can be used to interpolate values smoothly.
const BezierEasing = require('bezier-easing');
const ease = BezierEasing(0.25, 0.1, 0.25, 1.0);
Use the Easing Function
Once you have created a Bezier easing function, you can use it to interpolate values. The function takes a progress value between 0 and 1 and returns the interpolated value.
const BezierEasing = require('bezier-easing');
const ease = BezierEasing(0.25, 0.1, 0.25, 1.0);
const value = ease(0.5); // Interpolates the value at 50% progress
Predefined Easing Functions
The package also provides some predefined easing functions like easeInOut, which can be used directly without specifying control points.
const BezierEasing = require('bezier-easing');
const easeInOut = BezierEasing.easeInOut;
const value = easeInOut(0.5); // Interpolates the value at 50% progress using a predefined ease-in-out curve
Other packages similar to bezier-easing
d3-ease
The d3-ease package provides a collection of easing functions for smooth animations. It includes a variety of predefined easing functions such as linear, cubic, and elastic. Compared to bezier-easing, d3-ease offers a broader range of predefined easing functions but does not allow for custom cubic Bezier curves.
eases
The eases package offers a set of common easing functions for animations. It includes functions like easeInOutQuad, easeInOutCubic, and more. Similar to d3-ease, it provides predefined functions but lacks the ability to create custom cubic Bezier curves like bezier-easing.
animejs
Anime.js is a lightweight JavaScript animation library that includes a variety of easing functions. It supports custom easing functions and provides a more comprehensive animation framework compared to bezier-easing. However, it is a larger library with more dependencies.
bezier-easing
BezierEasing provides Cubic Bezier Curve easing which generalizes easing functions (ease-in, ease-out, ease-in-out, ...any other custom curve) exactly like in CSS Transitions.
Implementing efficient lookup is not easy because it implies projecting
the X coordinate to a Bezier Curve.
This micro library uses fast heuristics (involving dichotomic search, newton-raphson, sampling) to focus on performance and precision.
It is heavily based on implementations available in Firefox and Chrome (for the CSS transition-timing-function property).
Usage
var easing = BezierEasing(0, 0, 1, 0.5);
console.log(easing(0.0));
console.log(easing(0.5));
console.log(easing(1.0));
(this schema is from the CSS spec)
BezierEasing(P1.x, P1.y, P2.x, P2.y)
Install
It is the equivalent to CSS Transitions' transition-timing-function
.
In the same way you can define in CSS cubic-bezier(0.42, 0, 0.58, 1)
,
with BezierEasing, you can define it using BezierEasing(0.42, 0, 0.58, 1)
which have the `` function taking an X and computing the Y interpolated easing value (see schema).
License
MIT License.
Tests
npm test
See also
Who use it?
More informations
Implementation based on this article.
Contributing
You need a node
installed.
Install the deps:
npm install
The library is in index.js
.
Ensure any modication will:
- keep validating the tests (run
npm test
) - not bring performance regression (compare with
npm run benchmark
– don't rely 100% on its precision but it still helps to notice big gaps) - Run the visual example:
npm run visual