Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mierune/earcut-rs
A Rust port of the Earcut polygon triangulation library.
https://github.com/mierune/earcut-rs
3d computational-geometry geometry graphics polygon rust triangulation
Last synced: 2 months ago
JSON representation
A Rust port of the Earcut polygon triangulation library.
- Host: GitHub
- URL: https://github.com/mierune/earcut-rs
- Owner: MIERUNE
- License: isc
- Created: 2023-10-07T20:20:18.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-10-21T16:57:57.000Z (4 months ago)
- Last Synced: 2024-12-01T03:44:58.726Z (2 months ago)
- Topics: 3d, computational-geometry, geometry, graphics, polygon, rust, triangulation
- Language: Rust
- Homepage: https://crates.io/crates/earcut
- Size: 955 KB
- Stars: 17
- Watchers: 4
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# earcut-rs
[![Test](https://github.com/MIERUNE/earcut-rs/actions/workflows/Test.yml/badge.svg)](https://github.com/MIERUNE/earcut-rs/actions/workflows/Test.yml)
[![codecov](https://codecov.io/gh/MIERUNE/earcut-rs/graph/badge.svg?token=thKlQiVjLc)](https://codecov.io/gh/MIERUNE/earcut-rs)
[![Crates.io Version](https://img.shields.io/crates/v/earcut)](https://crates.io/crates/earcut)A Rust port of the [mapbox/earcut](https://github.com/mapbox/earcut) polygon triangulation library, implemented from scratch with some reference to [donbright/earcutr](https://github.com/donbright/earcutr).
- Based on the latest earcut 3.0.0 release.
- Designed to avoid unnecessary memory allocations. The internal buffer and output index vector can be reused across multiple triangulations.
- (Experimental) An additional module, `utils3d`, can rotate 3D coplanar polygons into the 2D plane before triangulation.
- License: ISC
![]()
## Benchmarks
on Macbook Pro (M1 Pro)
| Polygon | earcut.hpp | earcut-rs (0.4.1) | earcutr (0.4.3) |
|---------------|-------------:|------------------:|----------------:|
| bad_hole | 3.574 µs/i | 4.623 µs/i | 4.415 µs/i |
| building | 397 ns/i | 195 ns/i | 604 ns/i |
| degenerate | 142 ns/i | 45 ns/i | 206 ns/i |
| dude | 5.061 µs/i | 6.496 µs/i | 8.096 µs/i |
| empty_square | 195 ns/i | 74 ns/i | 331 ns/i |
| water | 459.6 µs/i | 574.5 µs/i | 801.3 µs/i |
| water2 | 334.1 µs/i | 393.9 µs/i | 450.3 µs/i |
| water3 | 13.12 µs/i | 19.21 µs/i | 23.46 µs/i |
| water3b | 1.340 µs/i | 1.345 µs/i | 2.165 µs/i |
| water4 | 81.48 µs/i | 110.6 µs/i | 154.1 µs/i |
| water_huge | 6.906 ms/i | 11.0 ms/i | 10.90 ms/i |
| water_huge2 | 15.38 ms/i | 23.60 ms/i | 22.35 ms/i |(Earcutr 0.4.3 is not besed on the latest earcut.)
## Authors
- Taku Fukada ([@ciscorn](https://github.com/ciscorn)) - original author
- MIERUNE Inc.