(a: &[[f64; 2]], b: &[[f64; 2]])
| 1069 | } |
| 1070 | } |
| 1071 | } |
| 1072 | out |
| 1073 | } |
| 1074 | |
| 1075 | fn find_segment_covering_x(points: &[[f64; 2]], x: f64) -> Option<usize> { |
| 1076 | if points.len() < 2 { |
| 1077 | return None; |
| 1078 | } |
| 1079 | let eps = 1e-12; |
| 1080 | let mut idx = 0usize; |
| 1081 | while idx + 1 < points.len() { |
| 1082 | let x0 = points[idx][0]; |
| 1083 | let x1 = points[idx + 1][0]; |
| 1084 | if x >= x0 - eps && x <= x1 + eps { |
| 1085 | return Some(idx); |
| 1086 | } |
| 1087 | idx += 1; |
| 1088 | } |
| 1089 | None |
| 1090 | } |
| 1091 | |
| 1092 | fn y_at_x_in_segment(points: &[[f64; 2]], seg_idx: usize, x: f64) -> Option<f64> { |
| 1093 | let p0 = *points.get(seg_idx)?; |
| 1094 | let p1 = *points.get(seg_idx + 1)?; |
| 1095 | let x0 = p0[0]; |
| 1096 | let x1 = p1[0]; |
| 1097 | let eps = 1e-9; |
| 1098 | if x < x0 - eps || x > x1 + eps { |
no test coverage detected