--- a/src/cube.rs Mon Oct 21 23:07:01 2024 -0500 +++ b/src/cube.rs Tue Oct 22 08:27:45 2024 -0500 @@ -1,19 +1,20 @@ -use core::f64; - +use serde_repr::*; +use serde::Serialize; use alg_tools::loc::Loc; use alg_tools::norms::{Norm, L2}; use crate::manifold::{ManifoldPoint, EmbeddedManifoldPoint}; -#[derive(Copy, Clone, Debug, Eq, PartialEq)] -pub enum Face {F1, F2, F3, F4, F5, F6} +#[derive(Copy, Clone, Debug, Eq, PartialEq, Serialize_repr, Deserialize_repr)] +#[repr(u8)] +pub enum Face {F1 = 1, F2 = 2, F3 = 3, F4 = 4, F5 = 5, F6 = 6} use Face::*; pub type Point = Loc<f64, 2>; pub type AdjacentFaces = [Face; 4]; -#[derive(Clone, Debug)] +#[derive(Clone, Debug, Serialize)] pub enum Path { Direct { destination : Face }, Indirect { destination : Face, intermediate : Face }, @@ -216,7 +217,7 @@ } } -#[derive(Clone, Debug, PartialEq)] +#[derive(Clone, Debug, PartialEq, Serialize)] pub struct OnCube { face : Face, point : Point, @@ -244,6 +245,10 @@ } (best_tan, best_len) } + + pub fn face(&self) -> Face { + self.face + } }