diff --git a/experiments/2024-12-09/src/export.rs b/experiments/2024-12-09/src/export.rs index 7f7af518e..bf53268c1 100644 --- a/experiments/2024-12-09/src/export.rs +++ b/experiments/2024-12-09/src/export.rs @@ -11,7 +11,7 @@ pub fn export(op: &dyn Object) -> anyhow::Result<()> { let mut triangles = Vec::new(); for triangle in tri_mesh.triangles { - let triangle = triangle.points.map(|point| { + let triangle = triangle.inner.points.map(|point| { *indices_by_vertex.entry(point).or_insert_with(|| { let index = points.len(); points.push(point); diff --git a/experiments/2024-12-09/src/extra/triangulate.rs b/experiments/2024-12-09/src/extra/triangulate.rs index cff0d5783..cdbbbeb5c 100644 --- a/experiments/2024-12-09/src/extra/triangulate.rs +++ b/experiments/2024-12-09/src/extra/triangulate.rs @@ -7,7 +7,7 @@ use geo::{Contains, Coord, LineString, Polygon}; use spade::Triangulation; use crate::{ - geometry::{TriMesh, Triangle}, + geometry::{MeshTriangle, TriMesh, Triangle}, math::{Plane, Point}, object::Handle, topology::half_edge::HalfEdge, @@ -32,7 +32,9 @@ pub fn triangulate( }) .map(|triangle| { let points = triangle.map(|point| point.point_vertex); - Triangle { points } + MeshTriangle { + inner: Triangle { points }, + } }); let mut mesh = TriMesh::new(); diff --git a/experiments/2024-12-09/src/geometry/mod.rs b/experiments/2024-12-09/src/geometry/mod.rs index aba675bc6..08256da6d 100644 --- a/experiments/2024-12-09/src/geometry/mod.rs +++ b/experiments/2024-12-09/src/geometry/mod.rs @@ -2,4 +2,8 @@ mod sketch; mod tri_mesh; mod triangle; -pub use self::{sketch::Sketch, tri_mesh::TriMesh, triangle::Triangle}; +pub use self::{ + sketch::Sketch, + tri_mesh::{MeshTriangle, TriMesh}, + triangle::Triangle, +}; diff --git a/experiments/2024-12-09/src/geometry/tri_mesh.rs b/experiments/2024-12-09/src/geometry/tri_mesh.rs index c77b6e91f..9cdc59040 100644 --- a/experiments/2024-12-09/src/geometry/tri_mesh.rs +++ b/experiments/2024-12-09/src/geometry/tri_mesh.rs @@ -2,7 +2,7 @@ use super::Triangle; #[derive(Debug)] pub struct TriMesh { - pub triangles: Vec>, + pub triangles: Vec, } impl TriMesh { @@ -17,3 +17,8 @@ impl TriMesh { self } } + +#[derive(Debug)] +pub struct MeshTriangle { + pub inner: Triangle<3>, +} diff --git a/experiments/2024-12-09/src/geometry/triangle.rs b/experiments/2024-12-09/src/geometry/triangle.rs index ab0b9e50c..f12fc4633 100644 --- a/experiments/2024-12-09/src/geometry/triangle.rs +++ b/experiments/2024-12-09/src/geometry/triangle.rs @@ -5,7 +5,7 @@ use crate::{ object::{HandleAny, Object}, }; -use super::TriMesh; +use super::{MeshTriangle, TriMesh}; #[derive(Clone, Debug, Eq, Ord, PartialEq, PartialOrd)] pub struct Triangle { @@ -38,7 +38,9 @@ impl Object for Triangle<3> { fn tri_mesh(&self) -> TriMesh { TriMesh { - triangles: vec![self.clone()], + triangles: vec![MeshTriangle { + inner: self.clone(), + }], } } diff --git a/experiments/2024-12-09/src/render/geometry.rs b/experiments/2024-12-09/src/render/geometry.rs index fea42ce15..584d4ec6e 100644 --- a/experiments/2024-12-09/src/render/geometry.rs +++ b/experiments/2024-12-09/src/render/geometry.rs @@ -19,7 +19,7 @@ impl Geometry { let mut vertices = Vec::new(); for triangle in &tri_mesh.triangles { - let triangle = triangle.points.each_ref().map(|point| { + let triangle = triangle.inner.points.each_ref().map(|point| { Vec3::from( point.coords.components.map(|coord| coord.value() as f32), )