GLM:获取平面线交点的位置
Posted
技术标签:
【中文标题】GLM:获取平面线交点的位置【英文标题】:GLM: Get position of plane-line-intersection 【发布时间】:2017-03-30 12:21:38 【问题描述】:我对 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
函数不是我想要的,因为我需要交点,而那些只返回它们是否相交 (boolean
)。
【问题讨论】:
glm::gtx::intersect
中的大多数函数实际上会将交点位置作为输出参数返回给您。
【参考方案1】:
glm::gtx::intersect
没有线平面相交功能,但有intersectRayPlane
。
您可以通过调用该例程两次(一次使用Line.direction
,一次使用-line.direction
)来构建射线平面相交。不是最有效的选择,但可能适用于许多应用程序。
注意intersectRayPlane
不直接返回交点位置,但最后一个(输出)参数是沿射线到交点位置的距离。所以你会得到与orig + intersectionDistance*dir
的交点位置
【讨论】:
以上是关于GLM:获取平面线交点的位置的主要内容,如果未能解决你的问题,请参考以下文章