rcgal 0.1.0

Rust Computational Geometry Algorithms Library.
Documentation
use crate::{
    algorithm::intersection::segment_2_segment_2::segment_2_segment_2_intersection,
    kernel::{
        edge_2::{Edge2, Edge2Type},
        number_type::NumberType,
        vertex_2::Vertex2,
    },
};

pub fn edge_2_edge_2_intersection<T: NumberType>(e1: &Edge2<T>, e2: &Edge2<T>) -> Vec<Vertex2<T>> {
    let edge_type_1 = e1.edge_type();
    let edge_type_2 = e2.edge_type();
    if edge_type_1 == edge_type_2 {
        match edge_type_1 {
            Edge2Type::Segment => {
                let s1 = e1.to_segment();
                let s2 = e2.to_segment();
                let result = segment_2_segment_2_intersection(&s1, &s2);
                return result
                    .iter()
                    .map(|point| Vertex2::new(point.x(), point.y()))
                    .collect();
            }
            Edge2Type::Arc => {
                panic!("Not implemented yet")
            }
        }
    }
    panic!("Not implemented yet")
}