Small rename/refactor
This commit is contained in:
parent
7ba6bcd648
commit
9638115f9e
@ -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)
|
// Assume all scales are the same (for now)
|
||||||
let (s, _, _) = xform.get_scale();
|
let (s, _, _) = xform.get_scale();
|
||||||
return s < 0.005;
|
return s < 0.005;
|
||||||
@ -113,7 +113,7 @@ impl Barbs {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct RamHorn {
|
pub struct TreeThing {
|
||||||
incr: Transform,
|
incr: Transform,
|
||||||
splits: [Transform; 4],
|
splits: [Transform; 4],
|
||||||
base: Vec<Vertex>,
|
base: Vec<Vertex>,
|
||||||
@ -123,12 +123,12 @@ pub struct RamHorn {
|
|||||||
depth: usize,
|
depth: usize,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl RamHorn {
|
impl TreeThing {
|
||||||
pub fn new(f: f32, depth: usize) -> RamHorn {
|
pub fn new(f: f32, depth: usize) -> TreeThing {
|
||||||
// Incremental transform for each layer:
|
// Incremental transform for each layer:
|
||||||
let v = Unit::new_normalize(Vector3::new(-1.0, 0.0, 1.0));
|
let v = Unit::new_normalize(Vector3::new(-1.0, 0.0, 1.0));
|
||||||
let incr: Transform = Transform::new().
|
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).
|
rotate(&v, 0.4 * f).
|
||||||
scale(1.0 - (1.0 - 0.95) * f);
|
scale(1.0 - (1.0 - 0.95) * f);
|
||||||
// 'Base' vertices, used throughout:
|
// 'Base' vertices, used throughout:
|
||||||
@ -158,7 +158,7 @@ impl RamHorn {
|
|||||||
translate(0.25, 0.25, 0.0).
|
translate(0.25, 0.25, 0.0).
|
||||||
scale(0.5);
|
scale(0.5);
|
||||||
}
|
}
|
||||||
RamHorn {
|
TreeThing {
|
||||||
incr: incr,
|
incr: incr,
|
||||||
splits: splits,
|
splits: splits,
|
||||||
base: base,
|
base: base,
|
||||||
@ -171,10 +171,9 @@ impl RamHorn {
|
|||||||
|
|
||||||
pub fn run(mut self) -> Mesh {
|
pub fn run(mut self) -> Mesh {
|
||||||
// Make seed vertices, use them for 'bottom' face, and recurse:
|
// Make seed vertices, use them for 'bottom' face, and recurse:
|
||||||
let xf = id().translate(0.0, 0.0, -0.5);
|
self.verts.append(&mut self.base.clone());
|
||||||
self.verts.append(&mut xf.transform(&self.base));
|
|
||||||
self.faces.extend_from_slice(&[0, 1, 2, 0, 2, 3]);
|
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 {
|
return Mesh {
|
||||||
verts: self.verts,
|
verts: self.verts,
|
||||||
faces: self.faces,
|
faces: self.faces,
|
||||||
@ -184,12 +183,26 @@ impl RamHorn {
|
|||||||
fn limit_check(&self, xform: &Transform) -> bool {
|
fn limit_check(&self, xform: &Transform) -> bool {
|
||||||
// Assume all scales are the same (for now)
|
// Assume all scales are the same (for now)
|
||||||
let (s, _, _) = xform.get_scale();
|
let (s, _, _) = xform.get_scale();
|
||||||
return s < 0.005;
|
return s < 0.002;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 'Transition' stage (which splits from base to 4 parts):
|
fn child(&mut self, xform: Transform, depth: usize, b: [usize; 4]) {
|
||||||
fn trans(&mut self, xform: Transform, b: [usize; 4]) {
|
|
||||||
|
|
||||||
|
if self.limit_check(&xform) {
|
||||||
|
self.faces.extend_from_slice(&[b[0], b[2], b[1], b[0], b[3], b[2]]);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
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 (n, _) = self.verts.append_indexed(xform.transform(&self.base));
|
||||||
let (m01, _) = self.verts.append_indexed(xform.transform(&self.trans));
|
let (m01, _) = self.verts.append_indexed(xform.transform(&self.trans));
|
||||||
let (m12, m23, m30, c) = (m01 + 1, m01 + 2, m01 + 3, m01 + 4);
|
let (m12, m23, m30, c) = (m01 + 1, m01 + 2, m01 + 3, m01 + 4);
|
||||||
@ -218,23 +231,6 @@ impl RamHorn {
|
|||||||
self.child(xform * self.splits[2], self.depth,[c, m30, n+0, m01]);
|
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]);
|
self.child(xform * self.splits[3], self.depth,[c, m23, n+3, m30]);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn child(&mut self, xform: Transform, depth: usize, b: [usize; 4]) {
|
|
||||||
|
|
||||||
if self.limit_check(&xform) {
|
|
||||||
self.faces.extend_from_slice(&[b[0], b[2], b[1], b[0], b[3], b[2]]);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if depth <= 0 {
|
|
||||||
self.trans(xform, b);
|
|
||||||
} else {
|
|
||||||
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]);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -84,10 +84,10 @@ mod tests {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn ramhorn_branch() {
|
fn tree_thing() {
|
||||||
let name = "ramhorn_branch";
|
let name = "tree_thing";
|
||||||
println!("---------------------------------------------------");
|
println!("---------------------------------------------------");
|
||||||
let b = examples::RamHorn::new(0.6, 12);
|
let b = examples::TreeThing::new(0.6, 10);
|
||||||
let m = b.run();
|
let m = b.run();
|
||||||
|
|
||||||
println!("Got {} verts...", m.verts.len());
|
println!("Got {} verts...", m.verts.len());
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user