prosha/src/prim.rs
2020-02-22 13:43:55 -05:00

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())
}