parry3d/transformation/to_outline/
cylinder_to_outline.rs1use crate::math::Real;
2use crate::shape::Cylinder;
3use crate::transformation::utils;
4use alloc::{vec, vec::Vec};
5use na::{self, Point3, Vector3};
6
7impl Cylinder {
8 pub fn to_outline(&self, nsubdiv: u32) -> (Vec<Point3<Real>>, Vec<[u32; 2]>) {
10 let diameter = self.radius * 2.0;
11 let height = self.half_height * 2.0;
12 let scale = Vector3::new(diameter, height, diameter);
13 let (vtx, idx) = unit_cylinder_outline(nsubdiv);
14 (utils::scaled(vtx, scale), idx)
15 }
16}
17
18fn unit_cylinder_outline(nsubdiv: u32) -> (Vec<Point3<Real>>, Vec<[u32; 2]>) {
20 let mut out_vtx = vec![Point3::new(-0.5, -0.5, 0.0), Point3::new(-0.5, 0.5, 0.0)];
21 let mut out_idx = vec![];
22 #[allow(clippy::single_range_in_vec_init)] utils::apply_revolution(false, false, &[0..2], nsubdiv, &mut out_vtx, &mut out_idx);
24 (out_vtx, out_idx)
25}