Earcut.NET
1.1.0
dotnet add package Earcut.NET --version 1.1.0
NuGet\Install-Package Earcut.NET -Version 1.1.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Earcut.NET" Version="1.1.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Earcut.NET" Version="1.1.0" />
<PackageReference Include="Earcut.NET" />
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Earcut.NET --version 1.1.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Earcut.NET, 1.1.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Earcut.NET@1.1.0
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Earcut.NET&version=1.1.0
#tool nuget:?package=Earcut.NET&version=1.1.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
Earcut.NET
A C# port of the mapbox/earcut polygon triangulation library.
Note: This is a 100% AI-driven port, created entirely by AI agents to demonstrate modern .NET development practices.
Fast and robust ear-clipping polygon triangulation library for .NET 8+.
Features
- Fast polygon triangulation using ear-clipping algorithm
- Supports holes
- Zero-order curve spatial indexing for performance
- Modern C# implementation with .NET 8+ optimizations
- Uses ReadOnlySpan for zero-copy performance
Installation
dotnet add package Earcut.NET
Usage
using EarcutDotNet;
// Simple triangle polygon (3 vertices)
double[] coords = [0, 0, 1, 0, 0.5, 1];
var triangles = Earcut.Triangulate(coords);
// triangles: [1, 0, 2] — indices into coords (each vertex is x,y pair)
// Square polygon (4 vertices) — produces 2 triangles
double[] square = [0, 0, 1, 0, 1, 1, 0, 1];
var squareTriangles = Earcut.Triangulate(square);
// squareTriangles: [3, 0, 1, 3, 1, 2]
// Polygon with a hole
double[] polyWithHole = [
0, 0, 10, 0, 10, 10, 0, 10, // outer ring (4 vertices)
2, 2, 2, 8, 8, 8, 8, 2, // hole ring (4 vertices, starting at vertex index 4)
];
int[] holeIndices = [4]; // hole starts at vertex index 4
var result = Earcut.Triangulate(polyWithHole, holeIndices);
// Optional: verify triangulation quality (deviation should be close to 0)
double deviation = Earcut.Deviation(polyWithHole, holeIndices, 2, result.ToArray());
3D coordinates
Pass dim: 3 when your data contains x, y, z per vertex (only x and y are used for triangulation):
using EarcutDotNet;
double[] coords3d = [0, 0, 1, 1, 0, 0, 0.5, 1, 0]; // x,y,z per vertex
var triangles = Earcut.Triangulate(coords3d, dim: 3);
Building
dotnet build
Testing
dotnet test
Benchmarking
dotnet run -c Release --project bench/Earcut.Benchmarks
License
MIT License
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
net10.0
- No dependencies.
-
net8.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.