pub mod connectivity;
pub mod merge;
pub mod normals;
pub use self::connectivity::*;
pub use self::merge::*;
pub use self::normals::*;
#[cfg(test)]
pub(crate) mod test_utils {
use crate::mesh::{attrib::*, topology::*};
type PolyMesh = crate::mesh::PolyMesh<f64>;
pub(crate) fn build_polymesh_sample() -> (PolyMesh, PolyMesh, PolyMesh) {
let verts = vec![
[0.0, 0.0, 0.0],
[0.0, 0.0, 1.0],
[0.0, 1.0, 0.0],
[0.0, 1.0, 1.0],
[1.0, 0.0, 0.0],
[1.0, 0.0, 1.0],
[1.0, 1.0, 0.0],
[1.0, 1.0, 1.0],
];
let indices = vec![3, 0, 1, 2, 3, 2, 1, 3, 4, 4, 5, 7, 6];
let mesh = PolyMesh::new(verts, &indices);
let comp1 = PolyMesh::new(
vec![
[0.0, 0.0, 0.0],
[0.0, 0.0, 1.0],
[0.0, 1.0, 0.0],
[0.0, 1.0, 1.0],
],
&[3, 0, 1, 2, 3, 2, 1, 3],
);
let comp2 = PolyMesh::new(
vec![
[1.0, 0.0, 0.0],
[1.0, 0.0, 1.0],
[1.0, 1.0, 0.0],
[1.0, 1.0, 1.0],
],
&[4, 0, 1, 3, 2],
);
(mesh, comp1, comp2)
}
pub(crate) fn add_vertex_attrib_to_polymeshes(sample: &mut (PolyMesh, PolyMesh, PolyMesh)) {
sample
.0
.add_attrib_data::<usize, VertexIndex>("v", (0..sample.0.num_vertices()).collect())
.unwrap();
sample
.1
.add_attrib_data::<usize, VertexIndex>("v", vec![0, 1, 2, 3])
.unwrap();
sample
.2
.add_attrib_data::<usize, VertexIndex>("v", vec![4, 5, 6, 7])
.unwrap();
}
pub(crate) fn add_face_attrib_to_polymeshes(sample: &mut (PolyMesh, PolyMesh, PolyMesh)) {
sample
.0
.add_attrib_data::<usize, FaceIndex>("f", (0..sample.0.num_faces()).collect())
.unwrap();
sample
.1
.add_attrib_data::<usize, FaceIndex>("f", vec![0, 1])
.unwrap();
sample
.2
.add_attrib_data::<usize, FaceIndex>("f", vec![2])
.unwrap();
}
pub(crate) fn add_face_vertex_attrib_to_polymeshes(
sample: &mut (PolyMesh, PolyMesh, PolyMesh),
) {
sample
.0
.add_attrib_data::<usize, FaceVertexIndex>(
"fv",
(0..sample.0.num_face_vertices()).collect(),
)
.unwrap();
sample
.1
.add_attrib_data::<usize, FaceVertexIndex>("fv", vec![0, 1, 2, 3, 4, 5])
.unwrap();
sample
.2
.add_attrib_data::<usize, FaceVertexIndex>("fv", vec![6, 7, 8, 9])
.unwrap();
}
pub(crate) fn add_face_edge_attrib_to_polymeshes(sample: &mut (PolyMesh, PolyMesh, PolyMesh)) {
sample
.0
.add_attrib_data::<usize, FaceEdgeIndex>("fe", (0..sample.0.num_face_edges()).collect())
.unwrap();
sample
.1
.add_attrib_data::<usize, FaceEdgeIndex>("fe", vec![0, 1, 2, 3, 4, 5])
.unwrap();
sample
.2
.add_attrib_data::<usize, FaceEdgeIndex>("fe", vec![6, 7, 8, 9])
.unwrap();
}
pub(crate) fn add_attribs_to_polymeshes(sample: &mut (PolyMesh, PolyMesh, PolyMesh)) {
add_vertex_attrib_to_polymeshes(sample);
add_face_attrib_to_polymeshes(sample);
add_face_vertex_attrib_to_polymeshes(sample);
add_face_edge_attrib_to_polymeshes(sample);
}
}