mirror of
https://github.com/hannobraun/Fornjot
synced 2025-01-11 02:37:00 +00:00
Add surface_aabb_from_bounded_curve
This commit is contained in:
parent
27179edb8f
commit
671ffc169a
@ -7,9 +7,9 @@
|
||||
//! module provides an easy place to put new things, before it's clear what to
|
||||
//! do with them long-term.
|
||||
|
||||
use fj_math::Point;
|
||||
use fj_math::{Aabb, Point};
|
||||
|
||||
use super::{traits::GenPolyline, Tolerance};
|
||||
use super::{traits::GenPolyline, CurveBoundary, Tolerance};
|
||||
|
||||
/// # Convert a point on a curve from curve coordinates to surface coordinates
|
||||
pub fn curve_point_to_surface_point(
|
||||
@ -25,3 +25,20 @@ pub fn curve_point_to_surface_point(
|
||||
|
||||
line.point_from_line_coords(point_curve)
|
||||
}
|
||||
|
||||
/// # Generate a 2D axis-aligned bounding box for a curve in a given range
|
||||
pub fn surface_aabb_from_bounded_curve(
|
||||
curve: &dyn GenPolyline<2>,
|
||||
boundary: impl Into<CurveBoundary<Point<1>>>,
|
||||
tolerance: impl Into<Tolerance>,
|
||||
) -> Aabb<2> {
|
||||
let boundary = boundary.into();
|
||||
let tolerance = tolerance.into();
|
||||
|
||||
let points_curve = curve.generate_polyline(boundary, tolerance);
|
||||
let points_surface = points_curve.into_iter().map(|point_curve| {
|
||||
curve_point_to_surface_point(curve, point_curve, tolerance)
|
||||
});
|
||||
|
||||
Aabb::<2>::from_points(points_surface)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user