几何算法库

✅ 一、通用计算几何库(高精度、工业级)

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 许可)
    • 专攻 多边形裁剪与布尔运算(并、交、差、异或)
    • 支持整型/浮点坐标,抗退化能力强
  • 🔗 官网:https://github.com/AngusJohnson/Clipper2

  • 💡 适用:激光切割轮廓合并、去重叠、偏移路径生成

  • ✅ C# 直接 NuGet 安装:

    bash 复制代码
    Install-Package Clipper2Lib

✅ 二、C# 友好型几何库(.NET 平台推荐)

4. NetTopologySuite (NTS)

  • 🌐 语言:C#

  • 📦 特点:

    • Java 的 JTS 的 .NET 移植版
    • 支持多边形布尔、缓冲区、简化、有效性检查
    • 与 Shapely 接口相似,学习成本低
  • 🔗 官网:https://github.com/NetTopologySuite/NetTopologySuite

  • ✅ NuGet 安装:

    bash 复制代码
    Install-Package NetTopologySuite

5. MathNet.Spatial

  • 🌐 语言:C#

  • 📦 特点:

    • 轻量级,专注 2D/3D 几何计算
    • 提供点、线、面、坐标系变换、投影等
    • 无外部依赖,NuGet 一键安装
  • 🔗 官网:https://github.com/MathNet/mathnet-spatial

  • ✅ 安装:

    bash 复制代码
    Install-Package MathNet.Spatial
  • 💡 适用:路径插值、坐标转换、向量运算


✅ 三、Python 几何库(适合脚本处理)

6. Shapely

  • 🌐 语言:Python

  • 📦 特点:

    • 接口简洁,像写数学公式
    • 基于 GEOS,支持布尔、缓冲、距离、包含判断
  • ✅ 安装:

    bash 复制代码
    pip install shapely
  • 💡 示例:

    python 复制代码
    from 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

  • ✅ 安装:

    bash 复制代码
    pip install pyclipper
  • 💡 特点:速度快,支持整数坐标,适合路径偏移、去重叠


✅ 四、轻量级/专用库

8. Poly2Tri(平面多边形三角剖分)


9. libtess2(3D 可用的三角剖分)


✅ 五、选型建议(按场景)

需求 推荐库
🔧 多边形布尔运算(合并、挖孔) Clipper2CGALNTS
🧹 图形修复、简化、有效性检查 NetTopologySuiteShapely
🗺️ GIS、缓冲区、空间关系 GEOS / Shapely / NTS
📐 精确计算、科研级算法 CGAL
⚡ 快速裁剪、路径偏移 Clipper2 / Pyclipper
🧮 C# 项目集成 Clipper2LibNTSMathNet.Spatial
相关推荐
Evand J2 小时前
【2026课题推荐】DOA定位——MUSIC算法进行多传感器协同目标定位。附MATLAB例程运行结果
开发语言·算法·matlab
leo__5202 小时前
基于MATLAB的交互式多模型跟踪算法(IMM)实现
人工智能·算法·matlab
忆锦紫2 小时前
图像增强算法:Gamma映射算法及MATLAB实现
开发语言·算法·matlab
t198751282 小时前
基于自适应Chirplet变换的雷达回波微多普勒特征提取
算法
guygg883 小时前
采用PSO算法优化PID参数,通过调用Simulink和PSO使得ITAE标准最小化
算法
老鼠只爱大米3 小时前
LeetCode算法题详解 239:滑动窗口最大值
算法·leetcode·双端队列·滑动窗口·滑动窗口最大值·单调队列
mit6.8243 小时前
序列化|质数筛|tips|回文dp
算法
rgeshfgreh3 小时前
C++字符串处理:STL string终极指南
java·jvm·算法
Protein_zmm4 小时前
【算法基础】二分
算法