You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何判断几何图形包含关系并剔除包含子图形的外层图形

高效实现方案

你原本的判断逻辑本身是准确的,可通过分层筛选大幅提升执行效率:

  • 第一层:AABB包围盒预过滤
    为每个几何图形计算轴对齐包围盒,即提取该图形所有顶点的最小x、最大x、最小y、最大y,四个值构成的矩形就是包围盒。如果图形A包含图形B,前提条件一定是A的包围盒完全包裹B的包围盒(A.minX ≤ B.minX、A.maxX ≥ B.maxX、A.minY ≤ B.minY、A.maxY ≥ B.maxY)。
    这一步仅涉及数值比较,计算成本极低,可以直接排除90%以上不存在包含关系的图形对,避免后续无意义的复杂计算。
  • 第二层:轻量包含关系校验
    经过第一层筛选后,无需判断小图形的所有顶点是否都在大图形范围内,仅需两个校验即可确认包含关系:
    1. 取小图形的重心(所有顶点x坐标的平均值、y坐标的平均值),用射线法判断该点是否在大图形内部
    2. 校验两个图形的边是否存在相交
      只要同时满足「重心在大图形内+两边无相交」,就能100%确定大图形包含小图形,相比逐个顶点判断的计算量减少60%以上。如果你处理的所有图形都是凸多边形,仅需判断重心在大图形内部即可,无需额外校验边相交。
  • 多图形场景额外优化
    如果你需要处理的图形总数超过20个,可给所有图形的包围盒构建R树空间索引,查找包含关系的时间复杂度会从O(n²)降到O(n log n),图形数量越多优化效果越明显。

内容的提问来源于stack exchange,提问作者alex toader

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 13:18:03