检查哪些三角形与凸包相交

Checking which triangles intersect a convex hull

我有一堆二维三角形(即在 R2 中),以及一个二维凸包(表示为一组线性约束),我需要检查哪些三角形与凸包相交。执行此操作的算法是什么?

在稍后阶段,我可能还需要将问题推广到比 2D 更高的维度(即,在 Rd 中的一组单纯形中,检查其中哪些在 Rd) 中与一个凸包相交,所以如果你知道一种算法可以处理一般情况,那也很好。

您可以分两步解决二维问题:

如果您需要对许多三角形执行此操作,一种可能是沿着一个轴(比如 X)将外壳分解为两个单调链,并通过二分搜索找到外壳和每个三角形的重叠范围。这会将时间减少到 O(Log N + K),其中 K 是与三角形 X 重叠时船体的平均边数。