射线方程
射线起点:R0=(x0, y0, z0), 方向向量D=(x1, x2, x3) t为参数
射线方程:R(t) = R0 + D*t t > =0
平面方程
平面是由无穷多个点组成的,平面的法向量N=(A, B, C) 平面上已知一点:P0=(x0, y0, z0),其上任意一点P(x, y, z)满足如下方程:
A(x - x0) + B(y - y0) + C(z - z0) = 0 ===>
N·(P - P0) = 0
glm::vec3 P01 = P[1] - P[0];
glm::vec3 P02 = P[2] - P[0];
glm::vec3 N = glm::cross(P01, P02);
射线与平面相交
射线与平面相交
射线和平面的交点同时满足射线和平面方程
射线方程代入平面方程,N·(R0 + D*t - P0) = 0,整理后得到:
t=(P0 - R0)·N / D·N
再代人射线方程得出交点为:
R(t) = R0 + D*t