41 lines
1.4 KiB
Rust
41 lines
1.4 KiB
Rust
use nalgebra::*;
|
|
use crate::openmesh::{OpenMesh, Tag, vertex};
|
|
|
|
/// Returns an empty mesh (no vertices, no faces).
|
|
pub fn empty_mesh() -> OpenMesh {
|
|
OpenMesh {
|
|
verts: vec![],
|
|
faces: vec![],
|
|
}
|
|
}
|
|
|
|
/// Returns a cube of sidelength one centered at (0,0,0).
|
|
pub fn cube() -> OpenMesh {
|
|
OpenMesh {
|
|
verts: vec![
|
|
vertex(0.0, 0.0, 0.0),
|
|
vertex(1.0, 0.0, 0.0),
|
|
vertex(0.0, 1.0, 0.0),
|
|
vertex(1.0, 1.0, 0.0),
|
|
vertex(0.0, 0.0, 1.0),
|
|
vertex(1.0, 0.0, 1.0),
|
|
vertex(0.0, 1.0, 1.0),
|
|
vertex(1.0, 1.0, 1.0),
|
|
],
|
|
faces: vec![
|
|
Tag::Body(0), Tag::Body(3), Tag::Body(1),
|
|
Tag::Body(0), Tag::Body(2), Tag::Body(3),
|
|
Tag::Body(1), Tag::Body(7), Tag::Body(5),
|
|
Tag::Body(1), Tag::Body(3), Tag::Body(7),
|
|
Tag::Body(5), Tag::Body(6), Tag::Body(4),
|
|
Tag::Body(5), Tag::Body(7), Tag::Body(6),
|
|
Tag::Body(4), Tag::Body(2), Tag::Body(0),
|
|
Tag::Body(4), Tag::Body(6), Tag::Body(2),
|
|
Tag::Body(2), Tag::Body(7), Tag::Body(3),
|
|
Tag::Body(2), Tag::Body(6), Tag::Body(7),
|
|
Tag::Body(0), Tag::Body(1), Tag::Body(5),
|
|
Tag::Body(0), Tag::Body(5), Tag::Body(4),
|
|
],
|
|
}.transform(&geometry::Translation3::new(-0.5, -0.5, -0.5).to_homogeneous())
|
|
}
|