找到直线和矩形的点交点

时间:2015-07-23 04:03:00

标签: c++ geometry

假设我有一个3维定义的行,如下所示:

class Line{
    float startx;
    float starty;
    float startz;
    float endx;
    float endy;
    float endz;
};

以及以3维定义的矩形:

class Rectangle{
    float ax;
    float ay;
    float az;
    float bx;
    //...
    float dz;
};

我如何制作一个函数来确定给定的直线和矩形在什么位置相交?

1 个答案:

答案 0 :(得分:0)

有多种方法可以做到这一点。 一种方法是:

  • 您可以将矩形划分为两个三角形。
  • 找到与三角形平面的交点,并通过检查其重心坐标来检查交点是在内部还是外部。 这告诉你交叉点是在内部还是外部。这需要做 如果交叉点不在第一个三角形内,则为第二个三角形。

另一种方法是利用面向矩形的边缘。 您可以将线的一端带有一个角和另一个叉线与产品线的另一个点和相同的角进行交叉产品,如果它们是不同的方向,那么您可以执行更多检查。如果方向相同则不需要,因为它表明线的点位于矩形的同一侧。