为您的 WebGL 应用提供最快速、最小的 JavaScript 多边形三角化库
最快且最小的 JavaScript 多边形三角剖分库。压缩后仅 4KB。
Earcut 专为浏览器中的实时三角剖分而设计, 优先考虑原始速度和简洁性,而非三角剖分质量, 同时足够稳健,能够处理大多数实际数据集而不会崩溃或产生垃圾结果, 并提供一个选项,可以以较小的代价将结果优化为 Delaunay 质量。 最初为 Mapbox GL JS(基于 WebGL 的交互式地图)而构建, 现在也被 Three.js 及许多其他项目所使用。
import earcut from 'earcut';
const triangles = earcut([10,0, 0,50, 60,60, 70,10]); // returns [1,0,3, 1,3,2]该库实现了一种改进的耳切算法, 通过z-order曲线和空间哈希进行优化, 并扩展以处理孔洞、扭曲多边形、退化情形及自相交, 其方式并不_保证_三角剖分的正确性, 但力求对实际数据始终产生可接受的结果。
其设计思路源自 Martin Held的FIST:快速工业级多边形三角剖分 以及David Eberly的耳切法三角剖分。
Earcut 针对其主要工作负载进行了高度优化——即对来自 Mapbox Vector Tiles 的多边形进行三角剖分。在一个具有代表性的基准测试中,119,680 个真实世界多边形(190 万个顶点)取自缩放级别 4–16 的地图瓦片窗口,它在 MacBook Pro M1 Pro(2021)上以 约 445 毫秒 完成整个集合的三角剖分,可选的 Delaunay 细化额外耗时 约 168 毫秒。你可以使用 npm run bench 自行运行该基准测试。
Earcut 不保证 对任意输入都能给出正确的三角剖分——它以质量换取速度,目标是始终提供
暂无开放 Issues,或尚未同步最近议题。