diff --git a/src/bin/flat.rs b/src/bin/flat.rs index 0659f7f..1d31814 100644 --- a/src/bin/flat.rs +++ b/src/bin/flat.rs @@ -83,8 +83,8 @@ impl Space { /// ray задаётся в основной СК. fn trace_step(&self, ray: Ray) -> Ray { let a: Vec2 = -riemann::contract2(riemann::krist(&self.rect, ray.pos), ray.dir); - let v = ray.dir + a * DT; - let p = ray.pos + v * DT; + let v = ray.dir + a; + let p = ray.pos + v; Ray { pos: p, dir: v } } @@ -131,7 +131,7 @@ fn draw_ray_2(gc: &mut Vec, space: &Space, base: Vec2, dir: Vec2) { gc.new_path(); gc.move_to(base.x, base.y); let mut p = base; - let mut v = space.rect.normalize_vec_at(base, dir); + let mut v = space.rect.normalize_vec_at(base, dir) * DT; for _ in 0..10000 { Ray { pos: p, dir: v } = space.trace_step(Ray { pos: p, dir: v }); gc.line_to(p.x, p.y); @@ -157,7 +157,7 @@ fn draw_ray_2(gc: &mut Vec, space: &Space, base: Vec2, dir: Vec2) { Outer => { let cell = basic_shapes::Rect { size: vec2(space.rect.outer_radius, space.rect.external_halflength) }; let Some(dist) = cell.trace_into(Ray { pos: p, dir: v }) else { - p += v * 1000.0; + p += v * (1000.0 / DT); gc.line_to(p.x, p.y); gc.stroke(); break; @@ -378,7 +378,7 @@ trait FlatCell: std::fmt::Debug { } else { (bnd.1.y - p.y) / v.y }; - if t <= 1000.0 { + if t <= 100000.0 { Some(Ray { pos: sgn * (p + v * t), dir: sgn * v }) } else { None