如果我知道平面总是在同一个 z 轴上(所以它不能旋转),并且它的宽度/高度是无限的,那么有什么方法可以快速检查我的线在平面中的相交位置?另外,我的“线”实际上不是一条线,而是一个 3d 矢量,所以“线”可以无限远。
这是依赖于两点的代码:(p1 和 p2 是直线的起点和终点。plane_z = 平面所在的位置)
k1 = -p2.z/(p1.z-p2.z-plane_z);
k2 = 1.0f-k1;
ix = k1*p1.x + k2*p2.x;
iy = k1*p1.y + k2*p2.y;
iz = plane_z; // where my plane lays
另一个使用向量的解决方案(我也像第一个示例一样使用两个点,“p2.x-p1.x”等是向量计算):
a = (plane_z-p1.z)/(p2.z-p1.z);
ix = p1.x + a*(p2.x-p1.x);
iy = p1.y + a*(p2.y-p1.y);
iz = plane_z;
Edit3:添加了 Orbling 的解决方案,它稍微快一点,并且不一定依赖两点。