如何确定 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坐标的三角形。所以
对于每个三角形,检查其 平面 与 X 轴的交点。参见 Determine point of interesction of plane with axis given points of plane
然后丢弃交点(在 X 轴上)不在三角形边界内的三角形(检查该点位于“内部”的三个边中的每一个“它的一面)。参见 Check whether a point is within a 3D Triangle
丢弃交叉点具有负 X 坐标的三角形。
在剩下的三角形中(真正在正侧与X轴相交的)找到X坐标交点最小的那个。
我正在尝试解决 Python 中的以下问题。问题出在我使用有限元法时的图像处理问题。
在我的问题中,我有一组三角形和一条射线。每个三角形由三个三维点组成,射线的形式是一个三维点和一个三维向量。如何确定光线穿过的第一个三角形?现在我什至没有这个算法。任何输入将不胜感激。
我要做的第一件事是平移整个数据集,减去 3D 射线原点。然后旋转数据集,使射线的 3D 矢量与 X 轴对齐。参见 How to find the orthonormal transformation that will rotate a vector to the x axis?。
现在问题已经转换为过滤与X轴交叉且X坐标为非负的三角形,并在其中找到其交叉点具有最小X坐标的三角形。所以
对于每个三角形,检查其 平面 与 X 轴的交点。参见 Determine point of interesction of plane with axis given points of plane
然后丢弃交点(在 X 轴上)不在三角形边界内的三角形(检查该点位于“内部”的三个边中的每一个“它的一面)。参见 Check whether a point is within a 3D Triangle
丢弃交叉点具有负 X 坐标的三角形。
在剩下的三角形中(真正在正侧与X轴相交的)找到X坐标交点最小的那个。