root e2ef550dc3 update %!s(int64=2) %!d(string=hai) anos
..
demo e2ef550dc3 update %!s(int64=2) %!d(string=hai) anos
lib e2ef550dc3 update %!s(int64=2) %!d(string=hai) anos
script e2ef550dc3 update %!s(int64=2) %!d(string=hai) anos
src e2ef550dc3 update %!s(int64=2) %!d(string=hai) anos
test e2ef550dc3 update %!s(int64=2) %!d(string=hai) anos
.babelrc e2ef550dc3 update %!s(int64=2) %!d(string=hai) anos
.bowerrc e2ef550dc3 update %!s(int64=2) %!d(string=hai) anos
LICENSE e2ef550dc3 update %!s(int64=2) %!d(string=hai) anos
README.md e2ef550dc3 update %!s(int64=2) %!d(string=hai) anos
bower.json e2ef550dc3 update %!s(int64=2) %!d(string=hai) anos
demo-screenshot.png e2ef550dc3 update %!s(int64=2) %!d(string=hai) anos
fit-curve.d.ts e2ef550dc3 update %!s(int64=2) %!d(string=hai) anos
package.json e2ef550dc3 update %!s(int64=2) %!d(string=hai) anos

README.md

JavaScript implementation of Philip J. Schneider's "Algorithm for Automatically Fitting Digitized Curves" from the book "Graphics Gems". Converted from Python implementation.

Fit one or more cubic Bezier curves to a polyline. Works with 2D and 3D curves (and should work for higher dimensions too).

This is a JS implementation of Philip J. Schneider's C code. The original C code is available on http://graphicsgems.org/ as well as in https://github.com/erich666/GraphicsGems

Install

npm install --save fit-curve

Usage

var fitCurve = require('fit-curve');
var points = [[0, 0], [10, 10], [10, 0], [20, 0]];
var error = 50; // The smaller the number - the much closer spline should be

var bezierCurves = fitCurve(points, error);
// bezierCurves[0] === [[0, 0], [20.27317402, 20.27317402], [-1.24665147, 0], [20, 0]]
// where each element is [x, y] and elements are [first-point, control-point-1, control-point-2, second-point]

You can play around with that in this demo.

demo

Changelog

0.2.0

  • Expose fitCubic, createTangent & add TypeScript declaration

0.1.7

0.1.6

  • Bug fix #13. Use compiled (ES2015) version as main entry point.

Development

npm install - builds transpiled and minified versions into /lib

npm test - runs tests