GLM:获得平面线交叉点的位置

时间:2017-03-30 12:21:39

标签: c++ vector glm-math

我是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解决方案可用,因此我不必编写自己的扩展(主要是出于性能原因)。 / p>

那么在库中有一个方便的方法吗?或者至少库是否包含某种线性方程求解?

PS:glm::gtx::intersect函数不是我想要的,因为我需要交点,而那些只返回它们相交(boolean)。

1 个答案:

答案 0 :(得分:3)

glm::gtx::intersect没有线平面交点函数,但确实有intersectRayPlane

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

请注意,intersectRayPlane不会直接返回交叉点位置,但最后一个(输出)参数是沿光线到交叉点位置的距离。因此,您将获得与orig + intersectionDistance*dir

的交叉位置