Code covered by the BSD License

### Highlights from Triangle/Ray Intersection

4.33333
4.3 | 3 ratings Rate this file 47 Downloads (last 30 days) File Size: 211 KB File ID: #33073

# Triangle/Ray Intersection

### Jaroslaw Tuszynski (view profile)

29 Sep 2011 (Updated )

Fast vectorized triangle/ray intersection algorithm

File Information
Description

Ray/triangle intersection using the algorithm proposed by MÃ¶ller and
Trumbore (1997), implemented as highly vectorized MATLAB code.
The algorithm can work with one and two sided surfaces, as well as, with
infinite lines, rays (lines bounded on one side) and segments (lines bounded on
both sides).
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

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
xcoor - carthesian coordinates of the intersection point

In addition PointInsideVolume is 3D equivalent to 2D inpolygon function and can test if
array of points is inside or outside any volume defined by the surface grid.

Acknowledgements

Ray/Triangle Intersection inspired this file.

This file inspired Ray Shape Article Fex.Zip and In Polyhedron.

Required Products Symbolic Math Toolbox
MATLAB
MATLAB release MATLAB 7.12 (R2011a)
MATLAB Search Path
```/
/html```
29 Oct 2014 Jeffrey

### Jeffrey (view profile)

I'm having trouble with the many rays, many faces option. Lets say I have 11 faces and 5 rays. What resizing of the inputs needs to be done? Do I need to repmat all arrays to be of size 55x3?

Based on what I can tell it can handle:
- one ray, many faces
- many rays, one face
- many rays, many faces (but # of faces = # of rays)

But I think I am just missing something here.

19 Sep 2014 Jaroslaw Tuszynski

### Jaroslaw Tuszynski (view profile)

Reply to Nick: In many rays and many triangle case you still test for intersection of prearranged pairs and the return value informs you which ray/triangle pair intersected

Comment only
24 Mar 2014 Nick

### Nick (view profile)

Very useful but when considering many rays and many triangles is there a way to find which ray has intersected which triangle?

Comment only
24 Mar 2014 Nick

### Nick (view profile)

28 Aug 2013 Amilcar Torres

12 Apr 2013 Ben

### Ben (view profile)

Comment only
06 Oct 2012 Jaroslaw Tuszynski

### Jaroslaw Tuszynski (view profile)

Re to Anton Semechko: This is a low level function which can be called with one ray and many faces, many faces and one ray or many faces and rays. It is quite simple to apply repmat function to the inputs.

Comment only
28 Feb 2012 Anton Semechko

### Anton Semechko (view profile)

why does the number of rays have to equal the number of faces? that's so inconvenient

Comment only
07 Oct 2011

Improvements to border handling

21 Mar 2013

correct treatment of 3x3 arrays as suggested by Andreas Weber

07 Jun 2013

documentation improvements and typo correction

03 Oct 2014

Major rewrite of the function with additional options and output variables. Also provided PointInsideVolume function