#![allow(
clippy::many_single_char_names,
clippy::similar_names,
clippy::suboptimal_flops,
clippy::needless_range_loop,
clippy::cast_precision_loss,
clippy::doc_markdown,
clippy::missing_const_for_fn,
clippy::manual_let_else
)]
mod chaining;
mod curve_surface;
mod line;
mod plane;
mod surface_marching;
mod surface_seeding;
use crate::nurbs::curve::NurbsCurve;
use crate::vec::Point3;
pub use chaining::chain_intersection_points;
pub use curve_surface::{CurveSurfaceHit, intersect_curve_surface};
pub use line::intersect_line_nurbs;
pub use plane::intersect_plane_nurbs;
pub use surface_seeding::intersect_nurbs_nurbs;
const MAX_QUEUE_SIZE: usize = 100;
const MAX_SEGMENTS: usize = 50;
const MAX_BRANCHES_PER_DIRECTION: usize = 10;
const MAX_NEWTON_ITER: usize = 20;
#[derive(Debug, Clone, Copy)]
pub struct IntersectionPoint {
pub point: Point3,
pub param1: (f64, f64),
pub param2: (f64, f64),
}
#[derive(Debug, Clone)]
pub struct IntersectionCurve {
pub curve: NurbsCurve,
pub points: Vec<IntersectionPoint>,
}
#[cfg(test)]
mod tests;