Small rename/refactor

This commit is contained in:
Chris Hodapp 2020-10-06 17:38:38 -04:00
parent 7ba6bcd648
commit 9638115f9e
2 changed files with 44 additions and 48 deletions

View File

@ -70,7 +70,7 @@ impl Barbs {
}
}
fn limit_check(&self, xform: &Transform, iters: usize) -> bool {
fn limit_check(&self, xform: &Transform, _: usize) -> bool {
// Assume all scales are the same (for now)
let (s, _, _) = xform.get_scale();
return s < 0.005;
@ -113,7 +113,7 @@ impl Barbs {
}
}
pub struct RamHorn {
pub struct TreeThing {
incr: Transform,
splits: [Transform; 4],
base: Vec<Vertex>,
@ -123,12 +123,12 @@ pub struct RamHorn {
depth: usize,
}
impl RamHorn {
pub fn new(f: f32, depth: usize) -> RamHorn {
impl TreeThing {
pub fn new(f: f32, depth: usize) -> TreeThing {
// Incremental transform for each layer:
let v = Unit::new_normalize(Vector3::new(-1.0, 0.0, 1.0));
let incr: Transform = Transform::new().
translate(0.0, 0.0, 0.8 * f).
translate(0.0, 0.0, 0.9 * f).
rotate(&v, 0.4 * f).
scale(1.0 - (1.0 - 0.95) * f);
// 'Base' vertices, used throughout:
@ -158,7 +158,7 @@ impl RamHorn {
translate(0.25, 0.25, 0.0).
scale(0.5);
}
RamHorn {
TreeThing {
incr: incr,
splits: splits,
base: base,
@ -171,10 +171,9 @@ impl RamHorn {
pub fn run(mut self) -> Mesh {
// Make seed vertices, use them for 'bottom' face, and recurse:
let xf = id().translate(0.0, 0.0, -0.5);
self.verts.append(&mut xf.transform(&self.base));
self.verts.append(&mut self.base.clone());
self.faces.extend_from_slice(&[0, 1, 2, 0, 2, 3]);
self.trans(id(), [0,1,2,3]);
self.child(id(), self.depth, [0,1,2,3]);
return Mesh {
verts: self.verts,
faces: self.faces,
@ -184,39 +183,7 @@ impl RamHorn {
fn limit_check(&self, xform: &Transform) -> bool {
// Assume all scales are the same (for now)
let (s, _, _) = xform.get_scale();
return s < 0.005;
}
// 'Transition' stage (which splits from base to 4 parts):
fn trans(&mut self, xform: Transform, b: [usize; 4]) {
let (n, _) = self.verts.append_indexed(xform.transform(&self.base));
let (m01, _) = self.verts.append_indexed(xform.transform(&self.trans));
let (m12, m23, m30, c) = (m01 + 1, m01 + 2, m01 + 3, m01 + 4);
self.faces.extend_from_slice(&[
// two faces straddling edge from vertex 0:
b[0], n+0, m01,
b[0], m30, n+0,
// two faces straddling edge from vertex 1:
b[1], n+1, m12,
b[1], m01, n+1,
// two faces straddling edge from vertex 2:
b[2], n+2, m23,
b[2], m12, n+2,
// two faces straddling edge from vertex 3:
b[3], n+3, m30,
b[3], m23, n+3,
// four faces from edge (0,1), (1,2), (2,3), (3,0):
b[0], m01, b[1],
b[1], m12, b[2],
b[2], m23, b[3],
b[3], m30, b[0],
]);
self.child(xform * self.splits[0], self.depth,[c, m12, n+2, m23]);
self.child(xform * self.splits[1], self.depth,[c, m01, n+1, m12]);
self.child(xform * self.splits[2], self.depth,[c, m30, n+0, m01]);
self.child(xform * self.splits[3], self.depth,[c, m23, n+3, m30]);
return s < 0.002;
}
fn child(&mut self, xform: Transform, depth: usize, b: [usize; 4]) {
@ -226,14 +193,43 @@ impl RamHorn {
return;
}
if depth <= 0 {
self.trans(xform, b);
} else {
if depth > 0 {
// Just recurse on the current path:
let xform2 = xform * self.incr;
let (n0, n1) = self.verts.append_indexed(xform2.transform(&self.base));
self.faces.append(&mut util::parallel_zigzag2(n0..n1, b.to_vec()));
self.child(xform2, depth - 1, [n0, n0 + 1, n0 + 2, n0 + 3]);
} else {
// 'Transition' stage (splits to 4 parts):
let (n, _) = self.verts.append_indexed(xform.transform(&self.base));
let (m01, _) = self.verts.append_indexed(xform.transform(&self.trans));
let (m12, m23, m30, c) = (m01 + 1, m01 + 2, m01 + 3, m01 + 4);
self.faces.extend_from_slice(&[
// two faces straddling edge from vertex 0:
b[0], n+0, m01,
b[0], m30, n+0,
// two faces straddling edge from vertex 1:
b[1], n+1, m12,
b[1], m01, n+1,
// two faces straddling edge from vertex 2:
b[2], n+2, m23,
b[2], m12, n+2,
// two faces straddling edge from vertex 3:
b[3], n+3, m30,
b[3], m23, n+3,
// four faces from edge (0,1), (1,2), (2,3), (3,0):
b[0], m01, b[1],
b[1], m12, b[2],
b[2], m23, b[3],
b[3], m30, b[0],
]);
self.child(xform * self.splits[0], self.depth,[c, m12, n+2, m23]);
self.child(xform * self.splits[1], self.depth,[c, m01, n+1, m12]);
self.child(xform * self.splits[2], self.depth,[c, m30, n+0, m01]);
self.child(xform * self.splits[3], self.depth,[c, m23, n+3, m30]);
}
}
}

View File

@ -84,10 +84,10 @@ mod tests {
}
#[test]
fn ramhorn_branch() {
let name = "ramhorn_branch";
fn tree_thing() {
let name = "tree_thing";
println!("---------------------------------------------------");
let b = examples::RamHorn::new(0.6, 12);
let b = examples::TreeThing::new(0.6, 10);
let m = b.run();
println!("Got {} verts...", m.verts.len());