Closer now on 'barbs' example

This commit is contained in:
Chris Hodapp 2020-05-13 11:34:42 -04:00
parent 5641a9c96e
commit 586e5095bd
2 changed files with 17 additions and 18 deletions

View File

@ -59,14 +59,8 @@ pub fn barbs() -> Rule<()> {
]; ];
let n = base_verts.len(); let n = base_verts.len();
let incr: Transform = Transform::new(). let barb_incr: Transform = Transform::new().
translate(0.0, 0.0, 1.0). translate(0.0, 0.0, 0.5).
rotate(&Vector3::z_axis(), 0.15).
rotate(&Vector3::x_axis(), 0.1).
scale(0.95);
let incr2: Transform = Transform::new().
translate(0.0, 0.0, 1.5).
rotate(&Vector3::y_axis(), -0.2). rotate(&Vector3::y_axis(), -0.2).
scale(0.8); scale(0.8);
@ -87,20 +81,28 @@ pub fn barbs() -> Rule<()> {
*/ */
RuleEval { RuleEval {
geom: Rc::new(geom.transform(&incr)), geom: Rc::new(geom.transform(&barb_incr)),
final_geom: Rc::new(prim::empty_meshfunc()), // TODO final_geom: Rc::new(prim::empty_meshfunc()), // TODO
children: vec![ children: vec![
Child { Child {
rule: self_.clone(), rule: self_.clone(),
xf: incr2, xf: barb_incr,
vmap: (0..n).collect(), vmap: (0..n).collect(),
} }
] ]
} }
}; };
let barb_ = Rc::new(barb); let barb_ = Rc::new(barb);
let main_barb_trans = Transform::new().
rotate(&Vector3::y_axis(), -std::f32::consts::FRAC_PI_2).
translate(0.5, 0.0, 0.5);
let main_incr: Transform = Transform::new().
translate(0.0, 0.0, 1.0).
rotate(&Vector3::z_axis(), 0.15).
rotate(&Vector3::x_axis(), 0.1).
scale(0.95);
let b = base_verts.clone(); let b = base_verts.clone();
let main = move |self_: Rc<Rule<()>>| -> RuleEval<()> { let main = move |self_: Rc<Rule<()>>| -> RuleEval<()> {
let mut next_verts = b.clone(); let mut next_verts = b.clone();
@ -119,20 +121,17 @@ pub fn barbs() -> Rule<()> {
*/ */
RuleEval { RuleEval {
geom: Rc::new(geom.transform(&incr)), geom: Rc::new(geom.transform(&main_incr)),
final_geom: Rc::new(prim::empty_meshfunc()), // TODO final_geom: Rc::new(prim::empty_meshfunc()), // TODO
children: vec![ children: vec![
Child { Child {
rule: self_.clone(), rule: self_.clone(),
xf: incr, xf: main_incr,
vmap: (0..n).collect(), vmap: (0..n).collect(),
}, },
Child { Child {
rule: Rc::new(Rule { eval: barb_.clone(), ctxt: () }), rule: Rc::new(Rule { eval: barb_.clone(), ctxt: () }),
xf: Transform::new(). xf: main_incr * main_barb_trans,
translate(0.0, 0.0, 1.4).
rotate(&Vector3::y_axis(), -std::f32::consts::FRAC_PI_2).
scale(0.9),
vmap: vec![b0, b0 + 1, a0 + 1, a0], vmap: vec![b0, b0 + 1, a0 + 1, a0],
}, },
], ],

View File

@ -74,7 +74,7 @@ mod tests {
*/ */
#[test] #[test]
fn barbs() { run_test(examples::barbs(), 60, "barbs", false); } fn barbs() { run_test(examples::barbs(), 50, "barbs", false); }
/* /*
#[test] #[test]