# fit-curve

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

Latest version **0.2.0** (published 2020-06-23) · MIT license · 0 weekly downloads

## Install

```sh
npm install fit-curve
pnpm add fit-curve
yarn add fit-curve
bun add fit-curve
```

## Health

**Score 25/100 (F)** — status: abandoned.

Positive: has types; no vulnerabilities; high quality score.

Warnings: low downloads; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.2.0 |
| Published | 2020-06-23 |
| First published | 2016-12-03 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | CommonJS |
| Dependencies | 0 |
| Unpacked size | 201.8 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | Philip J. Schneider |
| Maintainers | soswow |

## Links

- npm: https://www.npmjs.com/package/fit-curve
- Homepage: https://github.com/soswow/fit-curve
- Issues: https://github.com/soswow/fit-curve/issues
- npm.io page: https://npm.io/package/fit-curve

## Recent versions

- 0.2.0 (latest) — 2020-06-23
- 0.1.7 — 2020-05-04
- 0.1.6 — 2017-04-08
- 0.1.5 — 2017-04-08
- 0.1.4 — 2016-12-03
- 0.1.2 — 2016-12-03

## README

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

```javascript
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](http://soswow.github.io/fit-curve/demo).

![demo](https://github.com/soswow/fit-curves/raw/master/demo-screenshot.png "Demo")

## Changelog

### 0.2.0

- Expose fitCubic, createTangent & add TypeScript declaration

### 0.1.7

- Bug fix #24.

### 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

---
_Source: https://npm.io/package/fit-curve · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
