INTERSECTLINETRIANGLE3D Intersection point of a 3D line and a 3D triangle. POINT = intersectLineTriangle3d(LINE, TRI) Compute coordinates of the intersection point between the line LINE and the triangle TRI. LINE is a 1-by-6 row vector given as: [X0 Y0 Z0 DX DY DZ] TRI is given either as a row vector [X1 Y1 Z1 X2 Y2 Z2 X3 Y3 Z3], or as a 3-by-3 array, each row containing coordinates of one of the triangle vertices. The result is a 1-by-3 array containing coordinates of the intesection point, or [NaN NaN NaN] if the line and the triangle do not intersect. [POINT POS] = intersectLineTriangle3d(LINE, TRI) Also returns the position of the intersection point on the line, or NaN if the line and the supporting plane of the triangle are parallel. [POINT POS ISINSIDE] = intersectLineTriangle3d(LINE, TRI) Also returns a boolean value, set to true if the line and the triangle intersect each other. Can be used for testing validity of result. Example line = [1 1 0 0 0 1]; tri = [0 0 5;5 0 0;0 5 0]; intersectLineTriangle3d(line, tri) ans = 1 1 3 See also points3d, lines3d, polygons3d, intersectRayPolygon3d, distancePointTriangle3d References Algorithm adapted from SoftSurfer Ray/Segment-Triangle intersection http://softsurfer.com/Archive/algorithm_0105/algorithm_0105.htm
Package: matgeom