From 958e27ca108a2462e30605ba60134bb1fb1393d3 Mon Sep 17 00:00:00 2001 From: Hanno Braun Date: Wed, 9 Apr 2025 11:49:35 +0200 Subject: [PATCH] Add `CurveGeometry::project_point` --- experiments/2025-03-18/src/geometry/curve.rs | 5 +++++ experiments/2025-03-18/src/geometry/swept_curve.rs | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/experiments/2025-03-18/src/geometry/curve.rs b/experiments/2025-03-18/src/geometry/curve.rs index 9f3898c1c..2beeacefa 100644 --- a/experiments/2025-03-18/src/geometry/curve.rs +++ b/experiments/2025-03-18/src/geometry/curve.rs @@ -2,6 +2,7 @@ use fj_math::{Line, Point, Transform, Vector}; pub trait CurveGeometry { fn point_from_local(&self, point: Point<1>) -> Point<3>; + fn project_point(&self, point: Point<3>) -> Point<1>; fn translate(&self, offset: Vector<3>) -> Box; } @@ -10,6 +11,10 @@ impl CurveGeometry for Line<3> { self.point_from_line_coords(point) } + fn project_point(&self, point: Point<3>) -> Point<1> { + self.point_to_line_coords(point) + } + fn translate(&self, offset: Vector<3>) -> Box { let translated = self.transform(&Transform::translation(offset)); Box::new(translated) diff --git a/experiments/2025-03-18/src/geometry/swept_curve.rs b/experiments/2025-03-18/src/geometry/swept_curve.rs index 685901ed8..30dddfc0f 100644 --- a/experiments/2025-03-18/src/geometry/swept_curve.rs +++ b/experiments/2025-03-18/src/geometry/swept_curve.rs @@ -25,7 +25,7 @@ impl SweptCurve { pub fn project_point(&self, point: impl Into>) -> Point<2> { let point = point.into(); - let u = self.curve.point_to_line_coords(point); + let u = self.curve.project_point(point); let v = { let origin = self.curve.point_from_line_coords(u); let line = Line::from_origin_and_direction(origin, self.path);