UNPKG

dots-connector

Version:
50 lines (34 loc) 1.97 kB
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