diff --git a/src/bin/flat.rs b/src/bin/flat.rs index 404b455..14c26e7 100644 --- a/src/bin/flat.rs +++ b/src/bin/flat.rs @@ -39,7 +39,14 @@ pub fn main() { .enumerate() .map(|(k, y)| Object { id: k as i32, - loc: Location { pos: vec2(0.0, y * tube.external_halflength), rot: Mat2::IDENTITY }, + loc: { + let pos = vec2(0.0, y * tube.external_halflength); + let adj = tube.sqrt_at(pos).inverse().into(); + Location { + pos, + rot: adj, + } + }, r: 20.0, }) .collect(); @@ -68,13 +75,13 @@ pub fn main() { gc.stroke_color(Color::Rgba(0.0, 0.0, 0.0, 0.5)); draw_loop(gc, itertools_num::linspace(0.0, 2.0 * PI, 32).skip(1).map(|φ| { let dir = Vec2::from_angle(φ) * obj.r; - let dir = space.flat_to_global(pos) * dir; + let dir = obj.loc.rot * dir; pos + dir })); gc.stroke_color(Color::Rgba(0.0, 0.5, 1.0, 0.5)); draw_loop(gc, itertools_num::linspace(0.0, 2.0 * PI, 32).skip(1).map(|φ| { let dir = Vec2::from_angle(φ) * obj.r; - let dir = space.flat_to_global(pos) * dir; + let dir = obj.loc.rot * dir; space.trace_step(Ray { pos, dir }).pos })); gc.stroke_color(Color::Rgba(0.5, 0.0, 1.0, 1.0)); @@ -82,7 +89,7 @@ pub fn main() { let n = obj.r.floor(); let d = obj.r / n; let dir = Vec2::from_angle(φ); - let dir = space.flat_to_global(pos) * dir * d; + let dir = obj.loc.rot * dir * d; space.trace_iter(Ray { pos, dir }).nth(n as usize).unwrap().pos })); }