pub fn line_triangle<S>(
line: Line3<S>,
triangle: Triangle3<S>,
) -> Option<Line3Point<S>>Expand description
Given an infinitely extended line defined by segment endpoints (a, b), check to see if line intersects a given triangle, returning parameterized position along the line $a + t (b - a)$.
let line = frame::Line3::from (Segment3::noisy (
[0.0, 0.0, -1.0].into(), [0.0, 0.0, 1.0].into()
));
let triangle = Triangle3::noisy (
[0.0, 1.0, 0.0].into(), [-1.0, -1.0, 0.0].into(), [ 1.0, -1.0, 0.0].into());
assert_eq!(
line_triangle (line, triangle).unwrap(),
(0.5, [0.0, 0.0, 0.0].into()));
let triangle = Triangle3::noisy (
[0.0, 1.0, -2.0].into(), [-1.0, -1.0, -2.0].into(), [ 1.0, -1.0, -2.0].into());
assert_eq!(
line_triangle (line, triangle).unwrap(),
(-0.5, [0.0, 0.0, -2.0].into()));