src/geo2d/ds/c/lib.hpp
| Line | Branch | Exec | Source |
|---|---|---|---|
| 1 | #pragma once | ||
| 2 | |||
| 3 | #include "../p/lib.hpp" | ||
| 4 | |||
| 5 | namespace tifa_libs { | ||
| 6 | |||
| 7 | template <class FP> | ||
| 8 | struct circle { | ||
| 9 | point<FP> o; | ||
| 10 | FP r; | ||
| 11 | |||
| 12 | CEXP circle() = default; | ||
| 13 | 69195 | CEXP circle(point<FP> CR c, FP r) NE : o(c), r(r) {} | |
| 14 | 32 | CEXP circle(FP c_x, FP c_y, FP r_) NE : o(c_x, c_y), r(r_) {} | |
| 15 | |||
| 16 | 11348 | friend auto& operator>>(istream_c auto& is, circle& c) NE { return is >> c.o >> c.r; } | |
| 17 | 10 | friend auto& operator<<(ostream_c auto& os, circle CR c) NE { return os << c.o << ' ' << c.r; } | |
| 18 |
4/4✓ Branch 1 taken 3192 times.
✓ Branch 2 taken 7510 times.
✓ Branch 3 taken 269 times.
✓ Branch 4 taken 2923 times.
|
10702 | friend CEXP bool operator==(circle CR l, circle CR r) NE { return l.o == r.o && l.r == r.r; } |
| 19 | 121628 | friend CEXP auto operator<=>(circle CR l, circle CR r) NE { | |
| 20 |
2/2✓ Branch 1 taken 107855 times.
✓ Branch 2 taken 13773 times.
|
121628 | if (auto c = l.o <=> r.o; c) return c; |
| 21 | 13773 | return comp(l.r, r.r); | |
| 22 | } | ||
| 23 | |||
| 24 | 315 | CEXP FP area(FP angle = pi_v<FP> * 2) CNE { return angle * r * r / 2; } | |
| 25 | 74 | CEXP FP crown_area(FP angle = pi_v<FP> * 2) CNE { return (angle - std::sin(angle)) * r * r / 2; } | |
| 26 | CEXP FP arc(FP angle = pi_v<FP> * 2) CNE { return angle * r; } | ||
| 27 | }; | ||
| 28 | |||
| 29 | } // namespace tifa_libs | ||
| 30 |