More refactoring of twist()

This commit is contained in:
hodapp 2020-03-27 19:26:06 -04:00
parent f8f2d4ac31
commit 96f8004df2

View File

@ -387,23 +387,30 @@ fn twist(f: f32, subdiv: usize) -> Rule {
let qtr = std::f32::consts::FRAC_PI_2;
let y = Vector3::y_axis();
let recur = move |self_: Rc<Rule>| -> RuleEval {
let incr = geometry::Translation3::new(-dx0, 0.0, 0.0).to_homogeneous() *
geometry::Rotation3::from_axis_angle(&y, ang).to_homogeneous() *
geometry::Translation3::new(dx0, dy, 0.0).to_homogeneous();
let seed_orig = transform(&seed, &incr);
let seed_sub = util::subdivide_cycle(&seed_orig, subdiv);
let n = seed_sub.len();
let (vc, faces) = util::connect_convex(&seed_sub, true);
RuleEval {
geom: OpenMesh {
verts: seed_sub,
let geom = OpenMesh {
verts: seed_sub.clone(),
faces: util::parallel_zigzag_faces(n),
},
final_geom: OpenMesh { verts: vec![vc], faces },
};
let (vc, faces) = util::connect_convex(&seed_sub, true);
let final_geom = OpenMesh {
verts: vec![vc],
faces: faces.clone(),
};
let recur = move |self_: Rc<Rule>| -> RuleEval {
// TODO: Why clone geometry here if I just have to clone it
// later on? Seems like Rc may be much easier (if I can't
// borrow directly - which is probably the case).
RuleEval {
geom: geom.clone(),
final_geom: final_geom.clone(),
children: vec![
Child {
rule: self_.clone(),