Less code duplication
This commit is contained in:
parent
b5e58e731a
commit
4c29c8de0b
|
|
@ -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> {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user