我是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
)。
答案 0 :(得分:3)
glm::gtx::intersect
没有线平面交点函数,但确实有intersectRayPlane
。
您可以通过两次调用该例程来构建一个光线平面交集(一次使用Line.direction
,一次使用-line.direction
)。不是最有效的选择,但可能适用于许多应用程序。
请注意,intersectRayPlane
不会直接返回交叉点位置,但最后一个(输出)参数是沿光线到交叉点位置的距离。因此,您将获得与orig + intersectionDistance*dir