From 313d9713f035fa21473bbd4334ae74e17018686d Mon Sep 17 00:00:00 2001 From: Hanno Braun Date: Mon, 7 Apr 2025 13:07:51 +0200 Subject: [PATCH] Prepare to support other curves beside lines --- experiments/2025-03-18/src/geometry/curve.rs | 9 ++++++++- experiments/2025-03-18/src/topology/curve.rs | 9 +++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/experiments/2025-03-18/src/geometry/curve.rs b/experiments/2025-03-18/src/geometry/curve.rs index ec78f4f22..1a6565a3e 100644 --- a/experiments/2025-03-18/src/geometry/curve.rs +++ b/experiments/2025-03-18/src/geometry/curve.rs @@ -1,4 +1,4 @@ -use fj_math::Vector; +use fj_math::{Line, Transform, Vector}; pub trait CurveGeometry { fn translate(&self, offset: Vector<3>) -> Box; @@ -9,3 +9,10 @@ impl CurveGeometry for () { Box::new(()) } } + +impl CurveGeometry for Line<3> { + 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/topology/curve.rs b/experiments/2025-03-18/src/topology/curve.rs index ecd07625f..ff740890d 100644 --- a/experiments/2025-03-18/src/topology/curve.rs +++ b/experiments/2025-03-18/src/topology/curve.rs @@ -1,3 +1,5 @@ +use fj_math::Line; + use crate::geometry::CurveGeometry; use super::vertex::Vertex; @@ -7,9 +9,12 @@ pub struct Curve { } impl Curve { - pub fn line_from_vertices(_: [&Vertex; 2]) -> Self { + pub fn line_from_vertices(vertices: [&Vertex; 2]) -> Self { + let points = vertices.map(|vertex| vertex.point); + let (line, _) = Line::from_points(points); + Self { - geometry: Box::new(()), + geometry: Box::new(line), } } }