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
的交点位置
我对 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