@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
94 lines (93 loc) • 2.19 kB
JavaScript
;
const easeI = function(power) {
return function(t) {
return Math.pow(t, power);
};
};
const easeO = function(power) {
return function(t) {
return 1 - Math.abs(Math.pow(t - 1, power));
};
};
const easeIO = function(power) {
return function(t) {
return t < 0.5 ? easeI(power)(t * 2) / 2 : easeO(power)(t * 2 - 1) / 2 + 0.5;
};
};
export const EASING_NAMES = [
"easeI2",
"easeO2",
"easeIO2",
"easeI3",
"easeO3",
"easeIO3",
"easeI4",
"easeO4",
"easeIO4",
"easeSinI",
"easeSinO",
"easeSinIO",
"easeElasticI",
"easeElasticO",
"easeElasticIO"
];
export const easeI2 = easeI(2);
export const easeO2 = easeO(2);
export const easeIO2 = easeIO(2);
export const easeI3 = easeI(3);
export const easeO3 = easeO(3);
export const easeIO3 = easeIO(3);
export const easeI4 = easeI(4);
export const easeO4 = easeO(4);
export const easeIO4 = easeIO(4);
export function easeSinI(t) {
return 1 + Math.sin(Math.PI / 2 * t - Math.PI / 2);
}
export function easeSinO(t) {
return Math.sin(Math.PI / 2 * t);
}
export function easeSinIO(t) {
return (1 + Math.sin(Math.PI * t - Math.PI / 2)) / 2;
}
export function easeElasticI(t) {
return t == 0 ? 0 : (0.04 - 0.04 / t) * Math.sin(25 * t) + 1;
}
export function easeElasticO(t) {
return t == 1 ? 1 : 0.04 * t / --t * Math.sin(25 * t);
}
export function easeElasticIO(t) {
return t == 0.5 ? 0 : (t -= 0.5) < 0 ? (0.02 + 0.01 / t) * Math.sin(50 * t) : (0.02 - 0.01 / t) * Math.sin(50 * t) + 1;
}
export const Easing = {
// linear: ease_io(1),
// ease_i: function (t: number, power: number) {
// return ease_i(power)(t);
// },
// ease_o: function (t: number, power: number) {
// return ease_o(power)(t);
// },
// ease_io: function (t: number, power: number) {
// return ease_io(power)(t);
// },
easeI2,
easeO2,
easeIO2,
easeI3,
easeO3,
easeIO3,
easeI4,
easeO4,
easeIO4,
// easeInQuart: EaseIn(4),
// easeOutQuart: EaseOut(4),
// easeInOutQuart: EaseInOut(4),
// easeInQuint: EaseIn(5),
// easeOutQuint: EaseOut(5),
// easeInOutQuint: EaseInOut(5)
easeSinI,
easeSinO,
easeSinIO,
easeElasticI,
easeElasticO,
easeElasticIO
};