GLM:获取平面线交点的位置

GLM: Get position of plane-line-intersection

我对 C++ 的 GLM 库还很陌生,所以我遇到了一些问题。 我有一个由一个位置和两个跨向量组成的平面,以及一条包含它的位置和方向的线 - 所有值都是 glm::vec3.

struct Plane {
  glm::vec3 position;
  glm::vec3 spanVec1;
  glm::vec3 spanVec2;
}

struct Line {
  glm::vec3 start;
  glm::vec3 direction;
}

现在我需要两者的交点。 我知道我可以用线性方程找到点,但我想确保没有来自 glm 的 INBUILD 解决方案可用,这样我就不必编写自己的扩展(主要是由于性能原因)。

那么在图书馆有没有方便的方法来做到这一点?或者至少图书馆包含某种线性方程求解?

PS:glm::gtx::intersect 函数不是我要找的,因为我需要交点,而只有 return 函数是否相交(boolean).

glm::gtx::intersect doesn't have a line-plane intersection function, but it does have intersectRayPlane.

您可以通过调用该例程两次(一次使用 Line.direction,一次使用 -line.direction)来构建射线平面相交。不是最有效的选择,但可能适用于许多应用程序。

注意intersectRayPlane并不是直接return交点位置,而是最后一个(输出)参数是沿着射线到交点位置的距离。所以你会得到 orig + intersectionDistance*dir

的交点位置