|
1 | 1 | #[cfg(test)] |
2 | 2 | mod tests { |
| 3 | + use i_float::adapter::FloatPointAdapter; |
3 | 4 | use i_float::int::number::int::IntNumber; |
4 | 5 | use i_float::int::point::IntPoint; |
5 | 6 | use i_key_sort::sort::key::SortKey; |
6 | 7 | use i_overlay::core::fill_rule::FillRule; |
7 | 8 | use i_overlay::core::overlay::{Overlay, ShapeType}; |
8 | 9 | use i_overlay::core::overlay_rule::OverlayRule; |
9 | 10 | use i_overlay::core::solver::{Precision, Solver, Strategy}; |
10 | | - use i_overlay::float::overlay::FloatOverlay; |
| 11 | + use i_overlay::float::overlay::{FloatOverlay, OverlayOptions}; |
11 | 12 | use i_shape::base::data::{Path, Shape}; |
12 | 13 | use i_shape::{int_path, int_shape}; |
13 | 14 | use i_tree::{Expiration, LayoutNumber}; |
@@ -140,4 +141,42 @@ mod tests { |
140 | 141 | let _ = graph.extract_shapes(OverlayRule::Subject, &mut Default::default()); |
141 | 142 | } |
142 | 143 | } |
| 144 | + |
| 145 | + #[test] |
| 146 | + fn test_05() { |
| 147 | + let subj = vec![ |
| 148 | + vec![ |
| 149 | + [24902.9222201258, 11129.9683052215], |
| 150 | + [24821.9592401258, 11107.1269052215], |
| 151 | + [24902.9218201258, 11129.9681852215], |
| 152 | + [24898.9601001258, 11128.8505052215], |
| 153 | + ], |
| 154 | + vec![ |
| 155 | + [20094.9253001258, 12125.6660652215], |
| 156 | + [20094.9253001258, 12125.6647652215], |
| 157 | + [29795.5156201258, 10942.5275852215], |
| 158 | + ], |
| 159 | + vec![ |
| 160 | + [24902.2200401258, 11129.7702052215], |
| 161 | + [24902.3098801258, 11129.7955452215], |
| 162 | + [24902.4788601258, 11129.8432252215], |
| 163 | + ], |
| 164 | + vec![ |
| 165 | + [24902.4819801258, 11129.8441052215], |
| 166 | + [24902.4832001258, 11129.8444452215], |
| 167 | + [24902.4821401258, 11129.8441452215], |
| 168 | + ], |
| 169 | + ]; |
| 170 | + let points = subj.iter().flatten().collect::<Vec<_>>(); |
| 171 | + let adapter = |
| 172 | + FloatPointAdapter::<_, i64>::with_iter_and_scale_checked(points.into_iter(), 50_000.0).unwrap(); |
| 173 | + let mut options = OverlayOptions::default(); |
| 174 | + options.clean_result = true; |
| 175 | + options.ogc = true; |
| 176 | + options.preserve_output_collinear = true; |
| 177 | + let mut overlay = FloatOverlay::new_custom(adapter, options, Default::default(), 13) |
| 178 | + .unsafe_add_source(&subj, ShapeType::Subject); |
| 179 | + |
| 180 | + let _ = overlay.overlay(OverlayRule::Subject, FillRule::NonZero); |
| 181 | + } |
143 | 182 | } |
0 commit comments