haar_lib/geom/
dist_segments.rs1use crate::{
4 geom::{dist_segment_point::*, *},
5 min,
6};
7
8pub fn dist_segments(l1: Line, l2: Line) -> f64 {
10 let cr = l1.cross(l2);
11 let t1 = (l2.from - l1.from).cross(l2.diff()) / cr;
12 let t2 = (l2.from - l1.from).cross(l1.diff()) / cr;
13
14 if cr == 0.0 || !(0.0..1.0).contains(&t1) || !(0.0..1.0).contains(&t2) {
15 min! {
16 dist_segment_point(l1, l2.from),
17 dist_segment_point(l1, l2.to),
18 dist_segment_point(l2, l1.from),
19 dist_segment_point(l2, l1.to)
20 }
21 } else {
22 0.0
23 }
24}