linestring 0.16.0

line string toolbox
Documentation
// Emit a compilation error if the required features are not set
#[cfg(not(feature = "glam"))]
compile_error!("The feature 'glam' must be active for the tests");

use crate::LinestringError;
use itertools::Itertools;
use vector_traits::glam;

#[test]
fn test_indexed_intersection_1() -> Result<(), LinestringError> {
    use crate::linestring_2d::indexed_intersection::IntersectionTester;
    use glam::vec2;

    let vertices: Vec<glam::Vec2> = vec![
        vec2(651.3134, 410.21536),
        vec2(335.7384, 544.54614),
        vec2(154.29922, 363.10654),
        vec2(425.06284, 255.50153),
        vec2(651.1434, 387.16595),
        vec2(250.0, 300.0),
    ];
    let edges: Vec<(u32, u32)> = (0..vertices.len() as u32).tuples().collect();
    let input_vertices_len = vertices.len();

    let (output_vertices, result_iter) = IntersectionTester::new(vertices)
        .with_ignore_end_point_intersections(true)?
        .with_stop_at_first_intersection(true)?
        .with_edges(edges.iter())?
        .compute()?;

    assert_eq!(output_vertices.len(), input_vertices_len + 1);
    assert_eq!(1, result_iter.len());

    Ok(())
}