dots-connector
Version:
Delaunay Triangulation library
50 lines (34 loc) • 1.97 kB
Markdown
Dots Connector
===
A 2D [Delaunay Triangulation](https://en.wikipedia.org/wiki/Delaunay_triangulation) TypeScript library.
It works in modern browser and NodeJS environments.
- [Interactive Demo](https://stnguyen.github.io/dots-connector/)
- This library is an implementation of [A simple sweep-line Delaunay triangulation algorithm, 2013, Liu Yonghe, Feng Jinming and Shao Yuehong](http://www.academicpub.org/jao/paperInfo.aspx?paperid=15630) paper.
This library is still a **work in progress**. If you need a fast, feature-rich library, use [delaunator](https://github.com/mapbox/delaunator) instead.
## Example
```js
const originalPoints = [[0,0],[1,-2],[2,-0.5],...];
const { points, triangles } = triangulate(originalPoints);
console.log(delaunay.triangles);
// [0,1,2,...]
```
It returns an array of points because the algorithm requires adding small random noise to the original points, and also sort the points horizontally from left to right.
## Install
Install with NPM (`npm install dots-connector`) then:
```js
// import as an ES module
import triangulate from 'dots-connector'
// or require in Node / Browserify
const triangulate = require('dots-connector');
```
Or use a browser build directly:
```html
<script src="https://unpkg.com/dots-connector/umd/dots-connector.min.js"></script> <!-- minified build -->
<script src="https://unpkg.com/dots-connector/umd/dots-connector.js"></script> <!-- dev build -->
```
## Bench
Results of running [delaunator](https://github.com/mapbox/delaunator/blob/master/bench.js) bench script on Macbook Pro 16" 2019, Node v10.18.1
|| uniform 100k | gauss 100k | grid 100k | degen 100k | uniform 1million | gauss 1million | grid 1million | degen 1million
:-- | --: | --: | --: | --: | --: | --: | --: | --:
dots-connector | 384ms | 427ms | 1010ms | failed | 5553ms | 5540ms | 11558ms | failed
[delaunator](https://github.com/mapbox/delaunator) | 73ms | 61ms | 86ms | 31ms | 1046ms | 1118ms | 945ms | 428ms