axiolid_mesh/polygon.rs
1//! Polygonal face mesh that preserves n-gons and inner voids before triangulation.
2
3use axiolid_core::Point3;
4
5/// One polygonal face with an outer loop and zero or more inner loops.
6#[derive(Debug, Clone, Default, PartialEq, Eq)]
7pub struct PolygonFace {
8 /// Outer boundary position indices.
9 pub outer: Vec<u32>,
10 /// Inner boundary position indices.
11 pub holes: Vec<Vec<u32>>,
12}
13
14/// Indexed polygon mesh in local coordinates.
15#[derive(Debug, Clone, Default, PartialEq)]
16pub struct PolygonMesh {
17 /// Shared position list.
18 pub positions: Vec<Point3>,
19 /// Faces in source order.
20 pub faces: Vec<PolygonFace>,
21}