我正在寻找一种 C++ 中的方法和/或库来检查凸多边形(由 3D 中的 4 个或更多点定义)是否与一个或多个笛卡尔框(由 xmin、xmax、ymin、ymax、zmin 和 zmax 定义)相交.
上下文:我有一个笛卡尔网格(有限元),我需要检查哪些框被任意多边形交叉。
我相信如果我找到一个函数/算法来计算 3D 中两个多边形的交集,问题就解决了。我可以单独检查每个盒子的面。
我研究了OpenCV intersectConvexConvex,但它似乎不能处理3D多边形(具有平面点但在3D空间中的多边形)。
有什么建议吗?
3D 空间中的多边形定义一个平面。
找到该平面与所有盒子的交点。如果有交集,也将是凸多边形,因此问题就简化为 2D 多边形与多边形的交集。