Skip to content
/ curves Public

πŸ“ˆ Easily define and evaluate eased curves, similar to Unity's AnimationCurves with modifiers akin to Blender's FCurve Modifiers

Notifications You must be signed in to change notification settings

rzmay/curves

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

18 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Curves

πŸ“ˆ Easily define and evaluate eased curves, similar to Unity's AnimationCurves with modifiers akin to Blender's FCurve Modifiers.

Installation: npm i curves

documentation πŸ“–

Live Demo πŸ“‰


Easily Define and Evaluate Curves

Constructing curves is simple, and evaluating them is even simpler.

import { Curve, NumberKeyframe } from 'curves';

const curve: Curve<number> = new Curve<number>(
    [
        new NumberKeyframe(0, 0),
        new NumberKeyframe(1, 2),
        new NumberKeyframe(5, 1),
    ], // Keyframes
);

// Expected output: 
//    time: 0, value: 0
//    time: 1, value: 2
//    time: 2, value: 1.9375
//    time: 3, value: 1.5
//    time: 4, value: 1.0625
//    time: 5, value: 1
for (let i = 0; i < 5; i += 1) {
    console.log(`time: ${i}, value: ${curve.evaluate(i)}`)
}

Interpolate With Any Type

Curves and keyframes are generic, with 9 built-in type implementations and unlimited potential for more.

import { 
    NumberKeyframe,
    StringKeyframe,
    BooleanKeyframe,
    RGBColorKeyframe,
    Vector3Keyframe
} from 'curves';

const numberKeyframe = new NumberKeyframe(0, 4);
const stringKeyframe = new StringKeyframe(1, "Hello world!");
const boolKeyframe = new BooleanKeyframe(2, true);
const colorKeyframe = new RGBColorKeyframe(3, {
    r: 255,
    g: 125,
    b: 0,
});
const vectorKeyframe = new Vector3Keyframe(4, {
    x: 1,
    y: 4,
    z: 0,
});

Add Modifiers to your Curve

Modifiers of any type are easy to create and add to your curve.

import { Curve, Modifiers } from 'curves';

// Define the curve using a builder
const curve: Curve<number> = Curve.builder<number>(
    NumberKeyframe,
    0,
    10,
    5,
);

// Add layered noise modifiers
curve.addModifier(new Modifiers.Number.Noise(0.1, 0.5));
curve.addModifier(new Modifiers.Number.Noise(0.025, 2));

// Add a clamp modifier
curve.addModifier(new Modifiers.Number.Clamp(0, 10));

About

πŸ“ˆ Easily define and evaluate eased curves, similar to Unity's AnimationCurves with modifiers akin to Blender's FCurve Modifiers

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published