使用 Möller 和Trumbore (1997),作为高度矢量化的 MATLAB 代码实现。 该算法可以处理一侧和两侧的表面,也可以处理无限线、射线(以一侧为界的线)和线段(以双方)。 输入(Nx3 中的所有数组,其中 N 是顶点数或射线数): orig : 射线的起源dir : 射线的方向vert0, vert1, vert2: 三角形的顶点输出: 相交 - 长度为 N 的布尔数组t - 从射线原点到 |dir| 中的交点的距离u,v - 交点单位的重心坐标xcoor - 交点的笛卡尔坐标此外 PointInsideVolume 是 3D 等效于 2D inpolygon 函数,可以测试是否点数组位于由表面网格定义的任何体积的内部或外部。
2022-03-11 16:54:30
647KB
matlab
1