Less code duplication

This commit is contained in:
numzero 2024-04-28 23:02:51 +03:00
parent b5e58e731a
commit 4c29c8de0b

View File

@ -126,17 +126,7 @@ impl<'a, M: Metric> Iterator for TraceIter<'a, M> {
} }
fn trace(space: &impl Metric, base: Vec2, dir: Vec2, distance: f32, dt: f32) -> Vec<Vec2> { fn trace(space: &impl Metric, base: Vec2, dir: Vec2, distance: f32, dt: f32) -> Vec<Vec2> {
let steps = floor(distance / dt) as usize; trace_iter(space, base, dir, dt).take((distance / dt) as usize).collect()
let mut result = Vec::with_capacity(steps);
let mut p = base;
let mut v = normalize(dir);
for _ in 0..steps {
let a: Vec2 = -convolute(krist(space, p), v);
v = v + a * dt;
p = p + v * dt;
result.push(p);
}
result
} }
fn trace_iter<M: Metric>(space: &M, base: Vec2, dir: Vec2, dt: f32) -> TraceIter<M> { fn trace_iter<M: Metric>(space: &M, base: Vec2, dir: Vec2, dt: f32) -> TraceIter<M> {