Algorithm (数值)计算两个长方体的相交体积

Algorithm (数值)计算两个长方体的相交体积,algorithm,computational-geometry,intersection,numerical-methods,Algorithm,Computational Geometry,Intersection,Numerical Methods,我已经给出了两个长方体,其中只有一个轴对齐(其他两个不一定对齐),它们的顶点坐标(在全局坐标系中),我知道它们相交。我正在寻找一种可以计算交叉口交通量的算法 为了检查交点,我使用了分离轴定理。由于其中一个轴对齐,算法如下: 沿对齐的轴方向投影二维长方体 计算二维中两个矩形的相交面积 在对齐的轴上投影1D中的长方体 计算一维线段的交点 生成的体积是面积乘以线段交点长度 两个任意矩形的交点可以通过Sutherland-Hodgman程序()构造。简言之,使用分隔另一个矩形的半平面剪裁其中一个矩形四

我已经给出了两个长方体,其中只有一个轴对齐(其他两个不一定对齐),它们的顶点坐标(在全局坐标系中),我知道它们相交。我正在寻找一种可以计算交叉口交通量的算法


为了检查交点,我使用了分离轴定理。

由于其中一个轴对齐,算法如下:

  • 沿对齐的轴方向投影二维长方体
  • 计算二维中两个矩形的相交面积
  • 在对齐的轴上投影1D中的长方体
  • 计算一维线段的交点
  • 生成的体积是面积乘以线段交点长度

两个任意矩形的交点可以通过Sutherland-Hodgman程序()构造。简言之,使用分隔另一个矩形的半平面剪裁其中一个矩形四次。结果将从四边形到八角形不等

多边形的面积由鞋带公式计算

交点是一个棱镜,你知道它的底和高度



请注意,您可以将此过程推广到3D,并实现凸多面体与半空间的相交(使用半空间剪裁每个面,并连接新形成的边以获得截面的面)。这使您可以解决任意定向长方体的问题。

您在谷歌上搜索过吗?是的,但我到目前为止没有找到任何东西。@AdrianPfeifle……怎么样@保罗,我不知道这能回答我的问题吗?你指的是Weiler–Atherton裁剪算法的链接吗?你指的是矩形长方体还是普通长方体?谢谢,这有点帮助,但基本上和以前一样。如何获得二维中两个随机方向矩形的相交面积?在您的例子中,它们不必是随机方向的。通过良好的投影(变换),可以在原点中定位一个矩形,使边轴对齐。然后,可以检查第二个矩形的角和边是否与第一个矩形相交,并找到相交多边形。如何获得相交多边形?我看到许多不同的案例都需要涵盖。我是否需要对所有这些(第二个矩形与一个、两个、三个顶点相交,与一个、两个、三个边相交等)进行区分大小写?将第二个多边形的所有边与第一个多边形相交。这很简单。若并没有交点,结果是空集或内部多边形。对于交点,从一个交点开始,遍历内部多边形直到下一个交点,然后遍历内部(第二个)多边形直到下一个交点,依此类推直到到达起点。