From e47df86f4b8e2de512b626dde2bc2bb522cc6503 Mon Sep 17 00:00:00 2001 From: Hanno Braun Date: Tue, 8 Apr 2025 11:34:28 +0200 Subject: [PATCH] Add `CurveGeometry::point_from_local` --- experiments/2025-03-18/src/geometry/curve.rs | 7 ++++++- experiments/2025-03-18/src/geometry/swept_curve.rs | 4 +++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/experiments/2025-03-18/src/geometry/curve.rs b/experiments/2025-03-18/src/geometry/curve.rs index f7565d9e1..9f3898c1c 100644 --- a/experiments/2025-03-18/src/geometry/curve.rs +++ b/experiments/2025-03-18/src/geometry/curve.rs @@ -1,10 +1,15 @@ -use fj_math::{Line, Transform, Vector}; +use fj_math::{Line, Point, Transform, Vector}; pub trait CurveGeometry { + fn point_from_local(&self, point: Point<1>) -> Point<3>; fn translate(&self, offset: Vector<3>) -> Box; } impl CurveGeometry for Line<3> { + fn point_from_local(&self, point: Point<1>) -> Point<3> { + self.point_from_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 5f385b00c..c29f777b8 100644 --- a/experiments/2025-03-18/src/geometry/swept_curve.rs +++ b/experiments/2025-03-18/src/geometry/swept_curve.rs @@ -1,5 +1,7 @@ use fj_math::{Line, Point, Transform, Vector}; +use super::CurveGeometry; + pub struct SweptCurve { pub curve: Line<3>, pub path: Vector<3>, @@ -29,7 +31,7 @@ impl SweptCurve { pub fn point_from_local(&self, point: impl Into>) -> Point<3> { let [u, v] = point.into().coords.components; - self.curve.point_from_line_coords(Point::from([u])) + self.v() * v + self.curve.point_from_local(Point::from([u])) + self.v() * v } pub fn project_point(&self, point: impl Into>) -> Point<2> {