Package Exports
- curve-interpolator
- curve-interpolator/dist/index.cjs.js
- curve-interpolator/dist/index.esm.js
- curve-interpolator/dist/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (curve-interpolator) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
Curve Interpolator
A lib for interpolating values over a cubic Cardinal/Catmull-Rom spline curve of n-dimenesions.
Installation
npm install --save curve-interpolator
Basic usage
Reference the CurveInterpolator class:
// commonjs
const CurveInterpolator = require('curve-interpolator').CurveInterpolator;
// es6
import { CurveInterpolator } from 'curve-interpolator';
Define controlpoints you want the curve to pass through and pass it to the constructor of the CurveInterpolator to create an instance:
const points = [
[0, 4],
[1, 2],
[3, 6.5],
[4, 8],
[5.5, 4],
[7, 3],
[8, 0],
...
];
const interp = new CurveInterpolator(points, { tension: 0.2, alpha: 0.5 });
// get single point
const position = 0.3 // [0 - 1]
const pt = interp.getPointAt(position)
// get points evently distributed along the curve
const segments = 1000;
const pts = interp.getPoints(segments);
// lookup values along x and y axises
const axis = 1;
const yintersects = interp.getIntersects(7, axis);
/*
max number of solutions (0 = all (default), 1 = first, -1 = last)
A negative max value counts solutions from end of curve
*/
const axis = 0;
const max = -1;
const xintersects = interp.getIntersects(3.2, axis, max);
// get bounding box
const bbox = interp.getBoundingBox();
Online example on ObservableHQ:
Docs
Docs are generated using typedoc in ./docs
. To create:
npm run docs
Online: https://kjerandp.github.io/curve-interpolator/
License
MIT