diff --git a/src/bin/flat.rs b/src/bin/flat.rs index 5139efb..cfada16 100644 --- a/src/bin/flat.rs +++ b/src/bin/flat.rs @@ -41,7 +41,9 @@ pub fn main() { } struct Location { + /// Положение в основной СК pos: Vec2, + /// Преобразование вектора из локальной ортонормированной в основную СК rot: Mat2, } @@ -78,6 +80,7 @@ impl Space { } /// Выполняет один шаг трассировки. Работает в любой части пространства, но вне Boundary доступны более эффективные методы. + /// 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; @@ -85,7 +88,8 @@ impl Space { Ray { pos: p, dir: v } } - /// Выполняет один шаг перемещения. Работает в любой части пространства, но вне Boundary доступны более эффективные методы. + /// Выполняет один шаг перемещения. Работает в любой части пространства. + /// off задаётся в локальной СК. Рекомендуется считать небольшими шагами. fn move_step(&self, loc: Location, off: Vec2) -> Location { let corr = Mat2::IDENTITY - riemann::contract(riemann::krist(&self.rect, loc.pos), loc.rot * off); let p = loc.pos + corr * loc.rot * off;