Add some multiple of mv to req to make it line on the line {p : dot(n, p) == d} (within rounding error); unless that isn't possible (e.g. mv and n are orthogonal, or mv or n is zerolength), in which case req remains unchanged, and a big number is returned.
Definition at line 339 of file snap.cpp. References NR::rot90(), and sp_intersector_line_intersection(). { NR::Point const req0(req); /* Implement "move from req0 by some multiple of mv" as "dot product with something orthogonal to mv remains unchanged". */ NR::Point const n2(NR::rot90(mv)); NR::Coord const d2 = dot(n2, req); if (sp_intersector_line_intersection(n2, d2, n, d, req) == intersects) { return L2(req  req0); } else { return NR_HUGE; } }
