Ray/triangle intersection using the algorithm proposed by MÃ¶ller and
Trumbore (1997), implemented as highly vectorized MATLAB code.
Input (all arrays in in Nx3, where N is number of vertices or rays):
orig : ray's origin
dir : ray's direction
vert0, vert1, vert2: vertices of the triangle
options: aditional customization options
options.epsilon (default = 1e-5)
options.triangle - 'one sided' or 'two sided' (default) - how to treat
triangles. In 'one sided' version only intersections in single
direction are counted and intersections with back facing
tringles are ignored
options.ray - 'ray' (default) or 'segment' - how to treat ray as an
infinite line (ray) or as line segment defined by a vector
Output:
Intersect - boolean array of length N
t - distance from the ray origin to the intersection point in |dir|
u,v - barycentric coordinates of the intersection point
units |