GCC Code Coverage Report


Directory: ./
Coverage: low: ≥ 0% medium: ≥ 75.0% high: ≥ 90.0%
Coverage Exec / Excl / Total
Lines: 100.0% 8 / 0 / 8
Functions: 100.0% 1 / 0 / 1
Branches: 100.0% 2 / 0 / 2

src/geo2d/tan/cp/lib.hpp
Line Branch Exec Source
1 #pragma once
2
3 #include "../../ds/c/lib.hpp"
4
5 namespace tifa_libs {
6
7 // tagante points of point to circle
8 // maybe duplicate
9 template <class FP>
10 265 CEXP auto tan_CP(circle<FP> CR c, point<FP> CR p) NE {
11 265 std::optional<ptt<point<FP>>> ret;
12 265 point v = p - c.o;
13 265 const FP x = v.norm2(), d = x - c.r * c.r;
14
2/2
✓ Branch 1 taken 61 times.
✓ Branch 2 taken 204 times.
265 if (is_neg(d)) return ret;
15 204 const point q1 = c.o + v * (c.r * c.r / x), q2 = v.do_rot90() * (c.r * std::sqrt(d) / x);
16 // counter clock-wise
17 204 ret.emplace(q1 - q2, q1 + q2);
18 204 return ret;
19 }
20
21 } // namespace tifa_libs
22