JSPM

  • Created
  • Published
  • Downloads 986
  • Score
    100M100P100Q113294F
  • License MIT

Interpolate values on a Cardinal/Catmull-Rom spline curve

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