几何算法库

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

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
相关推荐
B325帅猫-量子前沿技术研究所13 小时前
PSD和FFT的关系
人工智能·算法
闻缺陷则喜何志丹13 小时前
【排序】P6149 [USACO20FEB] Triangles S|普及+
c++·算法·排序·洛谷
avocado_green13 小时前
【LeetCode】90. 子集 II
算法·leetcode
tankeven13 小时前
HJ178 【模板】双指针
c++·算法
君义_noip13 小时前
信息学奥赛一本通 4131:【GESP2506六级】学习小组 | 洛谷 P13015 [GESP202506 六级] 学习小组
算法·动态规划·gesp·信息学奥赛
6Hzlia14 小时前
【Hot 100 刷题计划】 LeetCode 72. 编辑距离 | C++ 经典 DP 增删改状态转移
c++·算法·leetcode
穿条秋裤到处跑14 小时前
每日一道leetcode(2026.04.16):距离最小相等元素查询
算法·leetcode·职场和发展
XY_墨莲伊15 小时前
【实战项目】基于B/S结构Flask+Folium技术的出租车轨迹可视化分析系统(文末含完整源代码)
开发语言·后端·python·算法·机器学习·flask
小雅痞15 小时前
[Java][Leetcode simple] 1. 两数之和
java·算法·leetcode
somi715 小时前
ARM-驱动-09-LCD FrameBuffer
arm开发·驱动开发·算法·自用