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}