math_utils/geometry/mesh/
half_edge.rs1use stash::Stash;
2
3use crate::*;
4
5pub struct HalfEdgeMesh <S> {
6 pub vertices : Stash <Vertex <S>, u32>,
7 pub edges : Stash <Edge, u32>,
8 pub faces : Stash <Face, u32>
9}
10
11pub struct Vertex <S> {
12 pub point : Point3 <S>,
13 pub edge : EdgeId
14}
15
16pub struct Edge {
17 pub base : VertexId,
18 pub twin : Option <EdgeId>,
19 pub face : Option <FaceId>,
20 pub next : Option <EdgeId>
21}
22
23pub struct Face {
24 pub edge : EdgeId
25}
26
27#[derive(Clone, Copy, Debug, Eq, Ord, PartialEq, PartialOrd)]
28pub struct VertexId (pub u32);
29#[derive(Clone, Copy, Debug, Eq, Ord, PartialEq, PartialOrd)]
30pub struct EdgeId (pub u32);
31#[derive(Clone, Copy, Debug, Eq, Ord, PartialEq, PartialOrd)]
32pub struct FaceId (pub u32);
33
34pub fn report_sizes() {
36 use std::mem::size_of;
37 println!("half edge mesh report sizes...");
38 show!(size_of::<Vertex <f32>>());
39 show!(size_of::<Vertex <f64>>());
40 show!(size_of::<Face>());
41 show!(size_of::<Edge>());
42 println!("...half edge mesh report sizes");
43}