use na; use na::{Point2, Point3}; use super::{IndexBuffer, TriMesh}; use math::Point; /// Adds a double-sided quad to the scene. /// /// The quad is initially centered at (0, 0, 0). Its normal is the `z` axis. The quad itself is /// composed of a user-defined number of triangles regularly spaced on a grid. This is the main way /// to draw height maps. /// /// # Arguments /// * `w` - the quad width. /// * `h` - the quad height. /// * `usubdivs` - number of horizontal subdivisions. This correspond to the number of squares /// which will be placed horizontally on each line. Must not be `0`. /// * `vsubdivs` - number of vertical subdivisions. This correspond to the number of squares /// which will be placed vertically on each line. Must not be `0`. pub fn quad
(width: P::Real, height: P::Real, usubdivs: usize, vsubdivs: usize) -> TriMesh
where P: Point, { let mut quad = unit_quad::
(usubdivs, vsubdivs);
let mut s = na::zero:: (vertices: &[P], nhpoints: usize, nvpoints: usize) -> TriMesh
where
P: Point,
{
assert!(
nhpoints > 1 && nvpoints > 1,
"The number of points must be at least 2 in each dimension."
);
let mut res = unit_quad:: (nhpoints - 1, nvpoints - 1);
for (dest, src) in res.coords.iter_mut().zip(vertices.iter()) {
*dest = src.clone();
}
res
}
/// Adds a double-sided quad with unit size to the scene.
///
/// The quad is initially centered at (0, 0, 0). Its normal is the `z` axis. The quad itself is
/// composed of a user-defined number of triangles regularly spaced on a grid. This is the main way
/// to draw height maps.
///
/// # Arguments
/// * `usubdivs` - number of horizontal subdivisions. This correspond to the number of squares
/// which will be placed horizontally on each line. Must not be `0`.
/// * `vsubdivs` - number of vertical subdivisions. This correspond to the number of squares
/// which will be placed vertically on each line. Must not be `0`.
pub fn unit_quad (usubdivs: usize, vsubdivs: usize) -> TriMesh
where
P: Point,
{
assert!(
usubdivs > 0 && vsubdivs > 0,
"The number of subdivisions cannot be zero"
);
assert!(na::dimension::