diff --git a/experiments/2024-10-30/src/geometry.rs b/experiments/2024-10-30/src/geometry.rs index 295cbda1b..ecba8c3b6 100644 --- a/experiments/2024-10-30/src/geometry.rs +++ b/experiments/2024-10-30/src/geometry.rs @@ -58,6 +58,10 @@ impl<'r, T> OperationResult<'r, T> { results: self.results.push_right(vertex), } } + + pub fn results(self) -> T { + self.results + } } #[derive(Clone, Copy, Debug, Eq, Ord, PartialEq, PartialOrd)] diff --git a/experiments/2024-10-30/src/model.rs b/experiments/2024-10-30/src/model.rs index 7100996b0..2a5993bac 100644 --- a/experiments/2024-10-30/src/model.rs +++ b/experiments/2024-10-30/src/model.rs @@ -3,33 +3,32 @@ use crate::geometry::Operations; pub fn model() -> anyhow::Result { let mut mesh = Operations::default(); - mesh.vertex([-0.5, -0.5, -0.5]) // 0 - .vertex([0.5, -0.5, -0.5]) // 1 - .vertex([-0.5, 0.5, -0.5]) // 2 - .vertex([0.5, 0.5, -0.5]) // 3 - .vertex([-0.5, -0.5, 0.5]) // 4 - .vertex([0.5, -0.5, 0.5]) // 5 - .vertex([-0.5, 0.5, 0.5]) // 6 - .vertex([0.5, 0.5, 0.5]); // 7 + let (a, b, c, d, e, f, g, h) = mesh + .vertex([-0.5, -0.5, -0.5]) + .vertex([0.5, -0.5, -0.5]) + .vertex([-0.5, 0.5, -0.5]) + .vertex([0.5, 0.5, -0.5]) + .vertex([-0.5, -0.5, 0.5]) + .vertex([0.5, -0.5, 0.5]) + .vertex([-0.5, 0.5, 0.5]) + .vertex([0.5, 0.5, 0.5]) + .results(); [ - [0, 4, 6], // left - [0, 6, 2], - [1, 3, 7], // right - [1, 7, 5], - [0, 1, 5], // front - [0, 5, 4], - [2, 7, 3], // back - [2, 6, 7], - [0, 2, 1], // bottom - [1, 2, 3], - [4, 5, 7], // top - [4, 7, 6], + [a, e, g], // left + [a, g, c], + [b, d, h], // right + [b, h, f], + [a, b, f], // front + [a, f, e], + [c, h, d], // back + [c, g, h], + [a, c, b], // bottom + [b, c, d], + [e, f, h], // top + [e, h, g], ] - .map(|triangle| { - let triangle = triangle.map(|index| mesh.vertices[index]); - mesh.triangle(triangle) - }); + .map(|triangle| mesh.triangle(triangle)); Ok(mesh) }