src/geo2d/proj/lib.hpp
| Line | Branch | Exec | Source |
|---|---|---|---|
| 1 | #pragma once | ||
| 2 | |||
| 3 | #include "../ds/l/lib.hpp" | ||
| 4 | |||
| 5 | namespace tifa_libs { | ||
| 6 | |||
| 7 | // projection to a line | ||
| 8 | template <class FP> | ||
| 9 | 83336 | CEXP point<FP> proj(line<FP> CR l, point<FP> CR p) NE { | |
| 10 | 83336 | const point dir = l.direction(); | |
| 11 | 83336 | return l.l + dir * (dir * (p - l.l) / dir.norm2()); | |
| 12 | } | ||
| 13 | // reflection about a line | ||
| 14 | template <class FP> | ||
| 15 | 55975 | CEXP point<FP> reflect(line<FP> CR l, point<FP> CR p) NE { return proj(l, p) * 2 - p; } | |
| 16 | |||
| 17 | } // namespace tifa_libs | ||
| 18 |