如何确定 3-D 射线穿过的第一个三角形(一组三角形中的)?

How to determine the first triangle (out of a set of triangles) passed through by a 3-D ray?

我正在尝试解决 Python 中的以下问题。问题出在我使用有限元法时的图像处理问题。

在我的问题中,我有一组三角形和一条射线。每个三角形由三个三维点组成,射线的形式是一个三维点和一个三维向量。如何确定光线穿过的第一个三角形?现在我什至没有这个算法。任何输入将不胜感激。

我要做的第一件事是平移整个数据集,减去 3D 射线原点。然后旋转数据集,使射线的 3D 矢量与 X 轴对齐。参见 How to find the orthonormal transformation that will rotate a vector to the x axis?

现在问题已经转换为过滤与X轴交叉且X坐标为非负的三角形,并在其中找到其交叉点具有最小X坐标的三角形。所以