✅ 一、通用计算几何库(高精度、工业级)
1. CGAL(Computational Geometry Algorithms Library)
- 🌐 语言:C++(有 Python 绑定)
- 📦 特点:
- 工业标准级,算法最全
- 支持精确算术,避免浮点误差
- 提供布尔运算、三角剖分、凸包、网格生成等
- 🔗 官网:https://www.cgal.org
- 💡 适用:CAD修复、轮廓处理、自动排样
- ⚠️ 注意:依赖 Boost、GMP,编译略复杂
2. GEOS(Geometry Engine, Open Source)
- 🌐 语言:C++,提供 C 和 Java/Python/.NET 封装
- 📦 特点:
- 是 CGAL 的"轻量替代品"
- 支持 OGC(开放地理标准)规范
- 强项:多边形布尔运算、缓冲区(buffer)、距离计算
- 🔗 官网:https://libgeos.org
- 💡 适用:GIS、DXF/SVG 轮廓处理、碰撞检测
- ✅ Python 使用:
pip install Shapely(底层就是 GEOS)
3. Clipper2
-
🌐 语言:C++ / C# / Python / Delphi
-
📦 特点:
- 轻量、高速、开源(Boost 许可)
- 专攻 多边形裁剪与布尔运算(并、交、差、异或)
- 支持整型/浮点坐标,抗退化能力强
-
💡 适用:激光切割轮廓合并、去重叠、偏移路径生成
-
✅ C# 直接 NuGet 安装:
bashInstall-Package Clipper2Lib
✅ 二、C# 友好型几何库(.NET 平台推荐)
4. NetTopologySuite (NTS)
-
🌐 语言:C#
-
📦 特点:
- Java 的 JTS 的 .NET 移植版
- 支持多边形布尔、缓冲区、简化、有效性检查
- 与 Shapely 接口相似,学习成本低
-
✅ NuGet 安装:
bashInstall-Package NetTopologySuite
5. MathNet.Spatial
-
🌐 语言:C#
-
📦 特点:
- 轻量级,专注 2D/3D 几何计算
- 提供点、线、面、坐标系变换、投影等
- 无外部依赖,NuGet 一键安装
-
✅ 安装:
bashInstall-Package MathNet.Spatial -
💡 适用:路径插值、坐标转换、向量运算
✅ 三、Python 几何库(适合脚本处理)
6. Shapely
-
🌐 语言:Python
-
📦 特点:
- 接口简洁,像写数学公式
- 基于 GEOS,支持布尔、缓冲、距离、包含判断
-
✅ 安装:
bashpip install shapely -
💡 示例:
pythonfrom shapely.geometry import Polygon poly1 = Polygon([(0,0), (2,0), (2,2), (0,2)]) poly2 = Polygon([(1,1), (3,1), (3,3), (1,3)]) union = poly1.union(poly2)
适合做"离线图形分析"或"测试算法逻辑"。
7. Pyclipper(Clipper 的 Python 封装)
-
🌐 语言:Python
-
✅ 安装:
bashpip install pyclipper -
💡 特点:速度快,支持整数坐标,适合路径偏移、去重叠
✅ 四、轻量级/专用库
8. Poly2Tri(平面多边形三角剖分)
- 🌐 支持 C++/C#/Java/Python
- 🔗 https://github.com/mapbox/poly2tri
- 💡 适用:填充区域、生成扫描线路径
9. libtess2(3D 可用的三角剖分)
- 🌐 C++,支持复杂多边形带孔剖分
- 🔗 https://github.com/memononen/libtess2
- 💡 适用:复杂图形转为三角面片
✅ 五、选型建议(按场景)
| 需求 | 推荐库 |
|---|---|
| 🔧 多边形布尔运算(合并、挖孔) | Clipper2 、CGAL 、NTS |
| 🧹 图形修复、简化、有效性检查 | NetTopologySuite 、Shapely |
| 🗺️ GIS、缓冲区、空间关系 | GEOS / Shapely / NTS |
| 📐 精确计算、科研级算法 | CGAL |
| ⚡ 快速裁剪、路径偏移 | Clipper2 / Pyclipper |
| 🧮 C# 项目集成 | Clipper2Lib 、NTS 、MathNet.Spatial |